我为我的网站创建了一个使用phphphttp_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函数吗?

最佳答案

您可以解析$_SERVER['HTTP_REFERER']中的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停止任何xs是一个好主意。
如果是从您的域中输入的,php处理的一个更安全的想法是使用一些javascript代替链接将它们发送回来。
echo '<a href="Javascript:window.history.back();">&laquo; Go back.</a>';

09-10 05:10
查看更多