• June 2, 2017

    login.html

    <form id="login" method="post" action="login.php">
        <label for="username">User:</label>
        <input type="text" id="username" name="username" />
        <label for="password">Pass:</label>
        <input type="password" id="password" name="password" />
     
        <input type="submit" id="login" name="login" value="Log in" />
    </form>

    login.php

    <?php
    
    $error = false;
     
    // get log in information via post
    $u_name = $_POST['username'];
    $u_pass = $_POST['password'];
     
    // check empty input
    if (empty($u_name) || empty($u_pass)) {
     $error = true;
    }
     
    if (!$error) {
        // everything fine, check user info in database
    }
    else {
        // empty username or password, tell the user
        echo 'Invalid username or password.';
    }

    ตอนนี้เราสามารถ log in เข้ามาได้แล้ว แต่ผู้ใช้ต้อง log in ใหม่ทุกครั้งเวลาเปลี่ยนหน้า อันนี้ต้องใช้ session เข้ามาช่วยในการจดจำผู้ใช้
    เริ่มต้นด้วยการเพิ่ม session_start() ไว้ในส่วนบนสุดของ .php

    <?php
    //FILE: login.php
     
    session_start();
     
    $error = false;
     
    .
    .
    .
    

    เพิ่มโค้ดให้เก็บค่าลง session เข้าไปก่อนที่จะ redirect ไปยังหน้าอื่น

    // FILE: login.php
    .
    .
    .
     
    // row count must == 1
    if ($result !== false && $result->rowCount() == 1) {
     // fetch data
     $data = $result->fetch();
     
     // saved to session
     SESSION['username'] = $data['username'];
     SESSION['email'] = $data['email'];
     
     // redirect to other page (member.php)
     // warning: there must no another output before this, otherwise it might failed
     header('Location: member.php');
    }
    else {
     echo 'Invalid username or password.';
    }
     
    .
    .
    .

    และเพื่อไม่ให้มีการ log in ซ้ำซ้อน ซึ่งอาจจะนำปัญหามาให้ ก็ให้ตรวจสอบก่อนว่ามีการ log in อยู่แล้วหรือไม่เสียก่อน ในตอนเริ่มแรก

    <?php
    //FILE: login.php
     
    session_start();
     
    // if already logged in redirect
    if (isset($_SESSION['username'])) {
     header('Location: member.php');
    }
     
    $error = false;
     
    .
    .
    .
    

    ส่วนในหน้าอื่น ๆ ที่จำเป็นต้อง log in ก่อน เพื่อแสดงข้อมูลออกมาก็ให้ตรวจสอบค่า $_SESSION[‘username’] ดูว่ามีการ log in หรือไม่ ถ้ามีก็ดึงข้อมูลมาตามปกติ แต่ถ้าไม่มีจะบังคับให้ log in เสียก่อน หรือแสดงข้อมูลที่แตกต่างกันออกไป แล้วแต่จะออกแบบ

    <?php
    // FILE: member.php
     
    // always start with this
    session_start();
     
    // check log in status
    if (isset($_SESSION['username'])) {
     // do anything you want
     echo 'Hello ' . $_SESSION['username'] . ' (' . $_SESSION['email'] . ')';
     echo '
    ';
     echo '<a href="logout.php">Log out</a>';
    }
    else {
     echo 'Please log in!.';
    }

    การ logout นั้นทำได้ง่าย ๆ ด้วยคำสั่ง session_destroy() ทุกอย่างก็หายไป

    <?php
    // FILE: logout.php
     
    session_start();
    session_destroy();
     
    echo 'Logged out';
    

    การ Logout ก็คือการ clear session

    <?php
    session_start();
    unset($_SESSSION['id']); // clear session
    unset($_SESSION['pwd']);
    session_destroy(); // ทำลาย session
    ?>

    หากทำลายเฉพาะบางตัว

    session_start();
    session_unregister("xxxx");

    หากทำลายทั้งหมด

    session_start();
    session_destroy();

    session_destroy() จะลบตัวแปรเซซชั่นหมด
    unset จะลบเฉพาะที่เราต้องการลบ

    session_id(); คือ หมายเลขประจำเครื่อง Client ซึ่งแต่ละเครื่องหรือ Browser จะมีค่าไม่เหมือนกัน 
    
    session_start(); เป็นคำสั่งสำหรับการเริ่มใช้งาน session
    
    $_SESSION["var"] = value; คือการประกาศค่าตัวแปร session
    
    $SESSION["var"]["1"] = value; // Session แบบ Array
    $SESSION["var"]["2"] = value; // Session แบบ Array
    
    session_write_close(); จบการ Create Session
    
    unset($_SESSION["var"]); ยกเลิก/ลบค่า Delete Session ที่ต้องการ
    
    session_destroy(); ยกเลิกลบค่า Delete Session ทั้งหมด


เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories