2012-01-16 84 views
0

我經常使用類似的表單,並且剛剛意識到,無論何時將單個雙引號輸入到表單中,輸出給我的輸出(通過電子郵件)都會將引號顯示爲ASCII代碼如此\ '帶有反斜槓循環查看和浸入到獨特的字符編碼specialentities,但似乎無法找到任何有助於輸出它作爲一個正常的引號。來自引號輸出的PHP

+2

你能在這裏粘貼你的代碼嗎?我認爲這可能有助於更快地解決問題。 – 2012-01-16 15:18:47

+0

您是否檢查過系統中魔術引號的設置? http://php.net/manual/en/security.magicquotes.php – Mchl 2012-01-16 15:19:30

回答

0

這是從PHP的舊的安全功能,稱爲「魔術引號」。來自GET和POST變量的所有引號都用反斜槓進行轉義。

您可以通過在服務器php.ini中將magic_quotes_gpc的值更改爲off來禁用它,或使用stripslashes($string)手動清理字符串。

+0

嘿,那裏謝謝你我使用stripslashes($ _ POST ['comment']);而不是添加filter_sanitize_string – user966834 2012-01-17 09:22:23

+0

但請記住,您的腳本現在取決於'magic_quotes_gpc'開啓。此功能標記爲DEPRECATED,可能會在未來的PHP版本中刪除。 – DerVO 2012-01-17 09:39:17

1

它是magic_quotes_gpc長期不贊成使用的古代PHP設置。
只需關閉它

+0

ok ive在php.ini中關閉了這個功能,但仍然有相同的問題 – user966834 2012-01-17 09:11:44

+0

確保你已經編輯了正確的php.ini文件。然後重新啓動服務器 – 2012-01-17 09:19:58

0

您使用的是哪個版本的PHP?這聽起來像你可能已經啓用了魔術引號,一個不贊成使用的「功能」會自動將反斜槓添加到$_GET$_POST中的引號中。現在使用它被認爲是不好的做法,所以你應該確保它被禁用。請參閱this頁面瞭解如何檢查它是否已啓用並禁用它。

一般來說,如果你有一個帶有轉義引號的字符串,你可以使用stripslashes來擺脫它們。

$str = "\'hello\'"; 
echo $str . "\n"; 
//\'hello\' 
echo stripslashes($str) . "\n"; 
//hello