2012-09-28 56 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

相關問題