|
|
|
ช่วยดู code login ให้หน่อยครับพี่ๆ คือจะอยากจะกำหนดสิทธิ์เป็นแบบ level ครับ |
|
|
|
|
|
|
|
คือผมอยากจะกำหนดสิทธิ์การใช้งานแบบแยกแต่ละแผนกครับแต่ไมรู้จะเริ่มยังไงครับ
ที่คิดไว้จะกำหนดไว้ 5 level ครับ
page_admin.php
page_office1.php
page_office2.php
page_office3.php
page_Boss.php
Code
CREATE TABLE `member` (
`m_id` int(3) NOT NULL auto_increment,
`m_username` varchar(50) NOT NULL,
`m_password` varchar(50) NOT NULL,
`m_name` varchar(50) NOT NULL,
`m_level` int(11) NOT NULL,
`datesave` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`m_id`),
UNIQUE KEY `Username` (`m_username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
--
-- dump ตาราง `member`
--
INSERT INTO `member` VALUES (5, 'ADMIN', '1234', 'ADMIN ', 1, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (2, 'user1', '1234', 'employee1', 2, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (3, 'user2', '1234', 'employee2', 3, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (4, 'user3', '1234', 'employee3', 4, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (4, 'Boss', '1234', 'Boss', 5, '2017-06-19 09:44:08');
หน้า checkmember.php
Code
<?PHP
if($_POST){
require '../config/mysql.php';
require '../config/connect.php';
$mysql=new MySQL_Connection("$host","$user","$pw","$dbname");
$mysql->charset = 'utf8';
$user = $mysql->queryResult(
"
SELECT * FROM `member`
WHERE `m_username` = %s[username] and `m_password` = %s[password]
",
array(
'username' => $_POST['username'], // แทนที่ %s[username]
'password' =>$_POST['password'], // แทนที่ %s[password]
)
);
$level=$member->numRows;
$rs = $member->fetch();
if($m_level==1){
$_SESSION['m_id'] =$rs['m_id'];
$_SESSION['m_username'] =$rs['m_username'];
$_SESSION['login'] = "true";
echo("<script>");
echo("window.location='page_admin.php?menu=add';");
echo("</script>");
}else{
?>
<div class="alert alert-danger">
<a class="close" data-dismiss="alert" aria-hidden="true">×</a>
<strong>คำเตือน!</strong>ชื่อ และ รหัสผ่าน ของคุณไม่ถูกต้อง.
</div>
<?php
}
$mysql->close();
?>
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2017-06-19 11:06:32 |
By :
Lun2560 |
View :
1598 |
Reply :
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ข้อแนะนำเบื้องต้น
ฐานข้อมูลที่ต้องมี
- employee สมาชิก
id , name
- permission สิทธิการใช้งาน CRUD
id , name , timestamp
- role หน้าเพจ
id , name , timestamp
- employee_permission
employee_id,permission_id,timestamp
- employee_role
employee_id,role_id,timestamp
โดยรูปแบบการ Relationship (Many To Many)
ปล.แต่ละ employee จะมีความยืดหยุ่นในการ Customize มากขึ้น
แต่ถ้าในลักษณะเบื้องต้นแล้ว : เบื้องต้นเมื่อ login ผ่านให้เก็บ session level ของแต่ละตัวได้เลยครับ และเมื่อเข้าเพจแต่ละหน้าให้ทำการเช็ค session level อีกทีว่าแต่ละ level ความสำคัญ สามารถใช้หน้านี้ได้หรือไม่
|
ประวัติการแก้ไข 2017-06-19 11:56:08 2017-06-19 11:59:30
|
|
|
|
Date :
2017-06-19 11:54:55 |
By :
dudesaranyu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
จะต้องเขียนโค้ดหน้าเช็คยังไงหรือครับผมพึ่งเริ่มหัดเขียนครับจะทำโปรเจคส่งอาจารย์
|
|
|
|
|
Date :
2017-06-19 13:12:08 |
By :
Lun2560 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
checkmember.php
Code (PHP)
$_SESSION['m_id'] =$rs['m_id'];
$_SESSION['m_username'] =$rs['m_username'];
$_SESSION['m_level']=$rs['m_level'];
$_SESSION['login'] = "true";
On Page
Code (PHP)
<?php
session_start();
if($_SESSION['m_level'] != '1') // conditions
{
header('Location: ' . $_SERVER['HTTP_REFERER']); // or URI
}else{
// description
}
?>
|
|
|
|
|
Date :
2017-06-19 13:24:11 |
By :
dudesaranyu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอโทษครับพี่พอจะมีตัวอย่างไหมครับจ้องแก้ตรงบรรทัดที่พี่บอกใช่ไหมครับ ตอนนี้เหมือนผมงมเข็มในทะเลสาบเลยครับ
|
|
|
|
|
Date :
2017-06-19 17:56:29 |
By :
Lun2560 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ไม่ได้ครับพี่ error ตั้งแต่หน้าล็อคอินครับหรือผมพิมผิดพื้นฐานยิ่งไม่มีด้วย
|
|
|
|
|
Date :
2017-06-20 00:14:08 |
By :
Lun2560 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Data base
head]Code[/head]
CREATE TABLE `member` (
`m_id` int(3) NOT NULL auto_increment,
`m_username` varchar(50) NOT NULL,
`m_password` varchar(50) NOT NULL,
`m_name` varchar(50) NOT NULL,
`m_level` int(11) NOT NULL,
`datesave` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
PRIMARY KEY (`m_id`),
UNIQUE KEY `Username` (`m_username`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
--
-- dump ตาราง `member`
--
INSERT INTO `member` VALUES (5, 'ADMIN', '1234', 'ADMIN ', 1, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (2, 'user1', '1234', 'employee1', 2, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (3, 'user2', '1234', 'employee2', 3, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (4, 'user3', '1234', 'employee3', 4, '2017-06-19 09:44:08');
INSERT INTO `member` VALUES (4, 'Boss', '1234', 'Boss', 5, '2017-06-19 09:44:08');
ตอนนี้ผมกลับมาใช้โค้เดิมครับพี่
checkmember.php
Code
<?PHP
if($_POST){
require '../config/mysql.php';
require '../config/connect.php';
$mysql=new MySQL_Connection("$host","$user","$pw","$dbname");
$mysql->charset = 'utf8';
$user = $mysql->queryResult(
"
SELECT * FROM `member`
WHERE `m_username` = %s[username] and `m_password` = %s[password]
",
array(
'username' => $_POST['username'], // แทนที่ %s[username]
'password' =>$_POST['password'], // แทนที่ %s[password]
)
);
$m_level=$member->numRows;
$rs = $member->fetch();
if($m_level==1){
$_SESSION['m_id'] =$rs['m_id'];
$_SESSION['m_username'] =$rs['m_username'];
$_SESSION['login'] = "true";
echo("<script>");
echo("window.location='page_admin.php?menu=add';");
echo("</script>");
}else{
?>
<div class="alert alert-danger">
<a class="close" data-dismiss="alert" aria-hidden="true">×</a>
<strong>คำเตือน!</strong>ชื่อ และ รหัสผ่าน ของคุณไม่ถูกต้อง.
</div>
<?php
}
$mysql->close();
?>
|
|
|
|
|
Date :
2017-06-20 23:39:08 |
By :
Lun2560 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ที่ error เพราะ $member ควรเป็น $user หรือเปล่า
น่าจะเรียกใช้ตัวแปรผิด
|
|
|
|
|
Date :
2017-06-21 07:26:56 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เปลี่ยนค่าตัวแปร ตามคอมเม้นของคุณ Chaidchanan ครับ
- หน้า checkmember.php บรรทัดที่ 09 เปลี่ยนจาก $member เป็น $user
- ประยุกต์ใช้ session check lavel ตาม No.3
ตามนั้นครับ
|
|
|
|
|
Date :
2017-06-21 08:20:22 |
By :
dudesaranyu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมว่า จขกท ต้องเรียนรู้เรื่องการทำงานของ โปรแกรมฝั่ง server และโปรแกรมฝั่ง client ให้เข้าใจก่อนนะครับ
และจากตรงนี้สีแดง
<form role="form" action="?menu=home#checkmember" method="post" name="login">
<div class="form-group input-group">
ไม่ควรอ้างอิงไฟล์เดิม เพราะขยะจะเยอะเกินไป เพิ่งหัดเขียนใหม่ๆ อาจหลงทำให้ตัวแปรฟังก์ขั่นมันตีกัน
แยกมันออกจากกันจะตรวจสอบข้อผิดผลาดได้ง่ายกว่า
เอาแค่นี้พอดีกว่าไหม
<form role="form" action="checkmember.php" method="post" name="login">
<div class="form-group input-group">
พยายามเขียนโปรแกรมแบบแยกเฉพาะงานให้ชำนาญก่อน อย่าเพิ่งรวมทุกอย่างไว้ในขั้นตอนเดียว
แก้อันนี้ทำให้ผิดอีกอันแก้จนไม่รู้ว่ามันผิดตรงไหนแน่ 5555
|
|
|
|
|
Date :
2017-06-23 09:56:00 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if($_POST){
ลองเปลี่ยนเป็น
if(isset($_POST['chkLogin'])){
โดยเพิ่ม <input type=hidden name=chkLogin value=1 > ไว้ใน form ด้วย
|
|
|
|
|
Date :
2017-06-26 16:57:33 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|