1

重複の可能性:
PHP エラー: ヘッダー情報を変更できません – ヘッダーは既に
送信されています ヘッダーは PHP によって既に送信されています

これは私のコードです:

<html>
<body>
    <?php

    if($country_code == 'US')
    {
        header('Location: http://www.test.com');
    }

    else 
    {
        header('Location: http://www.test.com/');
    }

    ?>

<script language="JavaScript" type="text/javascript"></script>

</body>
</html>

<?php前後にスペースを入れない?>

HTML コードと Javascript を PHP の下にまとめて配置しようとしましたが、ページへのクリックを追跡できなくなります。

4

4 に答える 4

4

ヘッダーの前に何も出力しないでください。ヘッダーは常にコンテンツの前に送信されます。を呼び出す前に何も出力することはできずheader()、それが機能することを期待します。(一部のサーバーでは、問題を回避する出力バッファリングを有効にすることができますが、何も解決されず、依存するのは適切ではありません。)

ページへのクリックの追跡に関するあなたのメモはナンセンスです。ほとんどのブラウザーは、ヘッダー付きの301または302ステータス コードが指定された場合、わざわざ HTML をレンダリングしません。Location:

于 2012-12-16T23:30:55.330 に答える
1

あなたの主な心配がjavascript追跡コードであるなら、私はjavascriptリダイレクトを提案します:

<?php
// pre-html PHP code
?><!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="trackingScript.js"></script>
<script type="text/javascript">
<?php
if($country_code == 'US'){
  echo "document.location.href = 'http://www.test.com/1';";
}else{
  echo "document.location.href = 'http://www.test.com/2';";
}
?>
</script>
</head>
<body></body>
</html>
于 2012-12-16T23:52:05.940 に答える
0

はい、出力の開始後にヘッダーを送信することはできません。このようなもので解決できます

function redirect_to($url){
    // If the headers have been sent, then we cannot send an additional location header
    // so output a javascript redirect statement.
    if (headers_sent()){
       echo "<script>document.location.href='" . htmlspecialchars($url) . "';</script>\n";
    }else{
       header('HTTP/1.1 303 See other');
       header('Location: ' . $url);
    }
 }

 redirect_to('http://www.test.com/');
于 2012-12-16T23:41:21.160 に答える
0

ファイルの先頭に PHP コードを配置できます。

<?php
if($country_code == 'US')
{
    header('Location: http://www.test.com');
}
else 
{
    header('Location: http://www.test.com/');
}

?>
<html>
<body>

<script language="JavaScript" type="text/javascript"></script>

</body>
</html>
于 2012-12-16T23:59:58.330 に答える