单引号和双引号断开用户的输入

时间:2013-06-05 15:04:47

标签: php javascript mysql

嘿所以我认为我的问题相当容易,但我似乎无法找到解决问题的正确方法。

我有一个表单,用户想要填写它然后插入到数据库中,以后可以检索它,并且它工作正常,直到测试我使用引号...当使用引号(单或双)时字符串关闭,它只插入字符串的第一部分。

例如,如果他写了#Jeff; Jeff's house",我唯一得到的就是" Jeff \"

是什么给了什么?

2 个答案:

答案 0 :(得分:0)

您遇到的问题是用户可能会使用MySQL injection影响您的数据库。

阅读 PDO Prepared statements ,以避免用户能够使用单/双引号来破坏字符串并将命令直接发送到SQL数据库,从而危及您的数据。

它的工作原理是将字符串与SQL语句分开,这样它就不是数据库指令的一部分。

(使用此系统也意味着您的数据库将能够存储整个字符串,无论引号如何 - 但在存储时,它们将在每个字符串之前有一个斜杠(\)。这些可以在显示数据时删除使用stripslashes命令。)

答案 1 :(得分:0)

使用mysql_escape_string()函数在INSERT查询中使用它之前过滤掉字符串。

如需更多帮助,请参阅此链接http://php.net/manual/en/function.mysql-escape-string.php