Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查HTTP_REFERER是否包含字符串,但不完全匹配?_Php - Fatal编程技术网

Php 如何检查HTTP_REFERER是否包含字符串,但不完全匹配?

Php 如何检查HTTP_REFERER是否包含字符串,但不完全匹配?,php,Php,我知道HTTP_REFERER作为一种安全措施是不安全的,但我仍然想知道 我如何检查HTTP_REFERER的值是否包含www.someexample.com,即使它可能是www.someexample.com/awards/user/145???如果使用Apache,只需在$\u服务器['HTTP_REFERER']上执行 if (false !== stripos($_SERVER['HTTP_REFERER'], "www.someexample.com")){ //do stuff

我知道HTTP_REFERER作为一种安全措施是不安全的,但我仍然想知道


我如何检查HTTP_REFERER的值是否包含www.someexample.com,即使它可能是www.someexample.com/awards/user/145???

如果使用Apache,只需在$\u服务器['HTTP_REFERER']上执行

if (false !== stripos($_SERVER['HTTP_REFERER'], "www.someexample.com")){
   //do stuff
}
if( stripos($_server['HTTP_REFERER'], 'someexample.com') !== FALSE ) {
     // The link is from someexample.com (might not have "www" in it)
}
注意:这也将匹配
http://www.andsomeexample.com
。如果要防止出现这种情况,请使用:


使其不区分大小写以使其更可靠。HTTP_REFERER=www.someotherexample.com?param=www.someexample.com=)@Fivell:因此,在这种情况下,preg_match是必要的。但我不认为会发生这种情况,因为如果(出于某种原因)字符串位于referer字段的开头,parse_url is buildin函数将失败-stripos将返回0,这将计算为false。HTTP_referer=www.someotherexample.com?param=www.someexample.com=)
if( parse_url($_SERVER['HTTP_REFERER'])['host'] == 'someexample.com'){
    // You're good to go...
}
echo parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);