我想要一个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']