Devdit
 

โค้ด PHP Login กําหนดสิทธิ์ แบ่งสถานะ

2.8K

โค้ด PHP Login กําหนดสิทธิ์ แบ่งสถานะ บทความนี้สอนเขียนโค้ดสร้างฟอร์มสำหรับ Login โดยมีการกำหนดสิทธิ์ หรือแบ่งสถานะ ตามสิทธิ์ของผู้ใช้งานที่ Login เข้ามา โดยใช้ PHP ร่วมกับฐานข้อมูล MySQL สามารถเขียนโปรแกรมได้ดังนี้

 

ตัวอย่าง โค้ด PHP Login กําหนดสิทธิ์ แบ่งสถานะ

1. สร้างฐานข้อมูลชื่อ example และสร้างตารางชื่อ user พร้อมข้อมูลในตาราง

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` char(50) NOT NULL,
  `password` char(50) NOT NULL,
  `role` char(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4
+----+----------+----------+-------+
| id | username | password | role  |
+----+----------+----------+-------+
|  1 | root     | 01234    | admin |
|  2 | devdit   | 98765    | mod   |
+----+----------+----------+-------+

 

2. เขียนโค้ด PHP Login กําหนดสิทธิ์ แบ่งสถานะ

<?php
    session_start();

    $error = "";
    isset( $_POST['username'] ) ? $username = $_POST['username'] : $username = "";
    isset( $_POST['password'] ) ? $password = $_POST['password'] : $password = "";

    if( !empty( $username ) && !empty( $password ) ) {
        $conn = mysqli_connect( "localhost", "root", "", "example" );
        mysqli_query( $conn, "SET NAMES UTF8" );
        $sql = " 
                SELECT id, username, role 
                FROM user 
                WHERE 
                ( username = '{$username}' ) AND  
                ( password = '{$password}' ) 
               ";
        $q = mysqli_query( $conn, $sql );
        $f = mysqli_fetch_assoc( $q );
        if( isset( $f['id'] ) ) {
            $_SESSION['id'] = $f['id'];
            $_SESSION['username'] = $f['username'];
            $_SESSION['role'] = $f['role'];
        } else {
            $error = "ไม่สามารถ Login ได้กรุณาลองใหม่";
        }
        mysqli_close( $conn );
    }
?>
<?php if( empty( $_SESSION['id'] ) ) { ?>
<form action="index.php" method="POST">
    <fieldset> 
        <legend>กรุณาเข้าสู่ระบบ</legend>
        <input type="text" name="username" placeholder="ชื่อผู้เข้าใช้งาน">
        <input type="password" name="password" placeholder="รหัสผ่าน">
        <input type="submit" value="เข้าสู่ระบบ">
        <?=$error;?>
    </fieldset>
</form>
<?php } else { ?>
<fieldset> 
    <legend>ยินดีต้อนรับเข้าสู่ระบบ</legend>
    <div>คุณ <b><?=$_SESSION['username'];?></b> / สิทธิ์ <b><?=$_SESSION['role'];?></b></div>
</fieldset>    
<?php } ?>

คำอธิบาย

โค้ด PHP Login กําหนดสิทธิ์ แบ่งสถานะ จากตัวอย่างข้อมูลในฐานข้อมูลมี root สิทธิ์เป็น admin และ devdit สิทธิ์เป็น mod เมื่อ Login แล้วจะแสดงสิทธิ์ หรือสถานะตามชื่อที่ Login มีรายละเอียดดังนี้

1. ตอน Login สำเร็จจะมีการสร้างตัวแปร $_SESSION['role'] มีค่าเท่ากับ $f['role'] เพื่อเก็บสิทธิ์ หรือสถานะของผู้ Login

2. ที่หน้าเว็บไซต์จะแสดงสิทธิ์ผ่านตัวแปร $_SESSION['role'] เช่น ถ้า Login ด้วย root แสดง admin และ devdit แสดง mod

3. กรณีต้องการนำตัวแปร $_SESSION['role'] ไปใช้กําหนดสิทธิ์ แบ่งสถานะ สามารถเขียนได้ดังนี้

<?php
	if( $_SESSION['role'] == "admin" ) {
		/* เมนูที่ให้เห็นเฉพาะสิทธิ์ admin */
	} else if( $_SESSION['role'] == "mod" ) {
		/* เมนูที่ให้เห็นเฉพาะสิทธิ์ mod */
	} 
?>
แก้ไข 1 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ