ทำระบบล็อกอินแบบโครตง่ายบน Laravel

วันนี้อัพบล็อกสักหน่อย กลัวร้าง  /XD วันนี้ผมจะพูดถึงระบบล็อกอิน ซึ่งเป็นระบบที่ต้องเขียนกันมันทุกงานอยู่แล้ว ที่จะเขียนวันนี้เป็นระบบโครตง่ายแต่สบายสุดๆ ก่อนอื่นผมไม่เอ่ยพื้นอะไรมากมาย เริ่มกันเลย

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 ให้สั้นกว่านี้ได้อีก แต่แบบข้างบนนี้จะคุมการใช้งานได้ดีกว่าหน่อยครับ

Leave a Reply