成功的PHP登录仅在重新加载页面后出现

时间:2017-12-23 11:31:14

标签: php session login

我的登录脚本有点问题。一切正常,但是当我提交表单时,页面重新加载&没有显示我已登录。现在,当我再次从我自己重新加载页面时,它确实显示我已登录(回声测试)。我真的没有落后于这个问题。一切都在我的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)

1 个答案:

答案 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;
}
?>
相关问题