我使用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'].'">« Go back.</a>';
// If current page has NOT been called by a hyperlink.
else return;
?>
你能给我任何建议我应该使用哪些PHP函数吗?
答案 0 :(得分:2)
您可以解析$_SERVER['HTTP_REFERER']
的网址并获取主机名&amp;与你自己比较。所以你要找的函数是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']).'">« Go back.</a>';
}
}
同样,由于$_SERVER['HTTP_REFERER']
可以由用户设置,因此最好能够阻止任何XSS。
一个更安全的想法,因为PHP已经处理过,如果他们从您的域进入,将只是使用一些javascript代替链接发送回来。
echo '<a href="Javascript:window.history.back();">« Go back.</a>';