บทความนี้เราจะเรียนรู้เกี่ยวกับการ Authentication โดยจะเรียนรู้การ Register แล้วก็เอา username / passsword สำหรับ Login เข้าสู่ระบบครับเป็นอย่างไรไปดูกันเลย
สร้างหน้า Form สำหรับ Register ก่อน
จากที่เราเรียนรู้การสร้าง View ไปแล้วก็ให้สร้างหน้าสำหรับ Register โดยมี input email และก็ pasword นะครับ และเพิ่มโค้ดสำหรับเรียกหน้า Form สำหรับ Register ครับแก้ไขที่ไฟล์ route.php ตามนี้เลย
Route::get('register', function() { return View::make('register'); ));
ใครไม่รู้สร้างอย่างไรกลับไปดูที่
เมื่อสร้างเสร็จแล้วให้ไปแก้ไขไฟล์ route.php เพิ่มโค้ดตามด้านล่าง
Route::post('register', '[email protected]');
เป็นการบอกว่าเมื่อเราทำการส่งค่าจาก Form จะเข้าสู่ Route นี้ครับจะส่งค่าไปยังไฟล์ LoginController ที่มี method ( function ) ชื่อว่า register ครับต่อไปให้เราไปสร้างไฟล์ใหม่ชื่อว่า LoginController.php ใน folder controller ครับและใส่โค้ดตามด้านล่างครับ
Class LoginController extends BaseController { public function register() { print_r(Input::all()); } }
จากโค้ดด้านบนเราทำการ print_r ค่าที่มีการกรอก Input เข้ามา หลายคนอาจจะงงว่ามันมาไงไอ้เจ้า Input::all() มันคือ class ที่ทาง Laravel เตรียมไว้สำหรับจัดการเรื่องพวกค่า กรอกๆทั้งหลายจาก Form ครับ ใครงงอยากให้อธิบายเพิ่มเติมถามได้ใน comment เลยจ้า
สร็จ save ลองเข้า Browser ไปหน้า form กรอกข้อมูลแล้วกดปุ่มส่ง เสร็จดูว่าระบบทำงานถูกต้องหรือไม่ หากทำงานถูกค่าก็จะถูกส่งออกมาให้ดูว่ามีอะไรบ้าง
เสร็จเราต้องการจะทำการ save ลงฐานข้อมูลโดยแก้ไข code ดังนี้
Class LoginController extends BaseController { public function register() { $user = new User; $user->email = Input::get('email'); $user->password = Hash::make(Input::get('password')); $user->address = Input::get('address'); return $user->save(); } }
ตัว User เป็น model สำหรับจัดการเรื่องการดึงข้อมูล User ครับแล้วเราก็ปรับเปลี่ยนค่าต่างๆเพื่อทำการ save ครับส่วนตรง Hash ก็คล้ายๆกับตัว Class Input ครับทาง Laravel เตรียมให้เราสำหรับจัดการเรื่องการเข้ารหัสแบบต่างๆ
การ Login
เขียน ไฟล์ route เขียนเพิ่มเติมจากอันเดิม
Route::get('login', function(){ return View::make('login'); });
คราวนี้เราเพิ่ม route ใหม่สำหรับการเรียกหน้า Login form ครับ เมื่อทำหน้าสำหรับกรอกแล้วเราก็ต้องสร้าง route สำหรับการรับค่าเหมือนเดิมคล้ายๆกับตอนเราทำหน้า register ครับ
Route::post('login', '[email protected]');
เราจะส่งค่าที่ user กรอกไปให้ function สำหรับการเช็คค่าว่าถูกต้องไหมอย่างไร กลับไปที่ ไฟล์ LoginController.php
สร้างมาอีก function ในไฟล์ LoginController.php ตามนี้ครับ
public function login() { $credential = Input::only('email','password'); if(Auth::attemp($credential)) { echo 'login success'; } else { echo 'Invalid credential'; } }
ตรง Input::only คือการบอกว่าเราจะเอาค่าแค่ 2 field นี้เท่านั้นในหน้าตอนกรอก อาจจะมีหลาย Input แต่เราไม่สนใจเราต้องการแค่สองอันนี้ครับส่วน Auth::attemp ก็เหมือนเดิมทาง Laravel มี class สำหรับจัดการเรื่องการเช็คข้อมูลว่ามีอยู่ในระบบหรือยัง อะไรพวกนี้ให้เราแล้ว ถ้าหากงงว่าแล้วไอ้ attemp มันมายังไง อันนี้เราต้องไปอ่านดูในเอกสารในเว็บหรือเราเรียกว่า API Document ครับ
ถ้าเรากรอกสำหรับไม่มีอะไรพลาดเราก็จะเห็นข้อความว่า login success ครับ
การ Logout
สร้าง route สำหรับ logout
Route::get('logout', '[email protected]');
แล้วก็ไปเพิ่ม function จากไฟล์เดิม LoginController.php ครับ
public function logout() { Auth::logout(); return Redirect::to('login'); }
การดึงข้อมูล User ที่ Login
Route::get('getuser', function() { print_r(Auth::user()->id); });
สรุป
ในบทนี้เราได้รู้แล้วว่าวิธีทำ Login นั้นไม่ได้ยากอย่างที่คิด หากมีข้อสงสัยอะไรก็สามารถสอบถามใน comment ได้เลยครับ
Credit
พอดีผมได้ไปศึกษาจากคลิปนี้ https://www.youtube.com/user/laraveltut สามารถเข้าไปติดตามหรือเรียนจากคลิปได้ครับ หรือสามารถติดตามที่เว็บหลักของเขาครับทางนี้เลย http://laraveltut.com/
แล้วมาเขียนอธิบายเพิ่มเติมครับจึงอยากแชร์ต่อไว้โดยผมจะพยายามเขียนอธิบายคนที่ไม่เคยใช้หรือไม่เข้าใจมาก่อน หากมีคำถามใดๆสามารถเขียน comment ถามไว้ได้เลยครับถ้าผมว่าจะตอบทันที
ถ้าคุณชอบบทความในเว็บนี้ และอยากสนับสนุนเรา เพียงแค่คุณสมัครรับข่าวสารด้านล่างจะได้รับสิทธิ์พิเศษก่อนใคร เราสัญญาว่าจะส่งบทความที่เป็นประโยชน์ต่อคุณอย่างแน่นอนครับ