PHP重定向不起作用

Posted

技术标签:

【中文标题】PHP重定向不起作用【英文标题】:PHP Redirect is not working 【发布时间】:2016-01-12 10:08:55 【问题描述】:

我正在尝试使用 php 标头成功用户登录后重定向我的页面,但我无法重定向页面。

echo '<span style="color:#E02F2F;text-align:center;font-size:25px;padding-left:38%;">Username or Password is valid</span>';     
header('Location:http://example.com/templates/georamble/index.php'); // Redirecting To Other Page

我的登录页面位于“georamble”文件夹中。我哪里错了?

【问题讨论】:

您是否尝试在标题后保留exit; 同一个项目的其他页面? echo + header 不起作用。如果您已经将输出发送到客户端,则您的标头已发送,您无法再更改它们。要么使用输出缓冲,要么在发送输出之前设置标题。如果您想要/需要显示 “成功登录” 消息,您可以在您重定向到的页面上执行此操作,并使用会话来跟踪此类内容。 Read all about it here PHP Redirect to another page after form submit的可能重复 你得到什么有没有错误输出?如果有更新您的问题。 【参考方案1】:

如果 echo 语句在标头之前使用,则不会重定向页面。所以你也可以试试这个。 echo &lt;script&gt;window.location='url'&lt;/script&gt;

【讨论】:

需要注意的是 header() 必须在发送任何实际输出之前调用(在 PHP 4 及更高版本中,您可以使用输出缓冲来解决此问题): 以上不是正确的解决方案。但使用这解决了你的问题。【参考方案2】:

你不能使用,在标题前回显。为了克服这种情况,您可以使用 ob_start()ob_end_flush() 函数如下:

ob_start();
echo '<span style="color:#E02F2F;text-align:center;font-size:25px;padding-left:38%;">Username or Password is valid</span>';
header('Location:http://example.com/templates/georamble/index.php'); // Redirecting To Other 
ob_end_flush();

希望对你有所帮助。

【讨论】:

确保您的 php.ini 中的 output_buffering 值是否为 On。 为什么要打开输出缓冲来重定向到另一个页面?【参考方案3】:

您可能会遇到错误,因为您在重定向之前打印了信息。您的用户将永远不会看到该信息。

A similar question and answer.

因此,在您的脚本成功执行后暗示登录,如果您想显示某种类型的信息,请在您的标头重定向中传递参数。想既然你只是在呼应有效的登录,我认为没有必要。您做对了,只是在重定向之前无法将任何内容打印到屏幕上。

【讨论】:

我不需要在重定向之前打印 anu measaage 。这仅用于测试目的 然后把 echo 语句拿出来。应该马上把你修好。 :) 已删除。仍然存在同样的问题:( 脚本中只有这两行吗?

以上是关于PHP重定向不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在另一个页面中重定向时php会话不起作用[重复]

联系表格 PHP 重定向不起作用

会话和 php 重定向不起作用

由于浏览器缓存,PHP 标头 301 重定向不起作用

PHP标头重定向不起作用并停留在login.php上

在没有 index.php 的情况下,codeigniter 重定向不起作用?