将页面重定向到另一个页面5秒钟,然后再次重定向。

7

我正在尝试将一个页面重定向到另一个页面,这一步骤已经成功完成。但是,我想将第一个页面重定向到另一个带有广告的页面。该页面将在五秒钟后重定向到另一个页面。

我是通过以下方式实现的:

<?php
include('ads.php');
?>
<?php 
sleep(2);
$url = $_GET['url'];
header("Location: ".$url."");
exit;
?>

然而,广告在ads.php中完美地显示出来,但是五秒后没有重定向。我在我的Web浏览器中收到了这个错误消息:
Warning: Cannot modify header information - headers already sent by 
(output started at /home/nucleusi/public_html/adverts/ads.php:1)
in /home/nucleusi/public_html/adverts/index.php on line 7

一般我需要重定向的链接是这样的: http://domain.com/adverts/index.php/?url=http%3A%2F%2Fitunes.apple.com%2Fmx%2Falbum%2Fstill-got-the-blues%2Fid14135178%3Fi%3D14135158 该链接涉及IT技术。

1
我想看到答案。这将会很棒。 - Your Common Sense
@Col. Shrapnel - 我想圣诞节已经过去好几天了。 :-) - John Parker
4个回答

5
在第一页(广告之前)在doctype或html标签之前添加以下内容:
<?php header("location: adlocationhere.php"); ?>

然后在广告页面上添加以下内容:

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

这将立即重定向您的第一个页面,并在5秒后重定向您的第二个页面。希望这有所帮助(如果您将其放置在doctype和html标签之前,它还应该消除无法修改标题信息的问题)。

编辑:使用JavaScript进行重定向可能存在安全风险,因为任何用户都可以更改其位置。通过以这种方式执行,您完全控制用户被重定向到哪里。


我不认为使用JavaScript执行这样的重定向会构成安全风险。理论上,任何用户代理都可以拒绝执行重定向,或仅在咨询最终用户后执行重定向,即使是标准(3xx)HTTP状态代码也是如此。您是正确的,精明的用户可以修改您的页面源并将自己重定向到其他位置,但他们可以像使用浏览器地址栏一样轻松地完成此操作!在任何时候,您都不应该假设您可以“控制用户”,因为除了希望它遵守HTTP RFC外,您无法控制用户代理。 - Rob
我添加这个的原因是因为他们可以更改源并且他们知道它要去哪里。使用PHP时,他们可能不知道文件名,因此如果他们不知道文件名,则无法更改URL。尽管在访问一次后,它将被存储在历史记录中,但我只是更喜欢在这种情况下使用我可以控制的东西而不是用户。大多数情况下,客户端希望控制广告,而不是用户对其进行控制,使用PHP更容易实现这一点。我同意大多数情况下不控制用户,但我认为这是一个例外。 - jefffan24

2

使用刷新元标记或javascript窗口位置


1

这可能会对你有所帮助

setTimeout("javascript window.location",3000)

致敬

Wazzy


0
所有页面都有标题和内容。为了将访问者重定向到另一页,您必须在页面的头部部分进行操作。一旦您打印了页面内容(您的广告),您就已经有效地开始了内容,在其中无法返回修改标题。
最好的方法是使用像JavaScript这样的工具:
<script>
function redirect() { window.location = '$url'; }
setTimeout("redirect();", 5000);
</script>

这将在 html 中完成,可能位于页面底部,在 </body> 之前。 - Tyler
好的,我已经做到这一步了,但仍然无法重定向:<html> <script> $url = $_GET['url']; function redirect() { window.location = '$url'; } setTimeout("redirect();", 5000); </script> <?php include ('ads.php'); exit; ?> - max_
1
JavaScript 没有 $_GET 功能,这是 PHP 专属的。你可以这样做:var url = <?php echo $_GET['url']; ?>; function redirect(){ window.location = url; }.... 这样应该就可以了。 - jefffan24

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接