วันนี้อัพบล็อกสักหน่อย กลัวร้าง
วันนี้ผมจะพูดถึงระบบล็อกอิน ซึ่งเป็นระบบที่ต้องเขียนกันมันทุกงานอยู่แล้ว ที่จะเขียนวันนี้เป็นระบบโครตง่ายแต่สบายสุดๆ ก่อนอื่นผมไม่เอ่ยพื้นอะไรมากมาย เริ่มกันเลย
1. สิ่งที่คุณต้องมีคือฐานข้อมูลตาราง users กับโมเดลตามมาตรฐาน Eloquent เลย คือ มีฟิลด์ id, username หรือ email (จะมีทั้งคู่ก็ได้) และ password เรื่องการสร้างโมเดลหาอ่านได้ที่เว็บ Laravel เลยครับ ตั้งค่าการติดต่อฐานข้อมูลให้เสร็จด้วยนะครับ
2.กำหนด route.php ตามนี้เลย
Route::any('/user/login', 'user@login');
3. สร้าง controller ชื่อ user.php แล้วก็ตามนี้เลย
<?php
class User_Controller extends Base_Controller {
public $restful = true;
public function __construct() {
parent::__construct();
}
public function get_login()
{
return View::make('user.login')->with('error', Session::get('error'));
}
public function post_login()
{
$userinfo = array(
'username' => strtolower(Input::get('email')),
'password' => Input::get('password'),
'remember' => Input::get('remember')
);
if ( Auth::attempt($userinfo) )
{
return Redirect::home();
}
else
{
return Redirect::to('user/login')
->with('error', 'อีเมล์หรือรหัสผ่านไม่ถูกต้อง')
->with_input();
}
}
}
4. สร้าง view user/login.blade.php
<div class="span8 offset2 well">
<h2>เข้าสู่ระบบ</h2>
<hr />
{{ Form::open(URL::current()) }}
@if (!empty($error))
<div class="alert alert-error">{{ $error }} </div>
@endif
<div class="control-group">
{{ Form::label( 'email', 'อีเมล์', array( 'class' => 'control-label')) }}
<div class="controls">
<div class="input-prepend"><span class="add-on"><i class="icon-envelope"></i></span>
{{ Form::text( 'email', Input::old( 'email')) }}
</div>
</div>
</div>
<div class="control-group">
{{ Form::label( 'password', 'รหัสผ่าน', array( 'class' => 'control-label')) }}
<div class="controls">
<div class="input-prepend"><span class="add-on"><i class="icon-lock"></i></span>
{{ Form::password( 'password') }}
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
{{ Form::checkbox( 'remember', '', Input::old('remember')) }} จดจำการล็อกอิน
</label>
</div>
</div>
<div class="controls">
{{ Form::submit( 'เข้าสู่ระบบ', array( 'class' => 'btn btn-success' ) ) }}
</div>
{{ Form::close() }}
</div>
ถ้าผมพิมพ์ไม่ผิด ตามนี้จะได้ระบบล็อกอินเสร็จสรรพ มีระบบจดจำล็อกอินด้วย ที่เหลือก็ไปดูๆ กันเองนะครับ ว่าอะไรเป็นอะไร 555+
ปล. ถ้าหน้าตาออกมาแปลกๆ ให้ลง bundle bootstrapper นะครับ เพราะผมใช้ตัวนี้อยู่ครับ
ปล2. จริงๆ สามารถเขียน controller ให้สั้นกว่านี้ได้อีก แต่แบบข้างบนนี้จะคุมการใช้งานได้ดีกว่าหน่อยครับ
