|
|
|
ขอความคิดเห็นในเรื่องออกแบบ database หน่อยครับ และอยากทราบแนวคิดครับ |
|
|
|
|
|
|
|
Quote:create table permission(
id int unsigned not null auto_increment primary key,
user_id int unsigned not null , //อันนี้แล้วแต่จะใช้น่ะครับ อาจกำหนดเป็น char ,varchar ก็ได้
page_id tinyint unsigned not null, // ไอดีของหน้านั้นๆ
page_url varchar(200) null default null, // หรือจะเพิ่ม url ของหน้านั้นๆไปด้วยก็ได้ ถ้ามี url แล้ว page_id อาจไม่จำเป็นครับ
readable enum('yes','no') not null default 'no',
writable enum('yes','no') not null default 'no',
editable enum('yes','no') not null default 'no',
printable enum('yes','no') not null default 'no',
applydate timestamp not null default current_timestamp,
index(user_id),
index(page_id)
)engine=myisam default character set utf8 collate utf8_unicode_ci;
ลองดูครับตรงตามความต้องการ
|
ประวัติการแก้ไข 2014-07-31 18:07:05
|
|
|
|
Date :
2014-07-31 17:38:42 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
น่าจะประมาณนี้น่ะครับ
<form method='post'>
<table>
<tr>
<td>Accessible</td>
<td>Read</td>
<td>Write</td>
<td>Edit</td>
<td>Print</td>
</tr>
<?php
$sql = "select * from accessiblity";
$res = mysqli_query($link,$sql) or die(mysqli_error());
while($data = mysqli_fetch_assoc($res)){
?>
<tr>
<td><?php echo $data["title"];?></td>
<td><input type='checkbox' name='read[<?php echo $data["page_id"];?>]' value='yes' /></td>
<td><input type='checkbox' name='write[<?php echo $data["page_id"];?>]' value='yes' /></td>
<td><input type='checkbox' name='edit[<?php echo $data["page_id"];?>]' value='yes' /></td>
<td><input type='checkbox' name='print[<?php echo $data["page_id"];?>]' value='yes' /></td>
</tr>
<?php } ?>
</table>
<input type='hidden' name='user_id' value='<?php echo $_GET["UserID"]; ?>' />
<input type='submit' name='submitForm' value='Save Change' />
</form>
|
|
|
|
|
Date :
2014-07-31 22:55:49 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่ผม ออกแบบไว้แบบนี้ ครับ พอมี user ใหม่ ก็ มากำหนด ได้ว่าจะให้เข้าส่วนใหน ได้บ้าง เหมือนกับ user นี้ที่กำหนด permission ไว้ครับ
|
|
|
|
|
Date :
2014-08-01 01:29:28 |
By :
yamcrocodile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แบบนี้ผมว่า สร้างเป็น Group User แล้วพอคนเข้ามาใหม่ ก็เลือกเอาเป็น Group จะดีกว่านะครับ
เผื่อมีหลายกลุ่มผู้ใช้งาน
ถ้าทำแบบนี้แล้ว จะรองรับได้หลากหลายกว่า
ส่วนการเชคว่า จะทำอะไรได้บ้าง .. มันต้องไป คู่กับการทำเมนู ว่า อันใหน ติ๊กไว้ ก็ให้แสดงเฉพาะอันนั้นครับ
ตอนเข้าใช้งานผ่าน URL ก็มาเชคใน DB ว่า ผู้ใช้คนนั้น ๆ มีสิทธิ์ตามที่เรา checked ไว้หรือเปล่า
คร่าว ๆ แนว ๆ นี้ครับ
|
|
|
|
|
Date :
2014-08-01 12:17:28 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แต่ผมคิดว่าแบ่งเป็นกลุ่มมันไม่อิสระน่ะครับ ต้องมีผู้ใช้แบบคาบเกี่ยวระหว่างกลุ่มแน่ๆ
|
|
|
|
|
Date :
2014-08-01 18:34:59 |
By :
cowboycnx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนมองภาพ นึกภาพ ตาม มันก็มองออกอยู่นะครับ แต่พอลงมือประฏิบัติจริงมันไม่ง่ายเลย มันงง มากๆ พอคิดมากๆ คิดหนัก จนงงไปหมดแล้ว จะเรียบเรียง ยังมึนเลยครับ
|
|
|
|
|
Date :
2014-08-01 19:39:28 |
By :
yamcrocodile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ของผมจะใช้วิธีที่ต่างออกไป ทำให้การกำหนด permission ทำได้ละเอียดมากขึ้นและต่างกันได้อย่างอิสระในแต่ละโมดูล
ลองโหลดไปเล่นดูนะครับ
https://github.com/OkveeNet/fuel-start
open source และ free ครับ
การเก็บแบบของผมคือ เก็บ กลุ่มผู้ใช้ ชื่อหน้า ชื่อการทำงาน
level_group_id permission_page permission_action
ถ้าติ๊กอันไหนก็ใส่เข้าฐานข้อมูลอันนั้น เช่น
1 dashboard read_dashboard
แต่จะต่างจากที่คุณได้ทำมาแล้วมากมาย ก็เก็บไว้งานต่อไปก็ได้ครับ
|
|
|
|
|
Date :
2014-08-02 02:39:39 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
บอกตรงๆครับ ตั้งแต่เกิดมายังไม่เคย แตะ Framework เลยซักตัว เขียนสดตลอดเลยครับ เขียนไปวางยาตัวเองไป ยิ่งเขียนยิ่ง งง 555+
|
ประวัติการแก้ไข 2014-08-02 04:12:42
|
|
|
|
Date :
2014-08-02 03:33:06 |
By :
yamcrocodile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอเทเบิ้ลของหัวข้อ(หน้าเพจ)ที่ต้องการกำหนดสิทธิ์มาลงด้วยครับ อาจจะตามตัวอย่างที่ให้ไว้ accessibility
|
|
|
|
|
Date :
2014-08-02 12:17:31 |
By :
sakuraei |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมติด ตรงปัญหา ตอน INSERT ไม่รู้ว่า จะ INSERT array ยังไง ดีครับ
database ครับ
หน้า ฟร์อม
หลังจาก กด submit ครับ array ที่ได้
หลังจากที่ submit ค่ามาแล้ว ไม่รู้จะเอา array ไป Insert ยังไง ดีครับ
|
|
|
|
|
Date :
2014-08-02 21:10:46 |
By :
yamcrocodile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code ส่งค่าไป save ครับ
|
|
|
|
|
Date :
2014-08-02 21:27:36 |
By :
yamcrocodile |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
table user_trustee
u_id int
u_trustee longtext
group_trustee.g_trustee และ user_trustee.u_trustee
ไว้เก็บ trustee ในรุปแบบ json_encode
ซึ่งสามารถ เก็บในรูป array หรือ object ได้
ตัวอย่างการนำไปใช้
ีuser_trustee.u_trustee: { page1: ["read", "write"], page2:["edit, print"] }
ซึ่งหมายความ page1 สามารถ read และ write ได้
ส่วน page2 สามารถ edit และ print ได้
ใช้ insert เพื่อตรวจสอบแล้ว ไม่เคยมีการกำหนด trustee;
ใช้ update เมื่อเคยกำหนด trustee ไว้แล้ว
Code (PHP)
<?PHP
// page1.php
$user_trustee=$mysqli->query('select u_trustee from user_trustee where u_id='.$user_id);
if($user_trustee->num_rows()){
$ro=$user_trustee->fetch_assoc();
$trustee=json_decode($ro['u_trustee']);
if(in_array('read', $trustee->page1)){
// this area can READ.
}else { header('locate: run_other.php'); }
}
?>
|
|
|
|
|
Date :
2014-08-03 18:01:09 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|