2009-04-10 156 views
11

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

+0

我永远无法理解为什么我要等待x秒,使他们能够重定向我到另一个网页,为什么我要这么做? – Thomaschaaf 2009-04-10 09:15:58

+0

有些浏览器或浏览器的设置不会让重定向...并显示一个中间页面显然是为用户然后多加载页面,不明白发生了什么.. X(通常5)秒在那里让用户阅读该消息;) – Strae 2009-04-10 09:28:53

+0

@Thomaschaaf:有几个原因可能,a)因为他们没有意识到没有必要,b)广告,当用户“等待”时,他们可能会看到一个添加和点击,c )每个人都这样做,所以每个人都期待一个间歇性的页面(即我的老板让我实现了一个,即使我们的网站不会因为他习惯于看到它而认为我们的用户也会产生广告收入)。 – Louis 2009-05-05 00:30:14

回答

1

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

可能这是你在找什么?

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

这样做吗?真的有用吗? 我认为,与睡眠功能的浏览器只是保持'没有加载页面(在你的例子中)5秒..但没有丢掉输出 – Strae 2009-04-10 08:34:55

3

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

<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> 

该溶液中使用“的位置:”的优势:

15

无需Javascript或PHP甚至低技术含量的解决方案头的是,你并不需要暂停脚本执行,这将对用户来说好像服务器正忙或者他们的连接已经挂起。

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

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

33

这一个应该工作:

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

,并让你的用户看到你想要的任何类型的输出(你会在X秒被重定向,如果不要单击yere,等..)

8

从来没有这种方式使用睡眠。 即使在轻微的负载情况下,您的服务器将会耗尽http连接。如果你的防火墙耗尽,最坏的情况。

重定向头中的延迟参数完全出于同样的原因。

0

尝试:

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

本地主机和远程服务器之间交换时,这会给你更多的灵活性。

0

把它放在标题中。

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

对地方0.01你必须把秒,我已经使用了十进制数。

和makensucces.html的地方,你需要把你想要的文件的名字。

3

如果你想等到再回到以前的页面在这里是如何

$referrer = $_SERVER['HTTP_REFERER']; 

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