Kotchasan PHP Framework

[ตอนที่ 5] เวิร์คช้อป CMS อย่างง่าย เก็บข้อมูลเป็นไฟล์

ในตอนนี้เราจะมาสำรวจโค้ดของ Index\LoginController และ Index\Main\Controller ซึ่งจะถูกเรียกในลำดับถัดมา

เรามาดูโค้ดของ Index\Login\Controller กันก่อน ไฟล์นี้ไม่ได้ทำอะไรมากแค่ทำหน้าที่โหลดฟอร์ม login (login.html) มาแสดงผลเท่านั้น
namespace Index\Login;

use \Kotchasan\Http\Request;
use \Kotchasan\Login;
use \Kotchasan\Template;

class Controller extends \Kotchasan\Controller
{

  public static function init(Request $request)
  {
    // template
    $template = Template::create('', '', 'login');
    $template->add(array(
      '/{TOKEN}/' => $request->createToken(),
      '/{EMAIL}/' => Login::$text_username,
      '/{PASSWORD}/' => Login::$text_password,
      '/{MESSAGE}/' => Login::$login_message,
      '/{CLASS}/' => empty(Login::$login_message) ? 'hidden' : (empty(Login::$login_input) ? 'message' : 'error')
    ));
    // คืนค่าข้อมูลโมดูล
    return (object)array(
        'module' => 'login',
        'title' => self::$cfg->web_title,
        'detail' => $template->render()
    );
  }
}

คำสั่งที่น่าสนใจสำหรับหน้านี้คือ 
  • $request->createToken() จะทำหน้าที่ในการสร้างรหัสสำหรับส่งไปพร้อมกับฟอร์ม ซึ่งเราสามารใช้รหัสนี้ในการตรวจสอบว่าข้อมูลที่ส่งมา มาจากฟอร์มของเราหรือไม่ (ป้องกันการ brute force) รหัสนี้ เมื่อใช้แล้วจะต้องมีการเขียนโค้ดเพื่อทำลายทิ้งด้วย
  • Login::$text_username, Login::$text_password และ Login::$login_message เป็นตัวแปรที่ได้จากการการตรวจสอบการเข้าระบบ ซึ่งข้อผิดพลาดจากการเข้าระบบจะถูกเก็บไว้ในตัวแปร Login::$login_message
ตัวอย่างนี้ ทำให้เห็นว่าเราสามารถสร้างฟอร์มโดยการเขียนเป็น HTML ธรรมดาได้นั่นเอง

สำหรับโค้ดฟอร์ม ก็คือไฟล์ admin/skin/admin/login.html ซึ่งก็เป็นโค้ดฟอร์มทั่วๆไปเท่านั้น (การจัดวางโค้ดตลอดจนคลาสต่างๆ ของ input แต่ละตัวเป็นไปตามข้อกำหนดของ GCSS)

สำหรับในส่วนของ Index\Main\Controller ก็จะมีการทำงานเหมือนในโปรเจ็คก่อนหน้า คือ รับค่า module มาตรวจสอบว่ามีไฟล์ที่ต้องการหรือไม่ ถ้ามีก็ไปโหลดไฟล์นั้นๆมาแสดง ซึ่งผมจะไม่อธิบายซ้ำในส่วนนี้นะครับ