如何仅从 $_SERVER['HTTP_REFERER']; 中选择根域?



我想要一个404页面,它可以检测用户是否通过我的网站、我缩短的URL或其他网站访问该页面,我正在使用PHP制作它。我正在慢慢掌握PHP,这可能是一个简单的问题,但老实说,我很累,我的系统中没有咖啡因,我想尽快解决我投资组合中的任何问题。

我发现$_SERVER['HTTP_REFERER'];PHP变量为我提供了整个URL,这是一个开始。有没有一种方法可以通过另一个变量或函数只给我根域,记住一些引用者可能使用http://和https://(所以简单地从第七个字符开始并不总是有效的)?这样,我就可以根据两个(或多个)预定义的地址匹配URL,并生成与该域相关的内容。

parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)

请参阅http://php.net/manual/en/function.parse-url.php.

不过要注意的是,裁判很容易被恶搞,所以很难可靠。

http://php.net/manual/en/function.parse-url.php可能是你最好的选择,尽管你也可以使用正则表达式来轻松地实现你想要的。

不要使用regexp或parse_url,因为它会消耗大量资源--最好使用

trim(substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], '/')+2), '/')

或者如果referrer的末尾总是有一个斜杠:

substr($_SERVER['HTTP_REFERER'], strpos($_SERVER['HTTP_REFERER'], '/')+2, -1)

这应该做:

 $_SERVER['SERVER_NAME']

最新更新