PHP 多账号登录系统

PHP Login system with multiple accounts

我想制作一个基本的 PHP 多帐户登录系统。我的问题是,当您尝试使用 user2 的密码以 user1 身份登录时,代码为什么允许您这样做。但我不想让你用另一个密码登录。知道怎么做吗?

代码:

<?PHP
$local_user1 = "user1"; 
$local_password1 = "123"; 
$local_user2 = "user2"; 
$local_password2 = "456"; 
$local_user3 = "user3"; 
$local_password3 = "789"; 
if (isset($_POST['login']))
{
    $u_post = $_POST['username'];
    $p_post = $_POST['password'];

    if ($local_user1 == $u_post || $local_user2 == $u_post || $local_user3 == $u_post) 
    {
        if ($local_password1 == $p_post || $local_password2 == $p_post || $local_password3 == $p_post) 
        {
            echo "hello, ".$local_user."!";   
            die();
        }
        echo "Te username or password are not correct !";
        die(); 
    }
    else 
    {
        echo "Te username or password are not correct !";
        die(); 
    }
}
?>
<html> 
<body> 
    <form action="" method="POST" >
        <input type="text"  name="username" placeholder="Enter username" /> 
        </br> 
        <input type="password" name="password" placeholder="Enter password" />
        </br> 
        <input type="submit" name="login" /> 
    </form>
</body>

问题出在条件上。

if ($local_user1 == $u_post || $local_user2 == $u_post || $local_user3 == $u_post) 

然后如果使用 OR 再次进行。

像伪代码一样尝试使用 &&

$local_user1 == $u_post && $local_password1 == $p_post

$local_user2 == $u_post && $local_password2 == $p_post

$local_user3 == $u_post && $local_password3 == $p_post

为简单起见,您需要重新排列 if 语句

if (($user == "user1" && $pass == "pass1") || ($user == "user2" && $pass == "pass2") || ($user == "user3" && $pass == "pass3")) {
    //Login successful
}

这样它会根据一组用户名和密码检查用户名和密码是否匹配,而不仅仅是检查用户名和密码是否正确,但是您应该重新设计系统以使用数据库,因为如果您要拥有多个用户,则不能简单地为每个用户添加其中一个 if 条件