checksql.php文件:在程序的開頭引用
<?php
function checksql($str){//過濾
$encoding ="utf-8";
$str=trim($str);
$mgl_str="script,iframe,and,execute,update,count,mid,master,truncate,char,create,delete,insert,drop";//需要過濾的單詞
$mgl_array=explode(",",$mgl_str);
if(in_array(strtolower($str),$mgl_array)){//如是單詞的則不要過濾 如值直接等于delete則免過濾
return $str;
}
for($i=0;$i<count($mgl_array);$i++){
$val=$mgl_array[$i];
$len=strlen($val);
$a1=substr($val,0,1);
$new_val="&#".ord($a1).";".substr($val,1,($len-1));
$str = str_ireplace($val,$new_val,$str); //意思就是把script替換成script 其s在html上則會直接顯示出s來,就像 是空格意思
}
//if(!get_magic_quotes_gpc()){
$str=addslashes($str);
//}
$str = str_ireplace("(","(",$str); ‘a(chǎn)scii碼表中的(字符是40
$str = str_ireplace(")",")",$str); ‘a(chǎn)scii碼表中的)字符是41,)則是html的特殊符號,跟 一樣
$str = str_ireplace("`","`",$str);
return $str;
}
function unchecksql($str){//反過濾
$str=trim($str);
$mgl_str="script,iframe,and,execute,update,count,mid,master,truncate,char,create,delete,insert,drop";//需要反過濾的單詞
$mgl_array=explode(",",$mgl_str);
for($i=0;$i<count($mgl_array);$i++){
$val=$mgl_array[$i];
$len=strlen($val);
$a1=substr($val,0,1);
$old_val="&#".ord($a1).";".substr($val,1,($len-1));
$str = str_ireplace($old_val,$val,$str);
}
$str = str_ireplace("(","(",$str);
$str = str_ireplace(")",")",$str);
$str = str_ireplace("`","`",$str);
$str=stripslashes($str);
return $str;
}
function checkvalues($arr){//遍歷過濾數(shù)組
foreach($arr as $k =>$v){
if(is_array($v)){
$arr[$k]=checkvalues($v);
}else{
$arr[$k]=checksql($v);
}
}
return $arr;
}
?>
auto_check.asp文件:在程序的開頭引用
<?php
if(isset($_GET)){
$_GET=checkvalues($_GET);
}
if(isset($_POST)){
$_POST=checkvalues($_POST);
}
if(isset($_REQUEST)){
$_REQUEST=checkvalues($_REQUEST);
}
?>
測試例子:
<?php
//垃圾asp.net 能這樣子動態(tài)注冊數(shù)組么,人個覺得asp.net就是一位很會耍流氓的家伙,他根本就是不讓你一分鐘之前就懂得怎么搞動態(tài)數(shù)組,需要花很長時間你才懂,非常繁瑣
$res["title"]=123456;
$names1=array("name"=>"my2 name is delete","execute"=>"abc execute");
$names[0]=$names1;
$names2=array("name"=>"my2 name isdelete","execute"=>"4521 execute");
$names[1]=$names2;
$res["names"]=$names;
var_dump(checkvalues($arr));
//echo unchecksql("1333333333\' or 1=1 or \' script");
?>