การกำหนดสิทธิของ User
บ่อยครั้ง ที่เราเห็นบางเว็บไซต์สามารถกำหนดสถานะของ User ได้หลายระดับ หรือ Admin ได้หลายระดับเช่น
ก็เขียนโค้ดเพิ่มเติมเอาตามความเหมาะสมนะครับ ว่า สมาชิกระดับใดสามารถทำอะไรได้บ้าง หรือจะให้สมาชิกแต่ละระดับสามารถมีเมนูอะไรได้บ้าง ก็เขียนไว้ใน if ของแต่ละระดับ
ในการนำไปใช้งานจริงเรายังสามารถใช้ session เก็บสถานะ (status) เอาไว้ก็ได้เมื่อทำการ login สำเร็จ เวลาจะตรวจก็ตรวจเอาจาก session แทน แต่ขอเตือน ห้ามเก็บสถานะของสมาชิกไว้บน cookie นะครับ ไม่ปลอดภัยเอามากๆ
- สมาชิกทั่วไป
- 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 นะครับ ไม่ปลอดภัยเอามากๆ