0

这是我第一次在这个网站上提问,所以请多多包涵。我从另一个网站获得了一个用于测试互联网连接速度的脚本,并添加了 if else 语句。如果速度超过 500,它将重定向到特定页面。由于某些原因,我无法让它工作。我在标签ob_start();之前添加了<html>标签,也在标签ob_end_flush();之后添加了</html>。我在我的身体标签之间添加了下面的代码。

$kb=512;
flush();
$time = explode(" ",microtime());
$start = $time[0] + $time[1];

for($x=0;$x<$kb;$x++){
    echo str_pad('', 1024, '');
    flush();
}
$time = explode(" ",microtime());
$finish = $time[0] + $time[1];
$deltat = $finish - $start;
$intspeed = round($kb / $deltat, 0);
echo $intspeed; //just to check if $intspeed has a value

if ($intspeed > 500) {
  header("Location: test.php"); 
  exit();
} else  {
  header('Location: falcons/index.php');
  exit();   
}
4

2 回答 2

1

删除flush();呼叫。此外,请确保此代码在 and 之间ob_start()ob_end_flush()而不是之前或之后(并且在此代码之前没有输出任何其他内容)。

$kb=512;

$time = explode(" ",microtime());
$start = $time[0] + $time[1];

for($x=0;$x<$kb;$x++){
    echo str_pad('', 1024, '');
}
$time = explode(" ",microtime());
$finish = $time[0] + $time[1];
$deltat = $finish - $start;
$intspeed = round($kb / $deltat, 0);
echo $intspeed; //just to check if $intspeed has a value

if ($intspeed > 500) {
  header("Location: test.php"); 
  exit();
} else  {
  header('Location: falcons/index.php');
  exit();   
}
于 2012-04-10T17:42:46.313 回答
0

如果输出尚未开始,您只能通过 header() 重定向。如果已经有非标头输出(例如在您的 for 循环中),则设置“位置”标头无效。

我建议headers_sent()在设置“位置”标头之前使用,并在某些调试信息或其他已经开始输出的情况下进行后备。

于 2012-04-10T17:34:29.880 回答