2

我试图使用 addlashes 和 mysql_real_escape_string 清理我的 PHP 登录的输入。使用addslashes有效,但mysql_real_escape_string不会。

这是允许我正确登录的示例:

$user = addslashes($_POST['user']);<br/>
$password = addslashes($_POST['password']);

这不会:

$user = mysql_real_escape_string($_POST['user']);<br/>
$password = mysql_real_escape_string($_POST['password']);

此外,我的其他一些字段包含撇号。使用 addlashes 时不会返回任何内容,因为数据库中的条目没有被转义。我想知道使用mysql_real_escape_string是否可以解决这个问题,但我不知道如何。

4

3 回答 3

12

始终使用 mysql_real_escape_string 而不是添加斜杠。确保在运行之前连接到数据库,否则会出错。

于 2011-01-06T23:52:49.447 回答
1

有时用户可能会键入',这个符号但是 sql 将其视为一种不同的方式,让它不允许插入到表中,我们不能限制用户,所以我们使用 MySQL 真正的转义字符串来避免这种错误

注意:如果你实现这个,它应该连接到数据库,否则它不会工作

于 2012-12-03T07:11:22.130 回答
1

mysql_real_escape_string() 不会转义 % 和 _。如果与 LIKE、GRANT 或 REVOKE 结合使用,这些是 MySQL 中的通配符。

最重要的是不要相信用户输入。

因此,使用 htmlspecialchars 和 strip_tags 以获得更好的安全性。

于 2011-04-06T09:30:57.717 回答