【问题标题】:Header redirect not refreshing redirect page标头重定向不刷新重定向页面
【发布时间】:2017-04-29 22:07:59
【问题描述】:

我的页面侧边栏中嵌入了一个登录表单。 一旦用户使用它登录,我希望它重定向回他们登录的同一页面。

这很容易实现。但是,当登录功能完成并重定向到原始页面但实际上并没有刷新它时。登录表单从表单更改为用户信息显示。尽管用户现在实际上已经登录,但它仍然显示登录表单。

我尝试过使用

header ( "refresh:0;url=url.php" );

但是我无法获取用户来自的 URL 以正确解析并重定向到它。

我使用的代码如下

if( isset( $_POST['location'] ) ) {
    $location = htmlspecialchars($_POST['location']);
    header( "Location:" .HOME_PATH. urlencode($location) );
}

有没有一种简单的方法来强制刷新,或者最好使用 AJAX 之类的东西来实现同样的目的。

我认为最简单的方法是使用刷新标头,但是我不明白如何实现与在 Location 中使用的相同的效果。

编辑:

登录表单检查用户是否已登录,如果未登录,则更改为显示而不是登录表单。

<?php if ( isset( $_SESSION['userName'] ) ) { ?>

然后表单发布到一个 php 函数。该函数实际上执行用户的登录,一旦完成,它就会重定向到他们来自的页面。这就是问题所在。返回重定向刷新页面,因此表单条件可以更改显示的内容。

【问题讨论】:

  • 您的代码是否正确显示登录表单以检查用户是否已登录?
  • 是的,它是&lt;?php if ( isset( $_SESSION['userName'] ) ) { ?&gt;
  • 在显示表单或信息之前,您可以检查用户是否登录。
  • 我已经将它内置到函数中,但是如果用户登录他们将无法看到表单

标签: php redirect


【解决方案1】:

header("Location: ...") 不会停止页面的呈现。您需要通过在其后放置一个exit 来停止。

【讨论】:

  • 它确实重定向成功它只是不刷新页面以显示用户现在已登录,因此更改表单。我尝试过使用exit;,但它并没有改变行为
  • 是的,也许确实如此,但现在仍然是使用重定向的正确方法,您应该始终使用exitdie 终止页面的执行,在重定向之后立即执行,否则存在是在浏览器重定向到不同位置之前暂时显示页面的机会。
  • @user1711576,忘记重定向,每次只检查用户是否登录,在输出表单部分并根据登录状态显示项目之前。
  • 我愿意,但是页面不会刷新,以便 php 检查用户现在是否已登录
猜你喜欢
  • 2012-07-07
  • 2020-12-31
  • 2014-11-13
  • 2015-03-11
  • 2013-07-19
  • 2019-03-09
  • 2019-05-22
  • 2017-01-12
  • 2017-07-25
相关资源
最近更新 更多