Php 仅为自己的网站启用http_referer反向链接

Php 仅为自己的网站启用http_referer反向链接,php,hyperlink,back,http-referer,Php,Hyperlink,Back,Http Referer,我使用PHP http_referer为我的网站创建了一个反向链接。它基本上可以工作,但我想启用它,只有当引用是一个与我的域页面。我曾想过比较引用页面和当前页面中的字符串,但我没有发现它是如何工作的 这是我的代码: <?php // Back link to previous page. // If current page has been called by a hyperlink. if(isset($_SERVER['HTTP_REFERER']) &am

我使用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函数吗?

你可以从
$\u服务器['HTTP\u REFERER']
解析url并获取主机名并与自己的进行比较。因此,您需要的功能是:

if(!empty($\u服务器['HTTP\u REFERER']))
{
如果(解析url($服务器['HTTP\U引用器',PHP\U url\U主机)==$服务器['HTTP\U主机])
{
回声';
}
}
另外,由于用户可以设置
$\u服务器['HTTP\u REFERER']
,因此最好停止任何XSS

PHP处理的一个更安全的想法是,如果他们从您的域中输入,只需使用一些javascript来代替链接将他们发送回


echo'

谢谢你,劳伦斯!你的回答很有帮助。我以前试过解析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>';
    }
}