用PHP重定向计时器?

时间:2009-12-14 16:05:35

标签: php

如何在10秒后使用PHP进行重定向...

我已经阅读了很多关于它,似乎用javascript会更好。但PHP会为我节省很多代码。

那么如何在PHP中使用计时器进行重定向?

由于

11 个答案:

答案 0 :(得分:32)

您可以让PHP脚本休眠10秒钟,

sleep(10);

但这对最终用户来说是一个无响应的服务器。最好的选择是使用元刷新,

<meta http-equiv="refresh" content="10;url=http://google.com">

或javascript。

setTimeout(function(){
  window.location = "http://google.com";
}, 10000);

在丹尼尔的评论中找到:

header('Refresh: 10; URL=http://yoursite.com/page.php');

非常适合这种情况,因为它不需要Javascript或HTML。

答案 1 :(得分:7)

标题('刷新:10;网址= http://yoursite.com/page.php');

将此PHP代码放在页面的标题部分中,否则,它将无效。

答案 2 :(得分:2)

您需要进行客户端重定向:

<meta http-equiv="refresh" content="5;url=http://yourdomain.com"/>

但如果您觉得必须使用PHP,则可以执行以下操作:

<?php

// wait 5 seconds and redirect :)
echo "<meta http-equiv=\"refresh\" content=\"5;url=http://yourdomain.com\"/>";

?>

答案 3 :(得分:2)

让PHP脚本睡眠是一个坏主意。实际上,它是一种轻松操作服务器的方法;)内存中的PHP脚本占用的资源足够多,尤其是当它作为CGI工作时。

答案 4 :(得分:2)

<?php

      header( "refresh:10; url=https://example.com/index.php" );

?>

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Redirect with countdown</title>

<style type="text/css">
.myClass {
           font-family: verdana; 
           font-size: 16px; 
           font-weight: normal;  
           color: black;
           line-height: 30px;
         }
</style>
</head>
<body>
<script type="text/javascript">

 (function () {
  var timeLeft = 10,
  cinterval;

  var timeDec = function (){
  timeLeft--;
  document.getElementById('countdown').innerHTML = timeLeft;
  if(timeLeft === 0){
  clearInterval(cinterval);
    }
};

cinterval = setInterval(timeDec, 1000);
})();

</script>
Redirecting in <span id="countdown">10</span> seconds.
<br><br>
<span class="myClass">Thank you! Your submission has been received!</span>
</body>
</html>

答案 5 :(得分:1)

PHP可能是错误的技术,因为它在服务器端运行,并且在延迟期间不会向用户提供有用的反馈。

这不是Javascript中的大量编码。有关在您的信息页上实现此功能的非常简单的方法,请参阅this link

答案 6 :(得分:0)

加载网页后,PHP不再运行。这意味着在页面加载后您无法对PHP执行任何操作,除非您使用类似AJAX(Javascript调用PHP页面)的内容将数据传输到页面。这将为您提供一些方法来实现重定向所需的10秒等待。

首先,您可以告诉脚本睡眠()10秒钟。然而,正如Johnathan所提到的,这意味着您的页面看起来很慢,只是让用户重定向。

sleep(10);

你也可以简单地放入一个META标签,告诉页面在10秒后重定向。这是首选方法,因为它几乎不涉及任何其他编码,因为您只需放入META标记,而您根本不需要处理javascript。

<meta http-equiv="refresh" content="10;url=http://example.com"/>

然后,你也可以让Javascript发出location.href =“bleh”;等待10秒后命令。

答案 7 :(得分:0)

另一个值得一提的方法是使用PHP的header()函数发送Location HTTP标头。所以,如果你想要一个避免javascript和meta标签的强大解决方案,同时保持web应用程序的响应,那可能是创建一个iframe(或一个框架)并加载一个包含以下内容的php脚本:

sleep(10);
header("Location: http://my.redirect.location.com");

答案 8 :(得分:0)

试试这个脚本,它会起作用!

<?php
$msg ="This Is Just Checking";
header('Refresh: 5; URL=http://www.google.com.pk');
?>

<body>
<?php echo $msg  ?>
</body>
</html>

答案 9 :(得分:0)

我设法在PHP上使用一个简单的函数

function RedirectToURL($url, $waitmsg = 0.4)
{
    header("Refresh:$waitmsg; URL= $url");
    exit;
}

你从PHP调用等待重定向前2秒。请注意,$ waitmsg = 0.4用于定义默认值。

RedirectToURL("http://website.php", 2);

如果您想在表单提交后重定向,可以尝试

if(isset($_POST['submitted']))
{
       echo '<div style="text-align:center; margin-left:auto; margin-right:auto"><br><br>Sucess. Thanks for contribution.</div>';
       RedirectToURL("http://thewebsiteilookforaftersubmit", 2); // I want to wait 2 seconds and not 0.4 as defined by default
}

答案 10 :(得分:0)

创建一个文件,例如:&#34; go.php&#34;,代码

<?php
$site = $_GET['iam'];
sleep(5);
Header ("Location: ".$site."");
exit();
?>

<a href="http://whatever.com/go.php?iam=http://google.com">Link</a>

或者像这样,没有&#34;睡觉&#34;

<?php
$site = $_GET['iam'];
Header('HTTP/1.1 301 Moved Permanently');
Header("Refresh: 10; URL=".$site."");
exit();
?>

<a href="http://whatever.com/go.php?iam=http://google.com">Link</a>