我在看研究源码时的一点疑问,首先有这样一个函数
function SubmitCheck($var = ""){
if (empty($_POST)){
return false;
} if($_SERVER['REQUEST_METHOD'] == 'POST' && (empty($_SERVER['HTTP_REFERER']) ||
preg_replace("/https?:\/\/([^\:\/]+).*/i", "\\1", $_SERVER['HTTP_REFERER']) == preg_replace("/([^\:]+).*/", "\\1", $_SERVER['HTTP_HOST']))){
return true;
}
else{
return false;
}
}
这个函数是干嘛的,简单回答一下 谢谢了 
还有,这个函数的返回值是布尔型的,但为什么我在下文确发现这样一个调用:submitcheck('islogin') == 'yes' ,而且是可以运行的

解决方案 »

  1.   

    先弄清楚empty,preg_replac这两个PHP函数,以及$_SERVER['REQUEST_METHOD'],$_SERVER['HTTP_REFERER']这两个服务器变量的作用你大概就可以看得懂这段代码了。。
    如果submitcheck('islogin') == 'yes'是可以运行的,有些邪乎你换成submitcheck('islogin') === 'yes'是否还可以运行?
      

  2.   

    SubmitCheck是在察看通过POST的传送内容非空,而且访问的来源是本服务器(程序的运行服务器),
    那么,函数结果返回true,否则返回false——也就是一个防止盗链的功能。虽然函数的返回值是布尔型,但是,PHP引擎在编译的时候都是以复合型看的,所以,submitcheck('islogin') == 'yes'可以运行,但是,应该无法达到预期效果的。