1

可能重复:
PHP mysql_real_escape_string() -> stripslashes() 留下多个斜杠

我有一个系统接受用户对调查的输入并将答案保存到 MySQL 数据库。
在将其放入此数据库之前,它会运行它mysql_real_escape_string()以验证它不是对注入不满意。

不幸的是,当我在文本框中将此内容输出给我的客户时(就像输入一样)引号单引号/ \......所有都被转义了 - 我知道我知道我要求它,但我不能像这样给出产品 - 怎么办我颠倒了这些,而不会丢失人们输入的“2\3, 1\2”......类似的东西。

有没有更好的消毒方法?

4

2 回答 2

2

有一种更好的方法可以确保您的输入得到净化。根本不要逃避,而是使用PDO 的准备好的查询

于 2012-10-22T02:05:55.553 回答
0

如果你的 MySQL 字符串有类似的东西myfield="Stafford\'s webhost sucks",MySQL 知道反斜杠是作为转义字符而不是反斜杠,除非它是双转义的。

如果您在数据库中看到应该是转义字符的反斜杠,则意味着您的字符串被转义了多次。这可能在您的代码中,或者在您的情况下,打开了已弃用的魔术引号功能。魔术引号可以通过 php.ini 关闭:https ://stackoverflow.com/a/1201003/281469

于 2012-10-22T02:50:59.083 回答