การกำหนดสิทธิของ User
- สมาชิกทั่วไป
- Admin ระดับสูงสุดที่สามารถทำได้ทุกอย่าง
- ผู้ช่วยแอดมิน
- เพิ่มฟิลด์ status เป็นชนิด tinyint(2) เข้าไปอีกสักฟิลด์เพื่อเก็บสถานะ 1 ถึง 3 ดังเช่นข้างบน โดยกำหนด default ให้เป็น 1 คือเมื่อสมัครให้คนนั้นมีสถานะเป็นสมาชิกทั่วไปไว้ก่อน (ฟิลด์นี้ไม่ได้เก็บข้อมูลอะไรมากนัก 2 หลักคือสูงสุด 99 ก็เหลือเฟือ)
- ในกรณีนี้เราไม่จำเป็นต้องแยกฐานข้อมูลสมาชิกออกจากฐานข้อมูลของ Admin เนื่องจากเราสามารถระบุได้โดย status อยู่แล้ว (ผมเห็นชอบเขียนตารางสมาชิกทั่วไปกับตาราง Admin แยกกัน ซึ่งไม่จำเป็นเลยครับ เวลาจะตรวจสอบทีต้อง query กัน 2 ตาราง งงไปเปล่าๆ)
- การกำหนดให้ใครสามารถอยู่ในสถานะใดได้ ควรเป็น Admin ระดับสูงสุดเท่านั้น (ไม่งั้นคนอื่นแอบเลื่อยขาเก้าอี้ไม่รู้ด้วย) โดยอาจกำหนดโดยทำหน้ากำหนดสมาชิกทั่วไป(ออกแบบเพิ่มเติมจากเดิม) หรือ อาจกำหนดบนฐานข้อมูลโดยตรงก็ได้
- เมื่อมีการใช้งานสมาชิก ก็ให้ตรวจสอบเอาว่าสมาชิกที่ login มีสถานะเป็นอะไร และสามารถทำอะไรได้บ้าง หรือสามารถมีเมนูอะไรได้บ้าง
<?php
// อ่านข้อมูลสมาชิกออกมาจากฐานข้อมูล
$memer_result = mysql_fetch_array();
// เขียนโค้ดเพื่อทำการตรวจสอบว่าเป็นสมาชิกจริงก่อน ก่อนจะผ่านไปบรรทัดต่อไป
// ถ้าตรวจสอบผ่าน เป็นสมาชิก เวลาใช้งานให้ตรวจสอบสถานะของสมาชิก
if ($memer_result['status'] == 2) {
// แอดมินระดับสูงสุด ทำอะไรได้บ้างก็กำหนดเอา หรือสามารถมีเมนูอะไรได้ก็เขียนโค้ดเอา
} elseif ($memer_result['status'] == 3) {
// ผู้ช่วยแอดมิน ทำอะไรได้ก็กำหนดเอาเหมือนเดิม
} else {
// อื่นๆ ให้เป็นสมาชิกทั่วไป ทำอะไรได้บ้าง หรือสามารถมีเมนูอะไรได้ก็เขียนโค้ดเอา
};
ก็เขียนโค้ดเพิ่มเติมเอาตามความเหมาะสมนะครับ ว่า สมาชิกระดับใดสามารถทำอะไรได้บ้าง หรือจะให้สมาชิกแต่ละระดับสามารถมีเมนูอะไรได้บ้าง ก็เขียนไว้ใน if ของแต่ละระดับ
ในการนำไปใช้งานจริงเรายังสามารถใช้ session เก็บสถานะ (status) เอาไว้ก็ได้เมื่อทำการ login สำเร็จ เวลาจะตรวจก็ตรวจเอาจาก session แทน แต่ขอเตือน ห้ามเก็บสถานะของสมาชิกไว้บน cookie นะครับ ไม่ปลอดภัยเอามากๆ