我有一個用PHP和MySQL設置的網站的用戶登錄系統。我的問題是我是否可以修改我現在擁有的,創建一個「權限」系統。換句話說,只顯示用戶和管理員的不同控件。在我的mysql表中,我有'id'
,'username'
,'password'
列,以及'a','b'的ENUM'permissions'。 'a'是默認的(不是管理員)。下面我會告訴你我試過的東西。PHP&MySQL用戶登錄和權限系統
這個文件是「checklogin.php
」在這個文件我檢查(爲節省空間的緣故,我將不添加所有的代碼)
//First I include variables to connect to the database & connect
//Then I define username and password as $_POST from a form on an earlier page
$user=a;
$admin=b;
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword' and permissions='$user'";
$sqladmin="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword' and permissions='$admin'";
$result=mysql_query($sql);
$resultadmin=mysql_query($sqladmin);
$count=mysql_num_rows($result);
$countadmin=mysql_num_rows($resultadmin);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
session_register("user");
header("location:login_success.php");
}
else {
if($countadmin==1){
session_register("myusername");
session_register("mypassword");
session_register("admin");
header("location:login_success.php");
}
else {
if($count==0) {
if($countadmin==0) {
echo "Wrong Username or Password";
}
}
}
}
所以表中有多少行匹配用戶輸入以及它是否是管理員,如果有,那麼我使用用戶名,密碼和權限註冊一個會話。
接下來,我有一個文件「login_success.php
」
<?php
session_start();
if(!session_is_registered(myusername)){
header("location:main_login.php");
}
else {
}
?>
<html>
<body>
Login Successful
<?php
if(session_is_registered(admin)){
echo "Welcome Admin!";
}
else {
echo "Not admin...";
}
?>
如果會話註冊上面簡單的代碼檢查,如果沒有,向您發送回登錄表單。下面是一段代碼,用於檢查用戶是否爲管理員。 這項工作的登錄部分我只是無法解決權限問題。
最後,我想我的問題是爲什麼這不起作用?這在邏輯上似乎是正確的。對不起,這篇冗長的文章。謝謝你的幫助。
感謝您的意見。根據你的意思,我對他有不同的看法,我有點困惑。如果我查詢SELECT * FROM $ tbl WHERE用戶名='$用戶名'和密碼='$ mypassword'和權限='然後如果權限='b'那麼他不會出現 –
每個用戶必須只有一個在你的表中記錄(行)。所以你做SELECT * FROM $ tbl WHERE username ='$ username'和password ='$ mypassword',這條記錄出來了。你認證他。接下來你會看到列權限中的值是什麼,並且基於你做了「if」語句來授予他行政權限。 – MAXIM
謝謝你,這有一點幫助。我可以使用mysql_fetch_field讀取列中的值嗎? –