3

ウェブサイトの PHP http_referer を使用してバック リンクを作成しました。基本的には機能しますが、リファラーが私のドメインのページである場合にのみ有効にしたいと思います。参照ページと現在のページの文字列を比較することを考えましたが、どのように機能するかわかりませんでした。

これは私のコードです:

    <?php // Back link to previous page.

    // If current page has been called by a hyperlink.
    if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] !='') echo '<a href="'.$_SERVER['HTTP_REFERER'].'">&laquo; Go back.</a>';

    // If current page has NOT been called by a hyperlink.
    else return;
    ?>

どのPHP関数を使用すればよいかアドバイスをいただけますか?

4

1 に答える 1

2

URL を解析し$_SERVER['HTTP_REFERER']てホスト名を取得し、それを自分のものと比較することができます。したがって、探している関数はparse_url()です。

if(!empty($_SERVER['HTTP_REFERER']))
{
    if(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) == $_SERVER['HTTP_HOST'])
    {
        echo '<a href="'.htmlentities($_SERVER['HTTP_REFERER']).'">&laquo; Go back.</a>';
    }
}

また$_SERVER['HTTP_REFERER']、ユーザーが設定できるように、htmlentities で XSS を停止することをお勧めします。

彼らがあなたのドメインから入ってきた場合、PHPが処理したより安全なアイデアは、リンクの代わりにjavascriptを使用してそれらを送り返すことです.

echo '<a href="Javascript:window.history.back();">&laquo; Go back.</a>';

于 2012-09-27T23:44:05.667 に答える