.PHP中的$_SERVER["HTTP_REFERER"]

 

下面是PHP手册中的官方解释:
“HTTP_REFERER”

链接到当前页面的前一页面的 URL 地址。不是所有的用户代理(浏览器)都会设置这个变量,而且有的还可以手工修改 HTTP_REFERER。因此,这个变量不总是真实正确的。

 

总结:只有点击超链接(即) 打开的页面才有HTTP_REFERER环境变量, 其它如 window.open()、 window.location=...、window.showModelessDialog()等打开的窗口都没有HTTP_REFERER 环境变量。

$_SESSION['HTTP_REFERER']   =   isset($_SESSION["BACKURL"])   ?   $_SESSION["BACKURL"]   :   "";  

  $_SESSION["BACKURL"]   =   "http://";.$_SERVER['HTTP_HOST'].$_SERVER["PATH_INFO"].(isset($_SERVER['QUERY_STRING'])   ?   "?".$_SERVER['QUERY_STRING']   :   "");  

      在每个页面里加入这样子的语句,进行防盗连。  

     

  /*    

    *   功能:检测页面是否合法连接过来  

    *   如果为非法,就转向到登陆窗口  

    */  

  function   checkurl(){  

  //如果直接从浏览器连接到页面,就连接到登陆窗口  

  //echo   "referer:".$_SESSION['HTTP_REFERER'];  

  if(!isset($_SESSION['HTTP_REFERER']))   {  

  header("location:   index.php");  

  exit;  

  }  

  $urlar   =   parse_url($_SESSION['HTTP_REFERER']);  

  //如果页面的域名不是服务器域名,就连接到登陆窗口  

  if($_SERVER['HTTP_HOST']   !=   $urlar["host"]   &&   $urlar["host"]   !=   "10.1.1.1"   &&   $urlar["host"]   !=   "www.pyhosp.com")   {  

  header("location:   index.php");  

  exit;  

  }    

  }  

你可能感兴趣的:(PHP)