0

このサイトで質問するのは初めてなので、よろしくお願いします。インターネット接続速度をテストするための別の Web サイトからスクリプトを取得し、if else ステートメントを追加しました。速度が 500 を超えると、特定のページにリダイレクトされます。何らかの理由で、私はそれを機能させることができません。ob_start();タグの前にを追加し、タグの後に<html>も追加しました。body タグの間に以下のコードを追加しました。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();ます。また、このコードが前後ではなく と の間にあることを確認してください (また、このコードの前には他に何も出力されません) 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 ループなど)、"Location" ヘッダーを設定しても効果はありません。

「Location」ヘッダーを設定する前に使用することをお勧めしheaders_sent()ます。また、デバッグ情報または何かがすでに出力を開始している場合に備えて、フォールバックを用意してください。

于 2012-04-10T17:34:29.880 に答える