有些字符会自动转义吗?

时间:2012-09-28 09:34:47

标签: php

我正在将一些字段输入数据库。一个人的价值为

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

3 个答案:

答案 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'])。“')”;

希望这有帮助。

相关问题