Kotchasan PHP Framework

โปรเจ็ค admin ตัวอย่างการ Login

ตัวอย่างนี้เป็นตัวอย่างการใช้งานฟอร์มของคชสาร และการตรวจสอบการเข้าระบบ (Kotchasan\Login) โดยไม่มีการใช้ฐานข้อมูล (ตัวอย่างนี้ไม่มีการใช้งาน CSS และ Javascript)
  • admin/
    1. modules/
      1. index/
        1. controllers/
          1. index.php Index\Index\Controller คอนโทรลเลอร์หลัก
        2. views/
          1. forgot.php Index\Forgot\View ฟอร์มขอรหัสผ่าน
          2. login.php Index\Login\View ฟอร์มเข้าระบบ
    2. settings/
      1. config.php ค่ากำหนดของแอพพลิเคชั่น
      2. database.php ค่ากำหนดในการเชื่อมต่อฐานข้อมูล
    3. 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 เป็นโค้ดสำหรับสร้างฟอร์ม ซึ่งคำสั่งต่างๆที่ใช้ผมจะอธิบายในคู่มือของส่วนที่เกี่ยวข้องอีกครั้งหนึ่งครับ