php 如何从$_SERVER ['HTTP_REFER']中只选择根域;?

odopli94  于 2023-02-07  发布在  PHP
关注(0)|答案(4)|浏览(108)

我想有一个404页面,可以检测用户是否通过我的网站,通过我的缩短网址或通过另一个网站来到该页面,我正在使用PHP。我正在慢慢掌握PHP,这很可能是一个简单的问题,但我很累,老实说,没有咖啡因在我的系统,我想尽快了结我投资组合中的任何遗留问题。
我发现$_SERVER['HTTP_REFERER']; PHP变量给了我完整的URL,这是一个开始。有没有一种方法可以只给我根域,通过另一个变量或函数,记住,一些引用可能使用http://和一些https://(所以简单地从第七个字符开始并不总是工作)?这样,我可以匹配的URL基于两个(或更多)预定义的地址,并产生与该域相关的内容。

xytpbqjk

xytpbqjk1#

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

参见http://php.net/manual/en/function.parse-url.php
不过请注意,推荐人非常容易被欺骗,所以它几乎不可靠。

bkhjykvo

bkhjykvo2#

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

t9aqgxwy

t9aqgxwy3#

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

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

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

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

a6b3iqyw4#

这应做到:

$_SERVER['SERVER_NAME']

相关问题