Php 重定向用户及其如何影响“后退”按钮的使用

Php 重定向用户及其如何影响“后退”按钮的使用,php,redirect,http-headers,http-redirect,Php,Redirect,Http Headers,Http Redirect,我一直在想,假设用户从URL开始: http://www.foo.com/ 然后他们点击一个链接发送他们说: http://www.foo.com/some-page.php 但在这个脚本中,您可以: header('Location: http://www.foo.com/another-age.php'); 现在,如果用户在浏览器中按下后退按钮,会发生什么情况?是否将它们发送回http://www.foo.com/some-page.php然后再次重定向到http://www.foo.

我一直在想,假设用户从URL开始:

http://www.foo.com/
然后他们点击一个链接发送他们说:

http://www.foo.com/some-page.php
但在这个脚本中,您可以:

header('Location: http://www.foo.com/another-age.php');
现在,如果用户在浏览器中按下后退按钮,会发生什么情况?是否将它们发送回
http://www.foo.com/some-page.php
然后再次重定向到
http://www.foo.com/another-age.php
使“后退”按钮无效,还是将其重定向回
http://www.foo.com/


我知道我可以测试一下,但我认为有些浏览器可能会有不同的行为,我想知道它应该如何工作?

这会使后退按钮毫无用处。 它会将它们重定向回 “”


(至少根据我的简单经验)

如果您想在浏览器中尝试,下面的脚本将创建三个您可以使用的文件

<?php

$dir = '/tmp/';
foreach(
    array(
        'foo.php' => '<a href="bar.php">Go to bar.</a>',
        'bar.php' => '<?php header("Location: baz.php");',
        'baz.php' => '<h1>Hello I\'m Baz</h1>'
    )
    as $name => $contents
) {
    file_put_contents($dir . $name, $contents);
}

这将精确重定向到您在header函数中定义的路径。您也可以将其重定向到主页,您可以使用“上一步”按钮访问路径。

这取决于您和您在代码中的使用方式:header()用于发送原始HTTP头(有关mor详细信息,请转到)。当我想将用户重定向到web应用程序中的特定页面时(在用户完成特定功能后),我使用它

据我所知,使用header(),如果没有时间重定向,浏览器不会启用back按钮

以秒为例:

header( "refresh:5;url=http://stackoverflow.com" );

header( "refresh:5;url=wherever.php" );
以其他形式使用,如您所说,如果单击链接转到:
http://www.foo.com/some-page.php
使用heades(),这意味着链接指向whavirer.php,其标题代码指向some-page.php。这样,后按钮将始终可用。另一种方法是使用if或调用特定函数

另一方面,如果您不想在用于浏览网页的任何浏览器中使用任何保存缓存,或者不想解释如何工作以及如何禁用,那么这里有一个很好的帖子(有不同脚本语言的示例):

使用head()PHP的示例:

W3C发布的一篇名为is的帖子显然指出:除非重定向来自“刷新”技术(与HTTP重定向相反),否则浏览器将无法捕获重定向器

引用那篇关于HTTP重定向的文章

另一方面,“HTTP重定向”的作用更直接,因为它是在另一层中完成的。当用户代理(即浏览器或验证器)首次联系服务器并请求文档时,服务器本身(已配置为将文档重定向到另一个地址)会向用户代理答复,它应该改为查看新地址

专门讲述
/some page.php
的内容被移动到
/另一个page.php
(我有点认为它们也可以说是“相同的”)。此后,根据问题,浏览器后退按钮将直接转到
foo.com

关于这个函数

header('Location: http://www.foo.com/another-page.php');
它使用
位置
标题,您可以从规范中了解它


至于测试,您可以尝试任何URL缩短器,如goo.gl。它实现301重定向。使用“浏览器后退”按钮访问URL后,将无法返回缩短的URL。或者直接去fb.com,你会被重定向到facebook.com,并且肯定不会回到以前的URL(如果你不是真的隐藏它,那又有什么意义?)

另一种将重定向程序推送到浏览器历史记录的方法是JavaScript

window.location='http://www.example.com/'

@你没读我问题的最后一句吗?:)@布雷特:你在考虑php重定向还是其他的redirects@KishanKumarPHP重定向:)感谢您运行这些测试-我想我只是想知道这是否是标准行为,因此我的问题,而不是自己运行这样的测试:)谢谢您的精彩帖子。这正是我想要的-谢谢!
window.location='http://www.example.com/'