标题发送后重定向用户

Gar*_*nay 16 php redirect

据我所知,只要数据已经发送到浏览器,就无法修改标题.

有没有办法(使用PHP)我可以执行重定向将用户带到另一个页面(显然不使用标题)

如果是这样,请指点我一些文件?

Gar*_*nay 33

决定编写自己的php函数,实现javascript重定向.请参阅下面的代码.

function redirect($url)
{
    $string = '<script type="text/javascript">';
    $string .= 'window.location = "' . $url . '"';
    $string .= '</script>';

    echo $string;
}
Run Code Online (Sandbox Code Playgroud)

  • @codingpuss有几件事...... 1)我没有看到你的答案,这是一个更好的选择.2)通常假设只有大约1-2%的用户禁用JS(如果你不在美国,则更少).这表明该解决方案至少在98-99%的时间内起作用.尝试容纳每个人都很好,但除非你有更好的建议,否则98-99%的成功率似乎是完全可以接受的. (12认同)

sus*_*its 6

我认为输出缓冲不是一种选择,因为您提到数据已发送。使用元重定向,或输出处理此问题的 JavaScript。

前者可以通过在该<head>部分添加以下内容来实现

<meta http-equiv="refresh" content="0; url=http://example.com/">
Run Code Online (Sandbox Code Playgroud)

对于后者,编写如下内容可能会有所帮助:

<script type="text/javascript">
    window.location = "http://example.com/";
</script>
Run Code Online (Sandbox Code Playgroud)

http://example.com/替换为您的目标 URL。请注意,如果确实发送了某些数据,则后者可能更易于实现。

警告:这两种方法都可以在客户端被阻止,但从技术上讲,301 和 302 重定向也可以。


Jim*_* W. 6

您可以使用Javascript或Meta标签.但是,如果您不希望修复代码以在处理后显示输出,则只需output_buffering在站点的.htaccess文件中打开即可.

php_flag output_buffering on

你将把你的.htaccess文件中的内容打开.即使您在处理过程中输出内容,它也会允许重定向.这是因为输出缓冲区将缓冲区保存到最后,因此之前没有数据发送.