成功的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登录仅在重新加载页面后出现的主要内容,如果未能解决你的问题,请参考以下文章

内容仅在重新加载后显示

成功登录后关闭 Kendo UI 窗口并重新加载父页面

如何在 Nest API iOS 中成功注销后重新加载登录页面

ajax成功后重新加载页面

仅在 Firefox 上重新加载后显示文本

登录成功后向片段或页面传递数据