php表单数据过滤详解 php过滤html代码

php自定义一个函数用来过滤表单的 。。比如说filter($_POST);调用filter函数的时function filter($array){
foreach($array as $k=$v){
$array[$k]=htmlspecialchars(strip_tags($v));
$array[$k]=eregi('select|insert|update|delete|\'|\/\*|\*|\.\.\/|\.\/|union|into|load_file|outfile',$array[$k];
}
}
高分求php表单过滤代码 。要防止sql注入,过滤表单输入固然重要,但还需要从其他方面一起入手
屏蔽用户输入特殊字符的实质是,禁止用户利用程序漏洞拼装出一些我们不想让用户执行的SQL
例如:
$sql = "SELECT * FROM table WHERE user='$_POST['user']' AND password='$_POST['pwd']'";
用户输入
$_POST['user'] = 'john';
$_POST['pwd'] = "' OR ''='";
要么实际执行的sql就是
SELECT * FROM table WHERE user='john' AND password='' OR ''=''
所以我们要对用户的输入做出处理 , 避免这种情况的发生
对于表单输入,必要的过滤是需要的,对于每一个输入可以写一个function来筛一下
例如:
$user_name = clean($_POST['user']);
function clean($v){
if (get_magic_quotes_gpc()){
$v = stripslashes($v);
}
//转义字符串中的特殊字符
$v = mysql_real_escape_string($v);
return $v;
}
至于内容中包含一些sql的关键字,其实不用太过紧张,但是在sql语句中必须处理
例如:
INSERT INTO table VALUES ('xxx', 'xxx', 'xxx')
要保证每个值都被单引号包起来
SELECT,UPDATE,DELETE中的WHERE条件也是如此,但凡以用户输入的部分作为参数的 , 都得用单引号括起来,这样就能有效防止sql注入
php中数据过滤的问题我来解释一下吧
preg_replace('/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F]/','',$string);
去掉控制字符,你google一下ascii table就知道了,php里面 - 代表范围,比如\x00-\x08指的是ASCII代码在\x00到\x08范围的字符,\x0A和\x0D代表回车换行,所以没包含在这个里面,否则直接\x00-\x1F了,
$string = str_replace(array("\0","

    推荐阅读