2011-12-22 289 views
1

我有一個MySQL表稱爲具有以下字段的用戶:PHP if/else語句

的用戶名 - 密碼 - 角色

的角色包括普通用戶和管理員的

我想是這樣。當它的管理日誌被重定向到另一個頁面,而不是在同一個頁面一個普通用戶將登錄我的代碼如下:

<?php 
include("../includes/db.php"); 

$username=$_POST['username']; 
$password=$_POST['password']; 

$username = stripslashes($username); 
$password = stripslashes($password); 
$username = mysql_real_escape_string($username); 
$password = mysql_real_escape_string($password); 

$sql="SELECT * FROM Users WHERE username='$username' and password='$password' And role = 'normaluser'"; 
$result=mysql_query($sql); 

$count=mysql_num_rows($result); 

if($count==1){ 
session_register("username"); 
session_register("password"); 
header("location:myaccount.php"); 
} 

?> 

我的代碼爲無勞動mal用戶,但我只是不知道如何編寫管理部分的代碼。感謝您的任何建議。

+1

您可以在數據庫中添加額外的列。說「管理員」和旁邊的那些用戶是管理員,使他們的值爲1.所以你可以檢查是否管理員= 1,然後頭(...) – hellomello 2011-12-22 16:05:25

+0

我想知道你的'session_register'調用的目的是什麼是,因爲你實際上沒有註冊任何值。 – 2011-12-22 16:05:31

+0

@andrewliu我相信這是OP描述的角色列的目的。 – 2011-12-22 16:05:56

回答

2

我想說

$sql="SELECT role FROM Users WHERE username='$username' and password='$password'"; 
$result=mysql_query($sql); 
while ($row = mysql_fetch_object($result)) { 
    //one hit i hope?! 
    //DONT save your apssword in the session!!!! 
    //session_register("username"); 
    //session_register("password"); 

    $role = $row->role; 

} 
if($role == "user"){ 
    redirect1 
}elseif($role == "admin"){ 
    redirect2; 
}else{ 
    redirect panic 
} 
+0

+1不存儲密碼。爲了進一步擴展,請不要保存純文本密碼。 – MetalFrog 2011-12-22 16:14:06

+1

是的,你絕對是正確的課程,但要保持答案足夠接近我跳過的問題。但正如@metalfrog所說:查看存儲非簡單密碼:) – Nanne 2011-12-22 18:41:29

2

從查詢中檢索role,查看它是什麼,然後相應地設置標題位置。

1
$sql = "SELECT * FROM Users WHERE username='$username' and password='$password'"; 
// ... 
if($count == 1){ 
    $user = mysql_fetch_array($result); 
    if ($user['role'] === 'normaluser') 
    { 
     session_register("username"); 
     session_register("password"); 
     header("location:myaccount.php"); 
    } 
    if ($user['role'] === 'admin') 
    { 
     header("location:admin.php"); 
    } 
} 
0

定義一些常量像下面或使用bitmasking algoritim。 (php_manual)。

index.php或者如果您使用框架檢查文檔。

define('USER_ADMIN', 'a'); 
define('USER_USER', 'u'); 

構建權限表,文本類型設置爲null

`permissions` text null 

建立你user_permissions排在你的視圖使用複選框的

<input type="checkbox" name="permissions[]" value="u" selected /> 
<input type="checkbox" name="permissions[]" value="a" selected /> 

分配數據

$user=''; 

$user = (isset($_SESSION['uid'])) ? User::find($_SESSION['uid']) : ''; 



if(isset($user) && in_array(USER_ADMIN, $user['permissions'])) 
{ 
    //i am an admin 
} 
else 
{ 
    //i am NOT an admin 
}