0

誰かがこのコードを調べてください。/iこの大文字と小文字を区別しないようにするために使用できることを認識しています。しかし、私はそうではありませんが、間違いなく $user_agent が設定されている訪問者をまだ獲得していますが、これをすり抜けて、その理由を理解できません。

<?php
$user = $_SERVER['HTTP_USER_AGENT'];
if(preg_match("/android|linux|windows|Android|Linux|Windows/",$user))  {
header("Refresh:0;url=http://site.com/page.php/");
};
?>

<?php
$referrer = $_SERVER['HTTP_REFERER'];
if(preg_match("/term-one|term-two|term-three/",$referrer))  {
header("Refresh:0;url=http://site.com/page.php/");
exit;
}
?>
4

1 に答える 1

0

exit;最初のheader()電話の後、明細書がありません。それでも機能しているように見えることが多いが、コードは引き続き実行され、コードの後半でRefreshヘッダーが再設定された場合、最初のリダイレクトは発生しません。

また、ページの読み込みが完了した後に更新が行われるため、欠落しているexitということは、コンテンツ (おそらく Google アナリティクス コードを含む) を読み込み続けることを意味し、最終的に正しいページに更新されたとしても、それらは記録されます。このページを最初に読み込んだとして、Google アナリティクスによって。

ところで、なぜリダイレクトRefreshにヘッダーではなくヘッダーを使用しているのですか?Location

私の推奨コードは次のとおりです。

<?php
    $user = $_SERVER['HTTP_USER_AGENT'];
    if (preg_match("/android|linux|windows/i", $user)) {
        header("Location: http://site.com/page.php");
        exit;
    }
    $referrer = $_SERVER['HTTP_REFERER'];
    if (preg_match("/term-one|term-two|term-three/", $referrer))  {
        header("Location: http://site.com/page.php");
        exit;
    }
?>
于 2013-06-06T21:58:27.333 に答える