ขอทราบหลักการทำสถานะของสมาชิก จะกำหนดสถานะ user ให้ ใช้งานและไม่ใช้งาน ไม่ทราบว่าเขียนยังไงครับ ขอโค้ทหรือหลักการทำด้วยนะครับ
กำหนดชื่อกลุ่มให้กับผู้ใช้จากนั้นกำหนดสิทธิให้กับกลุ่มผู้ใช้แต่ละกลุ่มครับ
อย่างเช่น แต่ละแถวของตารางมีโครงสร้าง (id,username,password,group_name)
โดยหลังจาก login แล้วให้กำหนดค่า $_SESSION['user'] = array('id'=>1,'username'=>'mang','group_name'=>'group1'); //ข้อมูลจากตาราง
ในหน้าที่ต้องการให้เฉพาะ group_name 'group1' และ 'group2' ใช้เท่านั้นก็
เขียนว่า
if ( ! in_array($_SESSION['user']['group_name'],array('group1','group2')) ){
die('คุณไม่มีสิทธิใช้งานหน้านี้');
}
แต่ถ้าต้องการความสะดวกในการแก้ไขสิทธิต่างๆ ก็อาจจะสร้างตารางขึ้นมาใหม่ครับ
auth (id,group_name,file_name) ตัวอย่างข้อมูลได้แก่
1,group1,edit1.php
1,group1,edit2.php
1,group2,delete1.php
ในแต่ละไฟล์ก็จะเรียกใช้คำสั่งค้นหาในตารางว่า
$r = mysql_query('SELECT * FROM auth WHERE group_name="'.$_SESSION['user']['group_name'].'" AND file_name="'.basename($_SERVER['SCRIPT_FILENAME']).'"');
if (mysql_num_rows($r)==0){
die('คุณไม่มีสิทธิใช้งานหน้านี้');
}
Date :
2009-05-23 02:31:40
By :
num
Code (PHP)
<?php
//แบบนี้เปิดหน้าทีก็ค้นทีซิใช่ไหมครับ ทำไมไม่เก็บไว้ใน session ตอนล็อกอินเลยว่า login นี้มีสิทธิ์ใช้อะไรบ้าง เช่น
$_SESSION[privileges]["product"]["view"]
$_SESSION[privileges]["product"]["add"]
$_SESSION[privileges]["product"]["edit"]
$_SESSION[privileges]["product"]["delete"]
$_SESSION[privileges]["news"]["view"]
$_SESSION[privileges]["news"]["add"]
$_SESSION[privileges]["news"]["edit"]
//ส่วนมากผมใช้ประมาณนี้อะครับ หรือจะไม่ย่อยขนาดนั้นก็ใช้แค่
$_SESSION[privileges]["product"]
$_SESSION[privileges]["news"]
?>
Date :
2009-05-23 03:31:46
By :
plakrim
โอ้ทำแบบคุณ PlaKriM เร็วกว่าชัวร์ครับ
แต่ก็มีปัญหานิดหน่อยนะครับถ้าเราปรับสิทธิของ user ไปแล้ว อย่างเช่นไม่ให้ delete product แล้ว
แต่ session เค้ายังค้างอยู่ เค้าก็ยังลบได้ครับ ดังนั้นปรับสิทธิเสร็จแล้วต้องหาทาง update ค่าใน session ด้วยครับ
( ปล. หาเรื่องตอบแก้เก้อเพราะของคุณ PlaKriM ทำงานดีกว่า อิๆ )
Date :
2009-05-23 10:53:11
By :
num
จะกำหนดสถานะการใช้งาน คือ 0 ไม่สามารถใช้งานได้ 1 สามารถใช้งานได้ เก็บไว้ใน ฟิว staus ต่อไปต้องทำอย่างไรบ้างครับ ขอแนวทางหรือตัวอย่างในการทำหน่อยครับ เวลาจะเปลี่ยนสถานะ คลิกที่ลูกอะครับ เพิ่อจะเปลี่ยน ช่วยแนะนำหน่อยครับ ทำแบบนี้อะครับ ช่วยแนะหน่อย
Date :
2009-05-23 19:43:21
By :
mangbit
อ๋อเข้าใจแล้วครับ ผมเข้าใจผิดไป
ในหน้าจัดการสร้างลิงค์
สำหรับ user id=101
<a href="user_status.php?id=101&status=1">ใช้งานได้</a>
<a href="user_status.php?id=101&status=0">ใช้งานไม่ได้</a>
user id=102 ก็เหมือนๆ กันครับเช่น
<a href="user_status.php?id=102&status=1">ใช้งานได้</a>
<a href="user_status.php?id=102&status=0">ใช้งานไม่ได้</a>
แล้วในหน้า user_status.php
ก็ใช้ query
mysql_query("UPDATE users SET status='{$_GET['101']}' WHERE id='{$_GET['101']}'");
ครับ
Date :
2009-05-23 19:55:34
By :
num
แก้ไขโค้ดข้างบนครับ
mysql_query("UPDATE users SET status='{$_GET['status']}' WHERE id='{$_GET['id']}'");
Date :
2009-05-23 19:56:49
By :
num
อาจจะมีคนคิดการกำหนดสิทธิ์ได้ดีกว่านี้ เอามา potato กันหน่อยนะครับ
Date :
2009-05-24 02:55:06
By :
plakrim
ส่วนมากผมใช้ database ช่วยครับ อิอิ
เพราะไม่เคยแบ่งถึงขนาด add edit delete อะไรพวกนี้
จะใช้ก็แค่ เข้าดูบอร์ดนี้ไม่ได้ คือถ้าเข้าได้ ก็สร้าง/แก้ไข/ลบ ได้เลย ประมาณนี้
Date :
2009-05-24 11:52:21
By :
PoseidonX
ดีเลยครับกำลังทำระบบสมาชิก แต่ผมก็ งง อยู่ดีแฮ่ะๆไม่ได้ศึกษาภาษานี้อ่ครับ
แค่รู้ไว้ก็พอและ
Date :
2009-05-24 17:08:21
By :
stepby
Code (PHP)
<?php
if(isset($_REQUEST['status'])) {
$sql = "select * from ef_users where IDUS = '".$_REQUEST['IDUS']."'";
$result = mysql_query($sql);
$group = mysql_fetch_object($result);
switch($_REQUEST['status']) {
case 'active' :
$sql = "UPDATE ef_users SET STATUS = 0 WHERE IDUS= '".$_REQUEST['IDUS']."'";
echo $sql;
mysql_query($sql);
$message = "<span class=\"info\">ไม่สามารถใช้งานได้</span>";
break;
case 'inactive' :
$sql = "UPDATE ef_users SET STATUS = 0 WHERE IDUS= '".$_REQUEST['IDUS']."'";
//echo $sql;
mysql_query($sql);
$message = "<span class=\"info\">สามารถใช้งานได้</span>";
break;
}
}
?>
ผมเขียนข้างบนไม่รู้ถูกป่าวครับช่วยดูหน่อย แล้วข่างล่างจะเป็น การแสดงให้เลือก
Code (PHP)
<? if($group->status) { ?>
<a href="admin.php?option=admin_showstaff2.php&IDUS=<?php echo $row_show_staff['IDUS']; ?>&status=active">
<? } else { ?>
<img src="images/unlocked.png" alt="ไม่สามารถใช้งานได้" /></a><a href="admin.php?option=admin_showstaff2.php&IDUS=<?php echo $row_show_staff['IDUS']; ?>&status=inactive"><img src="images/lock.png" alt="สามารถใช้งานได้" /></a>
<? } ?>
ช่วยดูให้หน่อยครับ แก้ไขตรงไหน มันไม่อัพเดทในฐานข้อมูลครับ
Date :
2009-05-26 14:58:56
By :
mangbit
ช่วยดูให้หน่อยครับ No.10 อะครับ
Date :
2009-05-26 18:44:23
By :
mangbit
คุณๆเขียนโค้ดกันระดับสูงมากๆเลย ของผมยังใช้ if...else เหมือนเดิม เหอๆๆ
Date :
2009-05-26 20:07:54
By :
apilakza
ผมดูตัวอย่างของคนอื่นอะครับ แล้วเอามาลองดูอะครับ ผมเขียนเองไม่ถูก
Date :
2009-05-26 21:58:01
By :
mangbit
Date :
2009-05-27 00:02:29
By :
mangbit
ผมก็กำลังทำเช่นกานครับ ยัง งูๆปลาๆ อยู่เยย 555+
Date :
2009-05-27 10:33:17
By :
เนม
สงสัยว่าที่ rep 10
บรรทัดที่ 9 กะบรรทัดที่ 15 ทำไม SQL เหมือนกันเดะเลยอ่ะคับ ทั้งๆที่ อยู่คนละ status
Date :
2009-05-27 11:01:03
By :
nut_t02
ขอบพระคุณอย่างสูงส่ง คะ
Date :
2010-10-06 15:39:00
By :
ขนมปังคุง
ความเห็น 2 พี่ปลากริม แล้ว ถ้าใช้แบบพี่ ใน ตารางฐานข้อมูล เก็บข้อมูลยังไงอะคะ เหมือน ความเห็น 1 รึเปล่าคะ
Date :
2010-10-07 08:48:26
By :
ขนมปังคุง
up ka
Date :
2010-10-08 17:21:26
By :
ขนมปังคุง
พี่ ปะกิม แถลงข่าวด่วน
Date :
2010-10-09 15:12:12
By :
unzeen
ตรง view add delete edit ค่าพวกนี้ต้องเก็บใน database ป่าวคะ
Date :
2010-10-09 16:41:31
By :
unzeen
$_SESSION[privileges]["product"]["view"] = true;
$_SESSION[privileges]["product"]["add"]= true;
$_SESSION[privileges]["product"]["edit"]= true;
$_SESSION[privileges]["product"]["delete"]= true;
เวลาเช็คก็ตรงตัวครับ
If($_SESSION[privileges]["product"]["add"]){
แสดงฟอร์ม add
}
ไม่ได้ซับซ้อนอะไรครับ ตรงตัวๆ
แต่อยู่ที่การออกแบบฐานข้อมูลแล้วก็ ui ในการให้สิทธิ์สำหรับ user
Date :
2010-10-10 03:16:47
By :
PlaKriM
ขอบคุณพี่ PlaKriM พี่ช่วยตอบข้อข้องใจครับ
Date :
2010-10-11 22:13:24
By :
iieszz
Load balance : Server 01