在带有标头 (..)的 URL 中显示用户名;


Displaying username in URL with header(...);

我有一个网站,让我登录并显示一个新表单,以便在用户登录后发布艺术品。

<?php
  if (!empty($_POST['username']) && !empty($_POST['password'])){
    if (empty($fetchedRows)) {
      echo "<p>Invalid username and/or password</p>";
    }
    else {
      echo "<p>Logged in</p>";
      header ('Location: index.php?user=' . $_POST['username']);
?>
    <form method="post" id="post-article">
    </form>
    <?php
    }
  }
?>

我想在我的 URL 中显示用户名。这有效,但是当我到达header ('Location: index.php?user=' . $_POST['username']);时,其余代码将无法运行。如果用户凭据有效,它应该显示一个新表单。

如果我删除header(...);行,所有这些都有效。

将您的表单代码放在索引上.php

<form method="post" id="post-article">
    </form>
  1. 您正在检查开机自检[用户名]和开机自检[密码]。
  2. 如果一切正常,则使用 GET[user] (index.php?user=xxx) 将其重定向到同一位置(索引.php)
  3. 现在进入索引.php,没有 POST[用户名] 和 POST[密码]。所以它应该显示"无效的用户名和/或密码"
你应该

做的是,你应该先检查$_SESSION[用户名]。如果为空,则应检查 POST[用户名] 和 POST[密码]。如果一切正常,您将执行 $_SESSION[用户名] = $_POST[用户名],然后重定向。