PHP重定向暂停

PHP重定向暂停,php,redirect,Php,Redirect,在使用PHP将用户重定向到另一个HTML/PHP页面之前,如何将页面暂停一定的秒数?更新:这是可行的,但可能不是最适合这种情况的解决方案。见评论 这就是你要找的吗 <?php sleep(5); header("Location: http://www.example.com/"); exit(); ?> 其他两个选项是使用setTimeout()的Javascript重定向或带有超时的元刷新标记。不需要Javascript甚至PHP的低技术解决方案: <html>

在使用PHP将用户重定向到另一个HTML/PHP页面之前,如何将页面暂停一定的秒数?

更新:这是可行的,但可能不是最适合这种情况的解决方案。见评论

这就是你要找的吗

<?php
sleep(5);
header("Location: http://www.example.com/");
exit();
?>


其他两个选项是使用setTimeout()的Javascript重定向或带有超时的元刷新标记。

不需要Javascript甚至PHP的低技术解决方案:

<html>
<head>
    <title>Redirecting...</title>
    <meta http-equiv="refresh" 
content="10;URL=http://www.newsite.com">
</head>
<body>
    You are being automatically redirected to a new location.<br />
    If your browser does not redirect you in 10 seconds, or you do
    not wish to wait, <a href="http://www.newsite.com">click here</a>. 
</body>
</html>

重定向。。。
您将被自动重定向到新位置。
如果你的浏览器在10秒内没有重定向,或者你 不想再等了。
与使用“Location:”标题相比,此解决方案的优势在于,您不需要暂停脚本执行,这将在用户看来就像服务器正忙或其连接已挂起一样

此解决方案还为用户提供了立即进入新页面的选项,而不必在浏览器不显示任何信息时等待x秒

编辑:我认为还值得注意的是,如果您决定使用header()方法,您需要确保您的sleep()持续时间不会太长。我认为大多数浏览器在1分钟内没有从服务器接收到任何数据后会生成连接超时。

这一个应该可以工作:

<?php
header('Refresh: 5; URL=http://yoursite.com/page.php');
//other code
?>


并允许用户查看您想要的任何类型的输出(您将在X秒内被重定向,如果不需要,请单击yere,等等)

永远不要以这种方式使用睡眠。 即使在轻微负载下,服务器也会耗尽http连接。最糟糕的情况是你的防火墙用完了

重定向标头中的延迟参数的原因与此完全相同。

请尝试:

<?php
$url=base_url().'page_you_want_to_go_to'
header('Refresh: X; URL=$url');
?>


这将为您在本地主机和远程服务器之间进行交换提供额外的灵活性。

将其放在标题中

 <meta http-equiv="refresh" content="0.01;makensucces.html" />  

在0.01处,你必须输入秒,我使用了十进制数字


在makensucces.html的位置上,您需要将名称从所需的文件中删除。

如果您想等待,然后返回上一页,下面介绍如何操作

$referrer = $_SERVER['HTTP_REFERER']; 

header ("Refresh: 2;URL='$referrer'"); 

小心点——有些浏览器(如chrome和opera)不会正确地采用这种方式?我不知道。好吧,至少他们有点击的链接。是的,我不记得是否浏览器谁没有正确处理它是safari,opera或chrome。。我记得他们两个。。。。但也许他们在时间里解决了这个问题等等!刚刚通过以下方式进行了测试:ff、safari、chrome、opera和IE。。他们都能正确处理。我敢肯定,就在几年前,其中两个还没有解决,但现在似乎已经解决了。带有“http equiv”属性的“meta”标记是http头的替代品,因此您也可以使用下面DaNieL回答的“Refresh:”头。这真的有效吗?我认为使用sleep功能,浏览器只需保持“n”加载页面5秒钟。。但是没有扔掉垃圾output@DaNieL我尚未测试此代码,因此您可能会正确地认为它是否工作取决于服务器设置或调用此代码的时间/地点。我刚刚测试过,它可以工作,但也会阻止所有其他输出。。如果允许使用sleep sleep()函数暂停整个php渲染,那么imho不应用于此类问题。您应该在sleep()之前调用flush(),以将输出的内容发送到浏览器。@olliesunders如果调用flush(),则无法更改标题。这是行不通的。HTTP头在内容之前发送!事实上,我喜欢这个解决方案比我发布的要好得多+1真的吗?我在chrome、ff、ie、opera和safari上进行了测试,所有这些都是在windows环境下进行的,它们的工作原理都是一样的。你是在什么操作系统上尝试的?不能是任何类型的浏览器设置?我一直不明白为什么我必须等待x秒,这样他们才能将我重定向到另一个页面为什么我要这样做?因为某些浏览器或浏览器设置不允许重定向。。。显示一个中间页面对用户来说是很清楚的,然后是多个加载页面,而不了解发生了什么。。有X(通常为5)秒的时间让用户阅读消息;)@Thomaschaaf:有几个可能的原因,a)因为他们没有意识到没有必要,b)广告,当用户“等待”他们可能会看到添加和单击,c)一致性,每个人都这样做,所以每个人都希望有一个间歇页面(也就是说,我的老板让我实现了一个,尽管我们的网站并没有产生广告收入,只是因为他习惯于看到它,并且认为我们的用户也会这样做。)