我的登录脚本有点问题。一切正常,但是当我提交表单时,页面重新加载&没有显示我已登录。现在,当我再次从我自己重新加载页面时,它确实显示我已登录(回声测试)。我真的没有落后于这个问题。一切都在我的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;
}
?>
好的,所以我觉得我发现了自己的错误
当我第一次加载页面时 - &gt;没有设置用户标识。
当我提交表格时 - &gt;没有设置用户标识。
当脚本现在来到if(isset())
时,它确实设置了用户ID
现在设置了一个用户标识,但从逻辑上讲它现在忽略了else if语句。
有没有一个很好的解决方法?因为我真的想留在主页上。 (也没有AJAX)
答案 0 :(得分:0)
好的,所以我找到了解决问题的方法
如果设置了登录 - &gt;不显示表格
如果设置了登录并且正确 - &gt;显示用户面板
如果设置了登录,但不正确 - &gt;显示表格
如果未设置登录 - &gt;显示表格
为了解决问题,只需包含所有其他内容即可。 (在本例中为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;
}
?>