PHP - 重定向延迟

时间:2013-02-19 10:46:13

标签: php redirect

我正在使用以下代码作为null引用脚本的一种形式,它可以很好地工作,但它只是将它们直接重定向到目标URL。

如何创建5秒延迟,以便在重定向之前显示一些广告5秒钟?

3 个答案:

答案 0 :(得分:59)

您可以发送带有超时刷新的php标头。 http://php.net/manual/en/function.header.php

<?php 
  header( "refresh:5; url=wherever.php" ); 
?>

答案 1 :(得分:6)

如何使用sleep()

function method1(...) {

sleep(5);

... rest of the code

但请注意,建议您使用Vahe Shadunts's answer,而使用header()代替。{/ h3>

答案 2 :(得分:4)

_bin_deployableAssemblies标题完成了这项工作,但我想强调一些潜在的问题:

  • HTTP标准中未指定。维基百科说:

      

    专有和非标准:由Netscape引入并由大多数Web浏览器支持的标头扩展。

    但它已存在近20年了,我不知道任何支持它的浏览器(虽然找不到参考)

  • 某些浏览器不会在使用refresh重定向的页面上使用缓存。它已经在Internet Explorer中得到了证明:http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/meta-refresh-causes-additional-http-requests.aspx我可以在Firefox上重现它。 Chrome没有此问题。

替代方案:JavaScript

您可以在中间页面上添加JavaScript,在X秒后打开一个新页面。在页面底部添加此内容,以便在refresh秒后重定向到http://www.example.com/target

5

组合

作为奖励,如果禁用JS,您可以使用<script type="text/javascript"> window.setTimeout(function() { window.location.href='http://www.example.com/target'; }, 5000); </script> 指令refresh回退到meta标头,该指令告诉浏览器表现为某个HTTP标头有已经送走了。因为它是HTML源代码的一部分,所以可以将其包装在http-equiv元素中。除了上面的JavaScript之外,还要将其添加到<noscript>

<head>

现在,如果可以获得最佳性能,页面会使用JavaScript重定向,否则会使用<noscript> <meta http-equiv="refresh" content="5;url=http://www.example.com/target" /> </noscript>