2011-12-22 176 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 
}