我想知道是否可以只使用my_sql_escape字符串整个$ _POST和$ _GET数组,这样你就不会错过任何变量?
不确定如何测试它或我自己。谢谢!
答案 0 :(得分:11)
我会使用array_walk()
函数。它更适合,因为修改了POST超全局,因此任何未来的使用都会被消毒。
array_walk_recursive( $_POST, 'mysql_real_escape_string' );
但是,请确保您不依赖此行来完全保护您的数据库免受攻击。最好的保护是限制某些字段的字符集。防爆。电子邮件中没有引号(所以只允许字母,数字,@,破折号等),名称中没有括号(所以只允许使用字母和选定的特殊字符)
编辑:感谢@ Johan的建议,将array_walk()
更改为array_walk_recursive()
。道具给他。
答案 1 :(得分:5)
$escaped_POST = array_map('mysql_real_escape_string', $_POST);
但是,我建议改为使用MySQLi。
答案 2 :(得分:2)
你可以使用
foreach(array_keys($_POST) as $key)
{
$clean[$key] = mysql_real_escape_string($_POST[$key]);
}
在此之后访问帖子数据时使用echo $clean['name'];
答案 3 :(得分:1)
试试这个
foreach(array_keys($_GET) as $key){ $_GET[$key] = mysql_real_escape_string($_GET[$key]);}
foreach(array_keys($_POST) as $key){ $_POST[$key] = mysql_real_escape_string($_POST[$key]);}
到mysql_real_escape_string整个