gpt4 book ai didi

php - 登录 PHP 页面时遇到问题

转载 作者:行者123 更新时间:2023-11-29 03:59:57 25 4
gpt4 key购买 nike

我在我的数据库表中创建了一个名为“权限”的列,其值 1 表示管理员,2 表示普通用户。问题是每当我以普通用户身份登录时,它都会将我重定向到管理员页面。

<?php
$con=mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('user_registration') or die("cannot select DB");


if(isset($_POST["login"])){

if(!empty($_POST['user']) && !empty($_POST['pass'])) {

$user = strip_tags($_POST['user']);
$pass = strip_tags($_POST['pass']);


$query=mysql_query("SELECT * FROM users WHERE username='".$user."' AND password='".$pass."'");
$numrows=mysql_num_rows($query);

$permissions= "SELECT username FROM users WHERE permissions = '1'";
$result=mysql_query($permissions);


if($numrows!=0) {
while($row=mysql_fetch_assoc($query)) {
$dbusername=$row['username'];
$dbpassword=$row['password'];
}

if($user == $dbusername && $pass == $dbpassword) {
session_start();
$_SESSION['sess_user']=$user;
if (mysql_num_rows($result) == 1 ) {
header("Location: fullDB.php");
} else {
header("Location: member.php");
}
}

} else {
echo "Invalid username or password!";
}

} else {
echo "All fields are required!";
}
}
?>

最佳答案

你让所有用户成为管理员,因为你做的管理员检查完全错了:

    $permissions= "SELECT username FROM users WHERE permissions = '1'";

这个查询不是“这个用户是管理员吗”。它是“数据库中是否有管理员用户”。如果您至少有一个管理员用户,则所有用户都将被视为管理员。

由于您已经通过第一个查询获取了用户详细信息,因此第二个查询完全多余:

$query=mysql_query("SELECT * FROM users WHERE username='".$user."' AND password='".$pass."'");

$row = mysql_fetch_assoc($query);
if ($row['permissions'] == 1) {
... admin user ...
} else {
... regular peon ...
}

请注意,您无疑容易受到 sql injection attacks 的攻击,并且正在使用过时/弃用的数据库库。 mysql_*() 函数应该再被使用。

关于php - 登录 PHP 页面时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36747955/

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