7
4

3 回答 3

2

Appart 从你提到的mysql_real_escape_string()函数应该可以很好地清除 SQL 注入。

您只需要使用适当的转义函数正确转义任何用户输入,如果您将其描绘为处理此用户输入的链式处理块,您将知道按哪个顺序(从最后到第一个)以及要转义/取消转义的内容以及何时,并且就确保输入干净而言,您应该没问题(验证是一个不同的问题)。

而且,您似乎已经知道, PDO 上的quote()Mysqli prepare()是一种更好的方法。

于 2012-08-20T15:08:29.627 回答
1
function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return mysql_real_escape_string($str);
}

然后:

$word = clean($_POST['whatever post']);

然后修剪词和你的好去。这个 php 函数的作用是获取所有文字并将它们转换为字符串,因此没有人可以说删除您的数据库等

于 2012-08-20T15:03:56.357 回答
1

试试这个使用mysql_real_escape_string()

$word = '2*3%5_1^0';

$query = 'SELECT * FROM TABLE_NAME WHERE field REGEXP "(.*)[[:<:]]'.mysql_real_escape_string($word).'[[:>:]](.*)" ';
于 2012-08-17T11:30:14.027 回答