使用标头功能重定向

时间:2012-06-25 22:32:31

标签: php

我是PHP新手编程的新手。请耐心等待......

使用标题函数时,从post方法(动态)使用变量时,刷新选项不起作用。当硬编码其工作的数字时。我尝试了不同的选择。你可以在这里看到我的整个代码。没有成功地使刷新动态地工作。有人可以帮忙吗?

<?php
if($_POST['time']>0) {
     $t = $_POST['time'];
     $u =$_POST['url'];
     echo "You will be redirected to the " .$u . " website in " .$t. "seconds";
     //header("refresh:5; url=http://www.google.com");

     //header("refresh:($_POST['time']);url=($_POST['url'])"); 
     header('refresh: ' .$t);
     header('Location: '.$u);
     exit;       
}
?>

5 个答案:

答案 0 :(得分:1)

你必须在像echo语句之类的输出之前调用header()。在将任何内容输出到浏览器后,它将无法正常工作。

答案 1 :(得分:1)

Refresh标头不仅仅是一个数字,它也应该包含url。格式为:

Refresh: 5; url=http://something.local/

那时应该没有Location标头。

header("Refresh: $t; url=$u");

另见http://en.wikipedia.org/wiki/HTTP_refresh

答案 2 :(得分:1)

在任何输出已经打印到屏幕后,您无法调用php header函数。如果删除echo语句,它应该可以正常工作。

答案 3 :(得分:0)

使用JavaScript重定向更可靠地完成此操作:

echo "<p>You will be redirected in ".$t." seconds.</p>";
echo "<p>Click <a href=\"".$u."\">here</a> to go immediately.</p>";
echo "<script type=\"text/javascript\">setTimeout(function() {location.href = ".json_encode($u).";},".$t."000);</script>";

答案 4 :(得分:0)

if ($_POST['time'] && $_POST['url'])
{
    $time = (integer)$_POST['time'];
    $url = strip_tags($_POST['url']);
    echo "You will be redirected to the " . $url . " website in " . $time . "seconds";
    header('Refresh:' . $time . ';url=' . $url);
}