PHP-基本登录检查?
因此,我尝试使用PHP进行一次非常基本的登录:PHP-基本登录检查?,php,html,login,Php,Html,Login,因此,我尝试使用PHP进行一次非常基本的登录: <?php $username = $_POST["username"]; $password = $_POST["password"]; $users = array("Billy", "Bob"); $passes = array("billy123", "pass1234"); for ($i = 0; $i < count($users); $i++) { $user
<?php
$username = $_POST["username"];
$password = $_POST["password"];
$users = array("Billy", "Bob");
$passes = array("billy123", "pass1234");
for ($i = 0; $i < count($users); $i++) {
$user = $i;
if ($username === $users[$i]) {
if ($password === $passes[$user]) {
echo "Logged in as " .$users[$user];
}
}
else if ($username !== $users[$i] && $password !== $passes[$i]) {
echo "Login failed";
}
}
?>
我不能发布照片,但它打印的是登录后的照片,因为BillyLogin就这样失败了。当我以Bob的身份登录时,它说以BobLogin的身份登录失败了,我不知道为什么,尽管我似乎无法理解。有人能解释一下发生了什么事,告诉我怎么解决吗
提前感谢。请尝试以下代码:
$username = $_POST['user'];
$password = $_POST['pass'];
$user["Bob"]="pass";
if ($username==$user[$username]){
echo "Authenticated";
} else {
echo "bad password";
}
当然会发生这种情况,因为对于每个不匹配的用户名/密码组合,您都会回显“登录失败” 相反,您要做的是遍历整个数组以查看是否有匹配项,如果没有匹配项,则只在循环后输出“Login failed”
$login_successful = false;
for ($i = 0; $i < count($users); $i++) {
if ($username === $users[$i] && $password === $passes[$i]) {
echo "Logged in as " .$users[$i];
$login_successful = true;
break; // no need to continue the loop here, so we break out of it
}
}
if (!$login_successful) {
echo "Login failed";
}
这更简洁,也更容易循环:
$login_successful = false;
foreach ($login_credentials as $login_credential) {
if ($username === $login_credential['username'] && $password === $login_credential["password"]) {
echo 'Logged in as ' . $username;
$login_successful = true;
break; // no need to continue the loop here, so we break out of it
}
}
if (!$login_successful) {
echo 'Login failed';
}
如果您的问题是在某人经过身份验证后您没有脱离循环,那么它仍然会检查循环中的其他所有人,并在每次迭代中回显登录状态,那么这就是问题的根源。您需要的是缓存登录的用户id,如果有人登录,则设置用户id并中断循环。如果在循环之后设置了用户id,则他们将登录,否则不会登录
<?php
$username = $_POST["username"];
$password = $_POST["password"];
$users = array("Billy", "Bob");
$passes = array("billy123", "pass1234");
$user_id=-1;
for ($i = 0; $i < count($users); $i++)
{
if ($username === $users[$i] && $password === $passes[$i])
{
$user_id=$i;
break;
}
}
if($user_id>=0)
{
echo "Logged in as " .$users[$user_id];
}else
{
echo "Login failed";
}
?>
<?php
$username = $_POST["username"];
$password = $_POST["password"];
$users = array("Billy", "Bob");
$passes = array("billy123", "pass1234");
$user_id=-1;
for ($i = 0; $i < count($users); $i++)
{
if ($username === $users[$i] && $password === $passes[$i])
{
$user_id=$i;
break;
}
}
if($user_id>=0)
{
echo "Logged in as " .$users[$user_id];
}else
{
echo "Login failed";
}
?>