成功的PHP登录仅在重新加载页面后出现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了成功的PHP登录仅在重新加载页面后出现相关的知识,希望对你有一定的参考价值。
我的登录脚本有点问题。一切正常,但是当我提交表单时,页面重新加载并且没有显示我已登录。现在,当我再次从自己重新加载页面时,它确实显示我已登录(回声测试)。我真的没有落后于这个问题。一切都在我的index.php中,我知道还有其他方法可以做到,但这是一个非常特殊的应用程序。
<?php
session_start();
if(!isset($_SESSION['userid'])) {
?>
<!-- Some html here -->
<?php
// if isset POST (...) & SQL Script here
if ($user !== false && password_verify($passwort, $user['passwort'])) {
$_SESSION['userid'] = $user['id'];
echo "test";
} else {
$errorMessage = "Die eingegebenen Login-Daten sind nicht korrekt.<br>Bitte versuchen Sie es erneut.<br><br>";
}
if(isset($errorMessage)) {
echo $errorMessage;
}
?>
<section>
<form method="post">
<input type="text" name="loginname" placeholder="Benutzername oder E-Mail" autofocus maxlength="64" autocapitalize="off" autocorrect="off" spellcheck="false" required><br>
<input type="password" name="passwort" placeholder="Passwort" maxlength="64" autocorrect="off" required><br><br>
<input type="submit" value="Anmelden"><br><br>
</form>
</section>
<?php
} else if(isset($_SESSION['userid'])) {
$userid = $_SESSION['userid'];
echo "Hallo User: ".$userid;
}
?>
好的,所以我觉得我发现了自己的错误。
当我第一次加载页面时 - >没有设置用户ID。
当我提交表单时 - >没有设置用户ID。
当脚本现在来到if(isset())
时,它确实设置了一个用户ID。
现在设置了一个userid,但从逻辑上讲它现在忽略了else if语句。
有没有一个很好的解决方法?因为我真的想留在主页上。 (也没有AJAX)
答案
好的,所以我找到了解决问题的方法。 如果设置了登录 - >显示没有表格 如果设置了登录并且正确 - >显示用户面板 如果设置了登录,但不正确 - >显示表单 如果未设置登录 - >显示表单 为了解决问题,只需包含所有其他内容即可。 (在这种情况下login.php)
<?php
session_start();
if(!isset($_SESSION['userid'])) {
if(isset($_POST["loginname"]) && isset($_POST["passwort"])) {
// SQL Script here
if ($user !== false && password_verify($passwort, $user['passwort'])) {
$showFormular = false;
$_SESSION['userid'] = $user['id'];
} else {
$showFormular = true;
$errorMessage = "Die eingegebenen Login-Daten sind nicht korrekt.<br>Bitte versuchen Sie es erneut.<br><br>";
}
} else {
$showFormular = true;
}
} else if(isset($_SESSION['userid'])) {
$showFormular = false;
}
if ($showFormular) {
include "login.php";
} else {
$userid = $_SESSION['userid'];
echo "Hallo User: ".$userid;
}
?>
以上是关于成功的PHP登录仅在重新加载页面后出现的主要内容,如果未能解决你的问题,请参考以下文章