2009-07-24 72 views
1

我的php應用程序使用stripslashes()來處理magic_quotes,但我只希望它刪除magic_quotes放入的斜線,因爲用戶被允許提供\他的輸入。使用stripslashes()區別

回答

8

stripslashes不會隨意刪除斜槓。

如果魔術引號是,那麼它會逃避斜線,與'\\'更換'\'stripslashes應該撤銷魔術引號正確地轉義,與'\'更換'\\'讓你回來了用戶輸入的內容。

我想你可能只是想是這樣的:

// Ripped from the PHP manual (http://us3.php.net/manual/en/function.get-magic-quotes-gpc.php) 
if (get_magic_quotes_gpc()) { 
    $lastname = stripslashes($_POST['lastname']); 
} 
else { 
    $lastname = $_POST['lastname']; 
} 

在代碼$lastname結束不應該有除了那些用戶輸入的任何斜槓。

另一方面,魔術引號是一個安全問題,在新版本的PHP中已棄用(請參閱the docs)。

-1

嘗試滾動自己的編碼/解碼功能,像這樣:

function doEncode($string){ 
    return addslashes(str_replace("\","\\",$string)); 
} 

function doDecode($string){ 
    return str_replace("\\","\",stripslashes($string)); 
} 
2

使用magic_quotes_gpc的是一個壞主意,無論如何,它的正式棄用的5.3和爲PHP 5.5的。更重要的是(並且立即),它鼓勵安全性較差,因爲它並不是真正的做的任何有用的事情都無法通過mysql_real_escape_string或預處理語句或存儲過程來完成。

如果你可以擺脫它,請做...