我想过滤掉,URL中的危险字符以及用户在表单中输入的危险字符
下面是我用的过滤表单输入的函数
本意是过滤用户输入的危险字符和过滤HTML格式
请问,对不我用这个函数过滤时,用户输入的内容,比如空格类的全没有了,就是没有格式了请问这是什么原因? //过滤注射以及HTML字符
function htmldecode($str){
if(empty($str)) return;
if($str=="") return $str;
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br />",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
return $str;
}
下面是我用的过滤表单输入的函数
本意是过滤用户输入的危险字符和过滤HTML格式
请问,对不我用这个函数过滤时,用户输入的内容,比如空格类的全没有了,就是没有格式了请问这是什么原因? //过滤注射以及HTML字符
function htmldecode($str){
if(empty($str)) return;
if($str=="") return $str;
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(" ",chr(32),$str);
$str=str_replace(" ",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br />",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
return $str;
}
也好让我明白
难道PHP用了这个函数
就不用过滤了么比如注入之类的
mysql_real_escape_string("用户输入字符串")
防止注入的话,用urlencode先过滤一遍,然后在数据库查询时使用bindParam的方式来传递参数(请参看PHP手册),基本上就可以了。
if (!get_magic_quotes_gpc())
{
if (!empty($_GET))
{
$_GET = addslashes_deep($_GET);
}
if (!empty($_POST))
{
$_POST = addslashes_deep($_POST);
} $_COOKIE = addslashes_deep($_COOKIE);
$_REQUEST = addslashes_deep($_REQUEST);
}
function unhtml($content)
{
$content=htmlspecialchars($content);
$content=str_replace(chr(13),"<br>",$content);
$content=str_replace(chr(32)," ",$content);
return $content;
}
?>
如果不足够的话,请问怎么修改?//www.zzcms.com
//过滤POST和GET传递值
function check_str(){
//过滤以GET传递的信息
foreach($_Get as $str_row=>$str){
if(is_numeric($str)){
return intval($str);
}else{
return check_safe_str($str);
}
}
//过滤以POST传递的信息
foreach($_POST as $str_row=>$str){
if(is_numeric($str)){
return intval($str);
}else{
return check_safe_str($str);
}
}
}//过滤安全字符
function check_safe_str($str){
if (!get_magic_quotes_gpc()) {
return addslashes($str);
}
return $str;
}
如果不足够的话,请问怎么修改? //www.zzcms.com
//过滤POST和GET传递值
function check_str(){
//过滤以GET传递的信息
foreach($_Get as $str_row=>$str){
if(is_numeric($str)){
return intval($str);
}else{
return check_safe_str($str);
}
}
//过滤以POST传递的信息
foreach($_POST as $str_row=>$str){
if(is_numeric($str)){
return intval($str);
}else{
return check_safe_str($str);
}
}
}//过滤安全字符
function check_safe_str($str){
if (!get_magic_quotes_gpc()) {
return addslashes($str);
}
return $str;
}