mysql_escape_string整个帖子数组?

时间:2011-01-12 04:31:48

标签: php mysql sql sql-injection

我想知道是否可以只使用my_sql_escape字符串整个$ _POST和$ _GET数组,这样你就不会错过任何变量?

不确定如何测试它或我自己。谢谢!

4 个答案:

答案 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整个