您好我是PHP和Mysql的新手。我需要帮助我正在编写的登录脚本。我的脚本运行正常。但我想添加一个额外的登录要求。
在表格中我有:
user_id | username | password | first_name | department
-------------------------------------------------------
我目前正在使用用户名和密码对用户进行身份验证,但我想添加" department"的其他要求。部门栏中有两个条目" user"或"经理"。我想只允许访问经理如何添加?
我使用的mysql查询是:
$query = "SELECT * FROM users WHERE username='".mysql_real_escape_string($uname)."' AND password='".mysql_real_escape_string($passencrypt)."'";
答案 0 :(得分:1)
如您所述添加角色可以通过两种方式解决。
首先是简单但不好扩展,第二种更好但需要更多努力。
将department
作为tinyint添加到DB,其中1 = user,2 = manager
PDO解决方案
$sth = $dbh->prepare('SELECT * FROM users WHERE username=? AND password=md5(?) AND department=?);
$sth->bindParam(1, $user, PDO::PARAM_STR);
$sth->bindParam(2, $pass, PDO::PARAM_STR);
$sth->bindParam(3, $department, PDO::PARAM_INT);
$sth->execute();
详细了解PDO http://www.php.net/manual/en/pdo.construct.php
第二种解决方案是使用角色和资源。以下是如何使用它的好解释:http://framework.zend.com/manual/1.12/en/zend.acl.introduction.html
答案 1 :(得分:0)
$query = "SELECT * FROM users WHERE username='".mysql_real_escape_string($uname)."' AND password='".mysql_real_escape_string($passencrypt)."'";
没关系,然后只需在php中查看
即可$row = mysql_fetch_array($result);
if($row['department']=="manager"){
//complete login
}else{
//logout
}
答案 2 :(得分:0)
您可以在结果集中检查DEPARTMENT的值并采取适当的操作,或者将其从查询中完全过滤掉。这样就可以了:
$query = "SELECT * FROM users WHERE department='manager' AND username='".mysql_real_escape_string($uname)."' AND password='".mysql_real_escape_string($passencrypt)."'";
但请记住,这意味着您不会区分不存在的用户,不正确的密码或不是经理的用户。
答案 3 :(得分:0)
您只需在WHERE
$query = "SELECT * FROM users WHERE username='".mysql_real_escape_string($uname)."' AND password='".mysql_real_escape_string($passencrypt)."' AND delartment = 'manager'";
通过这种方式,只有manager
部门的成员才会与您的查询匹配
答案 4 :(得分:0)
你可以这样做:
if (isset($_POST['manager']))
{
$query = "SELECT * FROM users WHERE username = '$uname' AND password = '$passencrypt'";
}
elseif (isset($_POST['user'])
{...}
当然,当你不是经理登录时,你必须用你想做的任何事情来替换最后一对括号中的三个点。