我的php if语句不起作用

时间:2012-04-10 17:31:05

标签: php if-statement header

这是我第一次在本网站上提问,请耐心等待。我从另一个网站获得了一个用于测试互联网连接速度的脚本,并添加了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();   
}

2 个答案:

答案 0 :(得分:1)

删除flush();来电。另外,请确保此代码介于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();   
}

答案 1 :(得分:0)

如果输出尚未开始,您只能通过header()重定向。如果已经存在非标题输出(例如在for循环中),则设置&#34;位置&#34;标题没有效果。

我建议在设置&#34;位置&#34;之前使用headers_sent()。如果某些调试信息或其他内容已经开始输出,则会有一个回退。