|
|
|
สอบถามเรื่องการกำหนดสิทธิ์ ในการใช้งานข้อมูลหน่อยค่ะ |
|
|
|
|
|
|
|
คือต้องการให้บริษัทแต่ละบริษัท เห็น list เฉพาะข้อมูล ที่บริษัทตนเองดูแลอยู่เท่านั้นค่ะ ยกตัวอย่างเช่น
มีบริษัท อยู่ 3 บริษัท ที่ดูแลฐานข้อมูลต่างกันจากรูป จะแบ่งได้จาก รหัสบริษัท Com_ID ค่ะ
เมื่อบริษัท ล็อกอินเข้าระบบ ในส่วน list เลือก ฐานข้อมูล Reference Database ให้เห็นได้เฉพาะข้อมูลของที่ตนเองดูแลอยู่เท่านั้นค่ะ
เช่น บริษัทที่ 1 ดูแลฐานข้อมูลอยู่ทั้งหมด 5 ฐาน เมื่อล็อกอินเข้ามา ก็จะเห็นเฉพาะ ฐานข้อมูลที่ดูแลอยู่ 5 ฐาน เท่านั้นค่ะ
ต้องกำหนด session ในรูปแบบประมาณไหนค่ะ ที่เขียนไปประมาณนี้ค่ะ แต่ไม่แสดงข้อมูล
ไฟล์ check_login
Code (PHP)
<?php
session_start(); //เปิด seesion เพื่อทำงาน
include("connect.php");
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'; //กำหนดภาษาของเอกสารให้เป็น UTF-8
$username = $_POST[username]; //ประกาศซตัวแปรชื่อ username โดยการรับค่ามาจากกล่อง username ที่หน้า Login
$password = $_POST[password]; //ประกาศซตัวแปรชื่อ password โดยการรับค่ามาจากกล่อง password ที่หน้า Login
if($username == "") {
echo $msg ="กรุณาใส่ชื่อผู้ใช้";
echo "<meta http-equiv='refresh' content='0;URL=index.php?f=$msg'>";
} else if($password == "") {
echo $msg ="กรุณาใส่รหัสผ่าน";
echo "<meta http-equiv='refresh' content='1;URL=index.php?f=$msg'>";
} else {
$check_log = mysql_query("select * from user where Login_user ='$username' and Pw_user ='$password' ");
@$num = mysql_num_rows($check_log);
if($num <=0) {
echo $msg ="ชื่อผู้ใช้/รหัสผ่าน ไม่ถูกต้อง กรุณาตรวจสอบใหม่อีกครั้ง<a href='index.php'>Back</a>";
echo "<meta http-equiv='refresh' content='1;URL=index.php?f=$msg'>";
} else {
while ($data = mysql_fetch_array($check_log) ) {
if($data[status_user]==admin){
echo "ยินดีต้อนรับผู้ดูแลระบบ<br />";
$_SESSION[ses_userid] = session_id();
$_SESSION[ses_username] = $username;
$_SESSION[ses_status] = "admin";
echo "<meta http-equiv='refresh' content='1;Admin_search.php'>";
//ส่งค่าจากหน้านี้ไปหน้า Admin_search.php
echo "กรุณารอสักครู่ กำลังเข้าสู่ระบบ..............................";
}elseif($data[status_user]==company){
$_SESSION[ses_userid] = session_id();
$_SESSION[ses_username] = $username;
$_SESSION[ses_status] = "company";
$_SESSION[Com_ID] = $data[Com_ID];
echo "<meta http-equiv='refresh' content='1;URL=company_viewData.php'>";
//ส่งค่าจากหน้านี้ไปหน้า company_viewData.php
echo "<br /> กรุณารอสักครู่ กำลังเข้าสู่ระบบ..............................";
}elseif($data[status_user]==university){
$_SESSION[ses_userid] = session_id();
$_SESSION[ses_username] = $username;
$_SESSION[ses_status] = "university";
$_SESSION[Univer_ID] = $data[Univer_ID];
echo "<meta http-equiv='refresh' content='1;URL=university_view.php'>";
//ส่งค่าจากหน้านี้ไปหน้า university_view.php
echo "<br /> กรุณารอสักครู่ กำลังเข้าสู่ระบบ..............................";
}
}
}
}
?>
ไฟล์ฟอร์มสำหรับเลือกค่าและเพิ่มค่า
Code (PHP)
<form action="Company_add_save.php" method="post" name="form1" target="_blank" id="form1" enctype="multipart/form-data">
<?
$link = mysql_connect("localhost", "root", "password");
mysql_select_db("reference_database", $link);
$result = mysql_query("SELECT * FROM university", $link);
$num_rows = mysql_num_rows($result);
//echo "$num_rows Rows\n";
$Line=$num_rows;
?>
<form id="formRegister" name="formRegister" method="post" action="Company_add_save.php" enctype="multipart/form-data">
<p>บริษัท ||
<select name="Com_ID" id="Com_ID">
<option value="">เลือกบริษัท</option>
<?php
$sql="select * from company ";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Com_ID']?>"><?= $objResult['Com_name']?></option>
<?php } ?>
</select></p>
<br/>
<p>ฐานข้อมูล Reference Database ||
<select name="Rf_ID" id="Rf_ID">
<option value="">เลือกฐานข้อมูล Reference Database ที่ต้องการ</option>
<?php
$sql="select * from reference_data ";
$a=mysql_query($sql);
while($objResult=mysql_fetch_array($a)){
?>
<option value="<?=$objResult['Rf_ID']?>"><?=$objResult['Rf_name']?></option>
<?php } ?>
</select></p>
<br/>
แนบไฟล์เอกสาร ||
<input name="file_name" type="file" id="file_name" enctype="multipart/form-data" />
<br/><br/><br/>
<?
$strSQL = "SELECT * FROM university";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
<script language="JavaScript">
function IsNumeric(sText,obj)
{
var ValidChars = "0123456789,.";
var IsNumber=true;
var Char;
for (i = 0; i < sText.length && IsNumber == true; i++)
{
Char = sText.charAt(i);
if (ValidChars.indexOf(Char) == -1)
{
IsNumber = false;
}
}
if(IsNumber==false){
alert("กรอกข้อมูลเฉพาะตัวเลข เช่น 1,000");
obj.value=sText.substr(0,sText.length-1);
}
}
</script>
<table align="center" border="3" bgcolor="#EDEDED" width="50" class="table table-bordered table-hover" id="example2">
<tr>
<td rowspan="3" bgcolor="#f79e45" style="text-align: center">ชื่อมหาวิทยาลัย</td>
<tr>
<td colspan="5" bgcolor="#f79e45" style="text-align: center">เดือน :
<label for="Month"></label>
<select name="Month" id="Month">
<option value="">เลือกเดือนที่ต้องการ</option>
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
<option value="April">April</option>
<option value="May">May</option>
<option value="June">June</option>
<option value="July">July</option>
<option value="August">August</option>
<option value="September">September</option>
<option value="October">October</option>
<option value="November">November</option>
<option value="December">December</option>
</select>
ปี :
<label for="Years"></label>
<select name="Years" id="Years">
<option value="">เลือกเดือนที่ต้องการ</option>
<option value="2015">2015</option>
<option value="2016">2016</option>
<option value="2017">2017</option>
<option value="2018">2018</option>
<option value="2019">2019</option>
<option value="2020">2020</option>
</select>
</tr>
<tr>
<td bgcolor="#f79e45" style="text-align: center">Searches</td>
<td bgcolor="#f79e45" style="text-align: center"><p>Full_Text</p>
<p>Requests</p></td>
<td bgcolor="#f79e45" style="text-align: center"><p>Sub</p>
<p>sessions</p></td>
<td bgcolor="#f79e45" style="text-align: center">Queries</td>
<td bgcolor="#f79e45" style="text-align: center"><p>Citation</p>
<p>Events</p></td>
</tr>
<?php
while($objResult = mysql_fetch_array($objQuery))
{
if ($bg=="#ffffff"){
$bg="#fcdebf";}
else {
$bg="#ffffff";}
?>
<tr>
<tr bgcolor="<?=$bg?>">
<td><input type="text" name="Univer_name" readonly="1" value="<?=$objResult['Univer_name']?>" size="60"><input name="Univer_ID[]" type="hidden" value="<?=$objResult['Univer_ID']?>" /></td>
<td><input type="text" name="Searches[]" id="Searches" size="10" onKeyUp="IsNumeric(this.value,this)" ></td>
<td><input type="text" name="Full_Text_Requests[]" id="Full_Text_Requests" onKeyUp="IsNumeric(this.value,this)" size="10"></td>
<td><input type="text" name="Sub_sessions[]" id="Sub_sessions" onKeyUp="IsNumeric(this.value,this)" size="10"></td>
<td><input type="text" name="Queries[]" id="Queries" onKeyUp="IsNumeric(this.value,this)" size="10"></td>
<td><input type="text" name="Citation_Events[]" id="Citation_Events" onKeyUp="IsNumeric(this.value,this)" size="10"></td>
</tr>
<?php
}
?>
</table>
<? echo $msg ;?>
<br/>
<div align="center"><input type="submit" name="submit" value="บันทึก">
</div>
</form>
Tag : PHP, HTML/CSS, JavaScript, CakePHP
|
|
|
|
|
|
Date :
2017-03-13 16:54:03 |
By :
viewsmith |
View :
1055 |
Reply :
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
ดึง เอา id ฐานข้อมูล หลังจาก ล๊อกอินสำเร็จ
select group_concat(Rf_id) as id from tb where Com_ID = $_SESSION[Com_ID]
จะได้ค่ามาเป็น 1,2,3,4 .... แล้วเอามาเก็บใส่ session
เวลา query ฐานข้อมูลที่เข้าถึงได้ก็แค่เอา ตัวแปร session มาใส่
select * from tb where Com_ID in($_SESSION['....'])
เอาไปปรับเป็น code เองนะคับ
|
|
|
|
|
Date :
2017-03-13 17:33:13 |
By :
Luz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : Luz เมื่อวันที่ 2017-03-13 17:33:13
รายละเอียดของการตอบ ::
จาก ตัวอย่างที่คุณ Luz แนะนำนั้น เข้าใจตามนี้ถูกมั้ยคะ พอดีมือใหม่เพิ่งหัดเขียนโค้ด เลยยังไม่ค่อยเข้าใจค่ะ รบกวนช่วยด้วยนะคะ
ดึง เอา id ฐานข้อมูล หลังจาก ล๊อกอินสำเร็จ
select group_concat(Rf_id) as id from tb where Com_ID = $_SESSION[Com_ID]
(group_concat ให้เปลี่ยนเป็นชื่อตาราง reference_data ที่เก็บ ฐานข้อมูลทั้ง Rf_ID , Rf_name และ รหัสบริษัท Com_ID ใช่มั้ยค่ะ)
จะได้ค่ามาเป็น 1,2,3,4 .... แล้วเอามาเก็บใส่ session
(1,2,3,4 นี่หมายถึง รหัสของฐานข้อมูลใช่มั้ยคะ)
(ในส่วนด้านล่างนี้คือ ให้เรียกข้อมูลจากตาราง reference_data มาแสดงอีกรอบนึงมั้ยคะ แล้วตรง in($_SESSION['....']) นั้นคือ ในวงเล็บปล่อยว่าแบบนี้หรอคะ หมายถึงว่าให้เอา ค่า 1,2,3,4 ที่ได้จากการ query ครั้งแรกใช่มั้ยคะ )
เวลา query ฐานข้อมูลที่เข้าถึงได้ก็แค่เอา ตัวแปร session มาใส่
select * from tb where Com_ID in($_SESSION['....'])
เอาไปปรับเป็น code เองนะคับ
แล้วโค้ดทั้งหมดที่ว่ามานี้ ใส่ไว้ในหน้า ฟอร์มเรียกข้อมูลมาแสดงใช้มั้ยคะ ไม่ได้เกี่ยวกับหน้า check_login ใช่มั้ยคะ
|
|
|
|
|
Date :
2017-03-14 09:46:48 |
By :
viewsmith |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนช่วยหน่อยนะค่ะ ยังไม่ค่อยเข้าใจเลย ขอบคุณค่ะ
|
|
|
|
|
Date :
2017-03-14 14:21:50 |
By :
viewsmith |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
login
Code (PHP)
$sql = "select group_concat(Rf_id) as id from reference_data where Com_ID = $_SESSION['Com_ID']";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
เอาค่าที่คิวรี่ได้ มาเก็บใส่ session
$_SESSION['Rf_id'] = $row['id'];
หน้าโชว์
Code (PHP)
//ประมาณนี้ฮะ
select * from reference_data where Rf_id in($_SESSION['Rf_id'])
|
|
|
|
|
Date :
2017-03-14 15:44:49 |
By :
Luz |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ระหว่างล็อกอิน ให้เราเก็บ session ที่ชื่อ $_SESSION["Com_ID"] ไว้
แล้วการทำงานของมันคือ ถ้าบริษัทไหนล็อกอินเข้ามา
ให้เราใช้เงื่อนไข $_SESSION["Com_ID"] ตัวนี้ ไปทำการ WHERE ข้อมูลที่เราแยกสิทธิ์ของแต่ละบริษัทไว้ไงครับ
บริษัทที่ล็อกอินเข้ามา ก็จะเห็นข้อมูลเฉพาะที่มีสิทธ์ของแต่ละบริษัทเอง
|
|
|
|
|
Date :
2017-03-14 15:46:03 |
By :
คนมีเสน่ห์ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|