gpt4 book ai didi

php - 两个表中的身份验证查询?

转载 作者:行者123 更新时间:2023-11-29 05:39:29 27 4
gpt4 key购买 nike

我的网站有单独的用户表和管理员表

现在我想给一些用户访问管理区域的权限

我的问题是管理员和用户表

我不知道我是否应该将身份验证数据从用户表复制到管理表以便他们可以登录到管理区,或者执行查询以在两个表中搜索用户名和密码并仅使用级别列来验证他们的访问权限?

像这样的?

$sql = "select `password` , `level` from `admin` where `username` = '$username' UNION
(SELECT `password` , `level` FROM `users` where `username` = '$username') LIMIT 1 ";
$result = $db->query($sql);

while($row = mysql_fetch_assoc($result)){
if($password == $row['passwor'] && $row['level'] != 0)
echo 'welcom to admin area';
else
echo 'login faild';
}

最佳答案

我看到您在数据库中明文存储密码。
这是一个重大的安全风险,永远不应该这样做。
密码应始终使用安全哈希函数存储为加盐哈希。
我也看不到为管理员和非管理员使用单独的表。

我建议您更改表格布局。

table user
-------------
id unsigned integer auto_increment primary key,
username varchar(100) not null,
salt varchar(20) not null,
passhash varchar(48) not null,
isadmin boolean not null default false

查询你的表:

SELECT u.id, u.isadmin FROM user u
WHERE u.username = '$username'
AND passhash = SHA2(CONCAT(u.salt, '$password'),512)
AND isadmin = 1

创建用户时使用:

INSERT INTO user (username, salt, passhash, isadmin) 
VALUES ('$username', '$salt', SHA2(CONCAT('$salt','$password'),512), '$isadmin')

关于php - 两个表中的身份验证查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7992358/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com