|
|
|
[PHP] ช่วยแนะนำวิธีการเช็คสิทธิในการเข้าในงานเว็บในกรณีที่มีหลายหน้าที่หน่อยครับ |
|
|
|
|
|
|
|
แบบนี้ เลยครับ พอสร้างเทเบิล มาเก็บ USER สิทธิ์ ให้เลือกสิทธิ์ว่าจะเก็บสิทธิ์อะไร
จำแนก user แต่ละสิทธิ์ (แบบสร้างเช็คบอคขึ้นมาไรงี้ให้มันส่งค่า เป็น 1 2 3.....)
เช่น 1 = admin
2 = manager
3 =.....ว่าไป
เพื่อจะเอาไปเก็บไว้ใน user_right
ที่ทำตรงนี้เพราะเราจะได้จำแนกสิทธิ์ได้(อย่าลืมทำหน้าเพิ่มลบแก้ไขด้วยนะครับ)
แล้วเอาสิทธิ์ที่กำหนด ไป อ้างอิง(จอย)กับเทเบิลกำหนดเมนู ครับ เช่น
สิทธิ์
right_id right_act right_url
1 จัดการระบบไรว่าไป index.php
1 จัดการระบบไรว่าไป management..... .php
2 ........................................................
แล้วทำเมนูเพิ่มลบแก้ไขเข้าไป ก็โอเคแล้วครับ
ถ้าอยากเช็คสิทธิ์ ไม่ให้เขาเข้ากระโดดข้ามสิทธิ์ไปได้
ก็ต้องเวลาสร้างเมนู ให้ส่งไอดี ไปด้วยแล้ว ให้ เช็คว่าสิทธิ์ นั้นๆ สามารถ เข้าไปเพจนี้ได้ไหม โอเคแล้วครับ
|
|
|
|
|
Date :
2014-09-05 15:35:15 |
By :
summawat |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็กำหนดสิมธิ์ให้เขา เลย ครับ เช่น
ตั้ง tb_xxxx แล้ว ใส่ฟิลด์ status ไป จากนั้นอาจจะกำหนด status ให้ admin=0,staff=1,user=2
จากนั้นก็สร้าง tb_status ไว้ กำหนด id_status 0,1,2 || admin=0,staff=1,user=2
แล้วก็ check action User ครับ
กำหนดให้ check id_status
if id_status == 0
else "admin.php"
นอกจากนั้นก็ให้ else หน้าที่ อยากให้ ไป เลย ครับ
ประมาณนี้ครับ
ปรับประยุกต์เอานะครับ
|
ประวัติการแก้ไข 2014-09-05 16:19:06
|
|
|
|
Date :
2014-09-05 16:18:13 |
By :
The_Colosseum |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือ ผมใช้วิธีแปลงเป็นเลขฐานสองเช็คว่าเป็นหน้าทีอะไรบ้าง แล้วก็แปลงกลับเป็นเลขฐานสิบแล้วเอาเลขที่ได้ไปใช้งานต่อ ตามตัวอย่าง เลยอย่างได้วิธีที่มันไม่ยุ่งยากเท่าที่ใช้งานอยู่ อยากได้เป็นแบบอาเรย์ รบกวนแนะนำที
ตาราง admin เก็บ ID ที่เป็น admin
ตาราง manager เก็บ ID ที่เป็น manager
Code (PHP)
$admin =0;
$manager =0;
$admin = mysql_query("SELECT * FROM admin WHERE ID = '$ID '");
$count = mysql_num_rows($admin );
if ($count > 0) {
$admin = 1;
}
$manager = mysql_query("SELECT * FROM manager WHERE ID = '$ID '");
$count = mysql_num_rows($manager );
if ($count > 0) {
$manager = 1;
}
$filter = bindec($admin.$manager);
if ($filter == 1) {
header("location:manage.php");
} else if ($filter == 2) {
header("location:admin.php");
} else if ($filter == 3) {
header("location:filter.php");
} else ($filter == 0) {
header("location:login.php");
}
|
ประวัติการแก้ไข 2014-09-05 16:52:36 2014-09-05 16:53:43 2014-09-05 17:05:44
|
|
|
|
Date :
2014-09-05 16:49:51 |
By :
funrun |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
check login ครับ
<?php // การเปิดเพื่อเขียน ภาษา PHP
session_start(); //เปิด Session
if($_SESSION['Status'] == "staff") //เงื่อนไข ถ้าStatus เป็น staff ให้ไปหน้าstaff
{
header("location:staff.php");// ลิงค์เชื่อไปยังหน้า staff
exit();
}
if($_SESSION['Status'] == "USER")//เงื่อนไข ถ้าStatus เป็น USER ให้ไปหน้า USER
{
header("location:User.php");// ลิงค์เชื่อไปยังหน้า USER
exit();
}
if($_SESSION['Status'] == "ADMIN")//เงื่อนไข ถ้าStatus เป็น ADMIN ให้ไปหน้า ADMIN
{
header("location:Admin.php");// ลิงค์เชื่อไปยังหน้า ADMIN
exit();
}
// ปิดการเขียน PHP ?>
ส่วนนี่เป็นการเช็คเมื่อเข้าหน้า ครับ ผมใช้เป็นการส่ง SESSION เอาครับ
เช็ค Status การเข้าไปหน้านั้นๆครับ
<?php
header("Content-Type:text/html; charset=utf-8");
session_start();
if($_SESSION['UserID'] == "")
{
echo "กรุณา...กลับไปหน้าล็อกอิน!";
echo "<meta http-equiv='refresh' content='2;URL=login.php' />";
exit();
}
ครับ ขอผมประมาณนี้ครับ เมื่อเปิดเข้าระบบมา
มันก็จะเด้งเข้ามาใหล็อกอินก่อน จากนั้นล็อกอิน ใช้การ check_login ครับ
ว่าStatus อยู่ในระดับไหน พอเช็คเสร็จก็เข้าหน้าที่ต้องการครับ
แต่ละหน้าของผมจะตั้ง if($_SESSION['xxxx'] == "") ไว้
ว่าระดับไหนเข้าได้หรือไม่ได้ ครับ
สมมติ ว่าอยากให้หน้านี้ เข้าได้ทั้ง User และ Staff ก็ตั้ง
if($_SESSION['UserID'] == "")
{
if($_SESSION['StaffID'] == "")
{
ประมาณนั้นอะครับ
|
|
|
|
|
Date :
2014-09-05 19:14:31 |
By :
The_Colosseum |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$filter = bindec($admin.$manager);
จากด้านบน
filter = 00 => no user
filter = 01 => เป็น manager
filter = 10 => เป็น admin
filter = 11 => เป็น admin และ manager
ตรง $filte = 00,01,10 ตรงนี้ทำได้แล้วครับ ติดตรง $filter = 11 ที่เป็น admin และ manager หลังจากที่ login แล้วให้เด้งไปหน้า filter.php เพื่อเลือกว่าจะทำหน้าที่อะไรตามรูป
DB ที่ทำไว้ประมาณนี้
|
|
|
|
|
Date :
2014-09-05 22:12:35 |
By :
funrun |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|