我需要帮助在 php 页面上获取表单以在提交时强制刷新页面

I need help getting a form on a php page to force a refresh of the page when submitted

请知道我确实对此进行了研究,并且 none 的答案有效,我正在处理一个 PHP 项目并且 运行 遇到了一个奇怪的错误。好吧,这不是一个错误,而是一个怪癖,我真的不喜欢...

我有一个 index.php 页面,其中包括一个带有登录表单的导航栏页面,当您成功登录时,需要您按两次登录按钮才能使页面最终刷新并显示您的登录有效的事实......与注销按钮相同。我已经取得了一些几乎成功,但所有这些最终都使我的页面崩溃或将我的页面抛入某个永不结束的循环,或者再次使页面崩溃。

我会添加我能添加的代码,请注意,有很多所以请耐心等待...

//From the index page//
          <!-- Log out commands -->
      <?php
        if (isset($_POST["logoffuser"])){
          set_Logout();
          $_POST = array();
          include_once("index.php");
        }
      ?>

此时上面的代码片段应该 运行 清除 Users.php 中设置的 $_SESSION 变量的函数,这有效......有点,然后应该重新加载页面凭借表单提交。接下来显示:

<form class='navbar-form navbar-right' method='POST'>
  <div class="form-group">
    <div class='alert alert-success'>
      Logged in as <?php echo $_SESSION['fullname']; ?>! <?php echo $_SESSION['lastTimeLoggedIn'];?>
      <input type='submit' name='logoffuser' value='Log Off' class='btn btn-primary' />
    </div>
  </div>
</form>

如果设置了 $_Session 并具有数组值,则在加载索引时包含以上内容。将显示在下方...但首先是注销表单(当用户注销网站时显示的表单...):

<form class="navbar-form navbar-right" method="post">
<?php if (isset($_POST["logIn"])){
  if (!empty($login_out_message)){
    echo "<p class='alert alert-danger'> $login_out_message </p>";
    $_POST = array();
  }else{
    set_Login();

  }
}else{

}?>
<div class="form-group">
  <label for="">Username:</label>
  <input type="text" name="Username" value="" class="form-control">
</div>
<div class="form-group">
  <label for="Password">Password:</label>
  <input type="password" name="Password" value="" class="form-control">
</div>
<button type="submit" name="logIn" class="btn btn-primary">Login</button>
<button type="submit" name="Register" class="btn btn-primary">Register</button>
</form>

和我包含的 _Nav.php 表单加载代码,以便您可以看到正在加载的内容......我也试图让页面从这里重新加载......

<?php
//dubug purposes
//  var_dump($_SESSION);
//
  if (isset($_SESSION) && sizeof($_SESSION) > 0) {
    include("partial/_loggedin.php");
  } elseif (sizeof($_SESSION) == 0) {
    include("partial/_loggedout.php");
  }
?>

就像我之前提到的那样,我到处都在尝试承诺使索引页面重新加载的代码,但我得到的只是一个崩溃的浏览器和一些秃头...

到目前为止我已经尝试过的事情::我将确定我在树状结构中做了什么以及我做了什么....

index.php: ---- 在 set_Logout() 函数下方:: ------包括("index.php"); //导致索引页面加载的无限循环... ------包含("_nav.php"); // 结果与上面类似... index.php 和 _nav.php 的 ------include_once() // 结果 - 当前索引中有一个额外的索引和导航,但不在无限循环中。 ------与 header(location:index.php) 有关的事情;这导致浏览器崩溃,并在我重新启动时将我锁定在页面之外...... _nav.php: ------ 与上面相同,除了不是将额外的页面加载到他们在导航栏中加载的页面上...... ------ 位置脚本的尝试导致错误并停止了页面加载... _loggedout.php 和 _loggedin.php: ------ 在这里尝试了同样的方法,暂时只有一件事起作用,直到我不得不关闭浏览器并重新打开,是 header(location...) 它工作得很好但是当我重新加载来自新浏览器的页面加载页面在加载时停止并给出了有关页面加载的错误 headers(此调用的已知问题) ------包含和 include_once 的请求与 _nav.php 的问题相同...

我想我已经看到了一些关于重定向到 PHP 自身的一些脚本,当时我不需要它,但还没有尝试过,我仍在研究它。我想知道你们是否能看到我遗漏的东西。

如果您能提供任何帮助,我们将不胜感激

杰西·芬德

我想出了要做什么...在另一个 Whosebug 网站上找到了它...即使在您登录时它在决定要做什么时它会有点失败...它仍然有效并且我没问题现在...

SO php page reload using meta tags.

//_loggedout.php (used to press log in button.)
<?php if (isset($_POST["logIn"])){
  if (!empty($login_out_message)){
    echo "<p class='alert alert-danger'> $login_out_message </p>";
    $_POST = array();
  }else{
    set_Login();
    //tests
    $page = $_SERVER['PHP_SELF'];
    echo '<meta http-equiv="Refresh" content="0;' . $page . '">';
  }
}else{

}?>

//from index.php to check if $_SESSION is set... 
<?php
        if (isset($_POST["logoffuser"])){
          set_Logout();
          $_POST = array();
          //tests
          $page = $_SERVER['PHP_SELF'];
          echo '<meta http-equiv="Refresh" content="0;' . $page . '">';
          //include_once("index.php");
        }
      ?>

以上是我为解决问题所做的工作...感谢已经发帖的人...很抱歉占用了您的时间...

杰西·芬德