โค้ด 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 */
}
?>