我试图使用addslashes和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']);
另外,我的其他一些字段包含撇号。使用addslashes时不返回任何内容,因为数据库中的条目不会被转义。我想知道是否使用mysql_real_escape_string
可以解决这个问题,但我不知道如何解决。
答案 0 :(得分:12)
始终使用mysql_real_escape_string而不是addslashes。确保在>>运行之前已连接到数据库,否则您将出错。
答案 1 :(得分:1)
mysql_real_escape_string()不会转义%和_。如果与LIKE,GRANT或REVOKE结合使用,这些是MySQL中的通配符。
最重要的是不要信任用户输入。
因此,使用htmlspecialchars和strip_tags可以提高安全性。
答案 2 :(得分:1)
有时用户可能会输入'
,这个符号但是sql以不同的方式处理并且不允许插入表中,我们不能限制用户以便我们使用MySQL真正的转义字符串来避免这种情况错误
注意:如果你实现它,它应该连接到数据库,否则它将无法正常工作