检查表单来源的方法

检查表单来源的方法

 

方法一:

 

你可以把处理提交数据的代码写到一个单独的文件里,比如form.php。   
  <?php   
  if   (defined(’INSIDE’))   {//判断是否有定义INSIDE常量   
  //处理表单   
  }   else   {   
  exit(’错误’);   
  }   
  ?>   
    
  然后,在提交表单的那个页面先定义INSIDE这个常量,常量值无所谓   
  define(’INSIDE’,   ’TRUE’);   
    
  接着,判断是否有提交,如果提交,则   
  include   ’form.php’;

 

=======================================================================================

方法二:

 

<?php 
if(PHP_VERSION<’4.1.0’){$_SERVER = $HTTP_SERVER_VARS;} 
if(isset($_SERVER["HTTP_REFERER"])){ 
//针对部分浏览器可能无HTTP_REFERER,所以做这么一个判断 
    $servername=$_SERVER[’SERVER_NAME’]; 
    $sub_from=$_SERVER["HTTP_REFERER"]; 
    $sub_len=strlen($servername); 
    $checkfrom=substr($sub_from,7,$sub_len); 
    if($checkfrom!=$servername) 
    { 
        echo "<script language=’javascript’>window.alert(’数据来源有误,本站不接收站外提交的数据!’);window.opener=self;window.close();</script>"; 
        exit; 
    } 

?> 
    此方法并非绝对安全,因为HTTP_REFERER是可以伪造的,只能是防君子但不能防小人了,但在一般情况下已经够用。

//只允许文件本身提交表单传递值
if('http://'.$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']==$_SERVER['HTTP_REFERER']){
echo '可提交';
}

$_SERVER['SERVER_NAME']:当前服务器名称;

$_SERVER['SERVER_SELF']:当前脚本的完整路径,包括文件名;

$_SERVER['HTTP_REFERER]:保存一个完整的来源URL地址;

 

 

posted @ 2011-11-08 07:01  飞天神鼠  阅读(390)  评论(0编辑  收藏  举报