การกำหนดสิทธิของ User

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

ก็เขียนโค้ดเพิ่มเติมเอาตามความเหมาะสมนะครับ ว่า สมาชิกระดับใดสามารถทำอะไรได้บ้าง หรือจะให้สมาชิกแต่ละระดับสามารถมีเมนูอะไรได้บ้าง ก็เขียนไว้ใน if ของแต่ละระดับ

ในการนำไปใช้งานจริงเรายังสามารถใช้ session เก็บสถานะ (status) เอาไว้ก็ได้เมื่อทำการ login สำเร็จ เวลาจะตรวจก็ตรวจเอาจาก session แทน แต่ขอเตือน ห้ามเก็บสถานะของสมาชิกไว้บน cookie นะครับ ไม่ปลอดภัยเอามากๆ

ผู้เขียน Goragod

โพสต์เมื่อ 02 เม.ย. 2551 เวลา 14:53 น.

ความคิดเห็น 0

เปิดดู 11,164

ป้ายกำกับ PHP

Related

^