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 条件
我想制作一个基本的 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 条件