2010-11-19 52 views
4

,所以我有一個你可以輸入的字段。輸入完成後按ok,它會發送一個ajax調用save.php,它插入到數據庫中(用php)然後輸出你輸入的內容。然後阿賈克斯呼籲成功抓住輸出併發出警報(success: function(msg){ alert(msg) })。響應是在html中。'」原來是'和「

工程良好,直到我在該領域使用'"。例如,如果我寫:'asdadsasd"事實證明:\'asdadsasd\"我該如何解決這個問題?

不知道,如果它的事項,但在save.php我:

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
header('Content-type: text/html; charset=utf-8'); 

,並將其輸出的消息是這樣的:

echo htmlspecialchars(strip_tags($message), ENT_QUOTES, 'utf-8'); 
+2

錯誤配置的PHP,尋找'magic_quotes_gpc'在php.ini – mario 2010-11-19 09:34:49

回答

1

嘗試調用它stripslashes。我認爲它通過ajax發佈/發送時會添加斜槓。

2

這很可能是由於PHP的異常 有幫助 惱人"magic quotes"功能。在用戶代理(即$_GET,$_POST,$_COOKIE$_COOKIE,或「GPC」)提供的輸入數據中,單引號和雙引號會自動插入斜線,模糊地嘗試爲未意識到危險的人員提供某種安全未轉義的用戶輸入。

在嘗試使用任何GPC數據之前,您應該始終使用使用get_magic_quotes_gpc檢查魔術引號。如果已啓用,請在使用前在您的輸入上撥打stripslashes

我用類似這樣的事情在任何腳本的開頭我寫:

function cleanInput($input) 
{ 
    if (is_array($input)) 
    { 
     foreach ($input as &$value) 
     { 
      $value = cleanInput($value); 
     } 

     return $input; 
    } 
    else 
    { 
     return stripslashes($input); 
    } 
} 

if (get_magic_quotes_gpc()) 
{ 
    $_GET = cleanInput($_GET); 
    $_POST = cleanInput($_POST); 
    $_COOKIE = cleanInput($_COOKIE); 
    $_REQUEST = cleanInput($_REQUEST); 
} 
+0

我試過這個:$ response =((get_magic_quotes_gpc())?stripslashes($ _ POST ['comment']):$ _POST ['comment']);它仍然給我:' " " – Karem 2010-11-19 09:53:43

1

使用的stripslashes