1

可能重复:
PHP,你为什么逃避我的报价?

例如,如果我在输入字段中输入文本,然后尝试使用 PHP mysqli Prepared Statements 将其显示或保存到 MySQL,我会在单引号之前得到一个额外的反斜杠。

$name = $_POST['name'];
echo "name=($name)";

这个输出:不要,我也得到这个额外的反斜杠存储在 MySQL 中。

我怎样才能避免这种情况并且仍然能够输入反斜杠?

问候, 马格努斯·斯特兰德

4

2 回答 2

4

使用stripslashes,

echo stripslashes("Who\'s Kai Jim?"); //Who's Kai Jim?
于 2012-09-21T13:07:20.023 回答
1

打开您的 php.ini 文件并转到第 460 行(几乎)并关闭魔术引号。喜欢

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

保持魔术引号关闭是开始应用程序安全性的好方法。魔术引号本质上是坏的。它们旨在清理对 PHP 脚本的输入,但在不知道如何使用该输入的情况下,不可能正确清理。

关于魔术引号的 PHP 手册页同意:

"This feature has been DEPRECATED as of PHP 5.3.0 and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged. Magic Quotes is a process that automagically escapes incoming data to the PHP script. It's preferred to code with magic quotes off and to instead escape the data at runtime, as needed."
于 2012-09-21T13:09:23.160 回答