วันนี้อัพบล็อกสักหน่อย กลัวร้าง วันนี้ผมจะพูดถึงระบบล็อกอิน ซึ่งเป็นระบบที่ต้องเขียนกันมันทุกงานอยู่แล้ว ที่จะเขียนวันนี้เป็นระบบโครตง่ายแต่สบายสุดๆ ก่อนอื่นผมไม่เอ่ยพื้นอะไรมากมาย เริ่มกันเลย
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 ให้สั้นกว่านี้ได้อีก แต่แบบข้างบนนี้จะคุมการใช้งานได้ดีกว่าหน่อยครับ