0

我是 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;       
}
?>
4

5 回答 5

1

您必须在任何输出(如 echo 语句)之前调用 header() 。将任何内容输出到浏览器后,它根本无法工作。

于 2012-06-25T22:39:38.673 回答
1

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

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

Location 标头应该不存在。

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

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

于 2012-06-25T22:40:58.500 回答
1

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

于 2012-06-25T22:41:03.120 回答
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);
}
于 2012-06-25T22:53:05.610 回答
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>";
于 2012-06-25T22:35:46.810 回答