โปรเจ็ค admin ตัวอย่างการ Login
- admin/
- modules/
- index/
- controllers/
- index.php Index\Index\Controller คอนโทรลเลอร์หลัก
- views/
- forgot.php Index\Forgot\View ฟอร์มขอรหัสผ่าน
- login.php Index\Login\View ฟอร์มเข้าระบบ
- settings/
- config.php ค่ากำหนดของแอพพลิเคชั่น
- database.php ค่ากำหนดในการเชื่อมต่อฐานข้อมูล
- index.php
เริ่มต้นกันที่ไฟล์ settings/config.php เราจะมีการเก็บข้อมูลผู้ใช้งานไว้ในไฟล์นี้
<?php
/* settings/config.php */
return array(
'password_key' => '9876543210',
'username' => 'admin',
'password' => 'admin'
);
username และ password คือชื่อผู้ใช้งานที่สามารถเข้าระบบได้
password_key เป็นคีย์ ใช้สำหรับการเข้ารหัสและถอดรหัสของคลาส Password ซึ่งในโปรเจ็คนี้จะมีการเข้ารหัสข้อมูล Cookie ก่อนการบันทึกป้องกันการแอบอ่าน Cookie
ส่วน Index\Index\Controller หรือคอนโทรเลอร์หลักของคชสาร จะทำหน้าที่ในการตรวจสอบการ Login และตัดสินใจว่าจะแสดงผลอะไรบนเว็บไซต์
<?php
/*
* @filesource index/controllers/index.php
* @link http://www.kotchasan.com/
* @copyright 2016 Goragod.com
* @license http://www.kotchasan.com/license/
*/
namespace Index\Index;
use \Kotchasan\Http\Request;
use \Kotchasan\Login;
/**
* default Controller
*
* @author Goragod Wiriya <admin@goragod.com>
*
* @since 1.0
*/
class Controller extends \Kotchasan\Controller
{
/**
* แสดงผล
*
* @param Request $request
*/
public function index(Request $request)
{
// session cookie
$request->inintSession();
// ตรวจสอบการ login
Login::create();
if (Login::isMember()) {
echo '<a href="?action=logout">Logout</a><br>';
var_dump($_SESSION);
} else {
// forgot or login
if ($request->get('action')->toString() == 'forgot') {
$main = new \Index\Forgot\View;
} else {
$main = new \Index\Login\View;
}
echo $main->render();
}
}
}
เริ่มต้นการใช้งาน Session และ Cookie
$request->inintSession();
คำสั่งตรวจสอบการ Login ซึ่งในคลาส Login จะทำการตรวจสอบการเข้าระบบกับข้อมูล username และ password ในไฟล์ config
Login::create();
หากมีการเข้าระบบเรียบร้อยจะแสดงลิงค์สำหรับออกจากระบบ และข้อมูลการเข้าระบบจาก SESSION
if (Login::isMember()) {
// เข้าระบบเรียบร้อยแล้ว
echo '<a href="?action=logout">Logout</a><br>';
var_dump($_SESSION);
} else {
แต่หากยังไม่มีการเข้าระบบ จะมีการตรวจสอบค่าที่ส่งมากับ URL ว่ามี action=forgot หรือไม่ ถ้ามีจะแสดงฟอร์มขอรหัสผ่านใหม่ (forgot) แต่ถ้าไม่มีจะแสดงฟอร์มสำหรับการเข้าระบบ (login)
} else {
// รับค่าจาก $_GET[action]
if ($request->get('action')->toString() == 'forgot') {
// ฟอร์มลืมรหัสผ่าน
$main = new \Index\Forgot\View;
} else {
// ฟอร์มเข้าระบบ
$main = new \Index\Login\View;
}
// แสดงผลฟอร์ม
echo $main->render();
}
ส่วน Index\Forgot\View และ Index\Login\View เป็นโค้ดสำหรับสร้างฟอร์ม ซึ่งคำสั่งต่างๆที่ใช้ผมจะอธิบายในคู่มือของส่วนที่เกี่ยวข้องอีกครั้งหนึ่งครับ