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","
推荐阅读
- 哔哩哔哩怎么安装html5,哔哩哔哩怎么安装到电脑桌面
- 游戏开发物语新内容,游戏开发物语内容解锁
- 直播比赛用什么网,直播用哪种网络
- linux传递文件命令 linux传文件的命令
- net4.7无法安装,无法安装net46
- thinkphp全局类,php全局函数
- oracle排序怎么设置 oracle排序在哪个区域完成
- linux清空命令面板,linux清空命令行
- 江湖角色扮演单机游戏,江湖剧情游戏