2012-09-28 36 views
0

我正在输入一些字段到数据库中。人们不得不的有些字符是否自动转义?

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

是的,现在'mysql_query()'或'mysqli_query()'会被转义。 :) –

+0

可能'magic_quotes_gpc'已启用? – tradyblix

回答

2

这可能magic quotes是行动。立即禁用它们然后按照通常的最佳做法正确地转义用户提供的输入,具体取决于您将要使用的输入。

+0

更新了我的问题,谢谢。 – Veltar

+0

@Veltar:你重新启动了网络服务器吗? – Jon

+0

我不知道,非常感谢! – Veltar

0

Trun 魔术引号 off。

Click Here看看如何关闭它。

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

希望这会有所帮助。

+0

-1,因为这太简单了:'addslashes'不能保护你免受SQL注入的影响。在SO上有很多答案解释了如何正确地做到这一点(并且在任何情况下他们都需要做一些特定于数据库的事情)。 – Jon

相关问题