可能重复:
PHP,你为什么逃避我的报价?
例如,如果我在输入字段中输入文本,然后尝试使用 PHP mysqli Prepared Statements 将其显示或保存到 MySQL,我会在单引号之前得到一个额外的反斜杠。
$name = $_POST['name'];
echo "name=($name)";
这个输出:不要,我也得到这个额外的反斜杠存储在 MySQL 中。
我怎样才能避免这种情况并且仍然能够输入反斜杠?
问候, 马格努斯·斯特兰德
可能重复:
PHP,你为什么逃避我的报价?
例如,如果我在输入字段中输入文本,然后尝试使用 PHP mysqli Prepared Statements 将其显示或保存到 MySQL,我会在单引号之前得到一个额外的反斜杠。
$name = $_POST['name'];
echo "name=($name)";
这个输出:不要,我也得到这个额外的反斜杠存储在 MySQL 中。
我怎样才能避免这种情况并且仍然能够输入反斜杠?
问候, 马格努斯·斯特兰德
使用stripslashes,
echo stripslashes("Who\'s Kai Jim?"); //Who's Kai Jim?
打开您的 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."