我正在将一些字段输入数据库。一个人的价值为
foto's
当我在$_POST[]
中检查了包含它的地方时
foto\'s
这会自动发生吗?我(还没有)在我的剧本中有任何逃避。
更新:这是正在做的神奇报价。 php.ini文件看起来像这样:
; Magic quotes
;
所以我把它改成了:
; Magic quotes
;
; 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
; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
但是在phpinfo中,这仍然存在:
magic_quotes_gpc On On
答案 0 :(得分:2)
这可能是magic quotes。立即禁用它们 ,然后按照通常的最佳做法正确地逃避用户提供的输入,具体取决于您将使用它做什么。
答案 1 :(得分:0)
关闭魔法引号。
Click Here了解如何将其关闭。
答案 2 :(得分:0)
因为可移植性问题,请务必关闭魔术代码。
下面的PHP代码将对您有用,即使启用了魔术引用(在PHP版本6下面),此代码也能正常工作:
function escape($string) {
if (version_compare(phpversion(), '6', '<')) {
if (get_magic_quotes_gpc())
$string = stripcslashes($string);
}
if (!is_numeric($string))
$string = addslashes($string);
return $string;
}
用法:
$ sql =“INSERT INTO employee(id,name)VALUES(1001,'”.escape($ _ POST ['name'])。“')”;
希望这有帮助。