Php $\u服务器['HTTP\u REFERER']并非始终工作

Php $\u服务器['HTTP\u REFERER']并非始终工作,php,http-referer,Php,Http Referer,我正在使用$\u SERVER['HTTP\u REFERER']筛选页面 让pageb.php过滤用户是否来自pagea.php,尽管$u服务器['HTTP\u REFERER']不可靠 在pagea.php前面有一个像pagea.php?q=10这样的查询字符串之前,它工作得很好。然后,如果用户从pagea.php?q=10转到pageb.php,则pageb.php不会检测到该用户: if($_SERVER['HTTP_REFERER']='http://pagea.php'){ ech

我正在使用$\u SERVER['HTTP\u REFERER']筛选页面

让pageb.php过滤用户是否来自pagea.php,尽管$u服务器['HTTP\u REFERER']不可靠

在pagea.php前面有一个像pagea.php?q=10这样的查询字符串之前,它工作得很好。然后,如果用户从pagea.php?q=10转到pageb.php,则pageb.php不会检测到该用户:

if($_SERVER['HTTP_REFERER']='http://pagea.php'){
 echo 'This user has come from page a';
}else{
 echo 'This user has come from another page';
}
即使前面的查询字符串q=10,我如何检测来自pagea.php的用户?

用于检查字符串是否包含其他字符串:

<?php
if (strpos($_SERVER['HTTP_REFERER'], 'pagea.php') !== false) {
  echo 'from page a';
}

使用比较运算符而不是赋值 如果$\u服务器['HTTP\u REFERER']={


=will be=

如果两个文件都在您的服务器上,为什么不在上次访问的页面上保留一个$\u SESSION变量?下面是关于这个问题的讨论。tl;dr:您不能依赖HTTP\u REFERER:-您想检查您的用户来自您自己的域还是来自其他域?如果严格使用前者,您可以使用sessions跟踪p例如,在您的伪URL代码中,类似于ifstrpos$\u服务器['HTTP\u REFERER'], 'http://pagea.php'==0也许?您确实意识到这是由客户端发送的,它不一定会被发送,也不一定会说实话,对吗?HTTP_REFERER不可靠,可以被操纵,因此如果您的脚本处理敏感信息,这不是一种方法。也可以使用strpos搜索单词/字符一个字符串中的演员。