2013-06-27 41 views
1

我有一個用PHP發送聯繫郵件的HTML表單。換行符顯示爲電子郵件中的普通文本

一切順利除外來自一個textarea該消息,這將與這兩個功能被過濾的主體:

1:mysql_real_escape_string()

OR

2:

function clean_data($input) { 

      $input = trim(htmlentities(strip_tags($input,","))); 

      if (get_magic_quotes_gpc()) 

       $input = stripslashes($input); 

      $input = mysql_real_escape_string($input); 

      return $input; 

     } 

當我把一些換行,將其轉換爲真正的可見\ r \ n

而不是顯示這一點:

你好,

這是一個測試郵件。

它顯示了這一點:

您好,\ r \ n \ r \ n這是一個測試郵件。

如果我沒有驗證就按原樣傳遞字符串,那麼效果很好。

這裏有什麼問題?

謝謝。

+1

'get_magic_quotes_gpc()'應該_never_評估爲'true'。魔法語錄不好,我想你只是發現了原因。 http://www.php.net/manual/en/security.magicquotes.whynot.php – Halcyon

回答

1

好的我發現了!

後逃逸我這樣做:

str_replace函數( '\ r \ n',PHP_EOL,$消息)

和現在的工作非常完美。

2

mysql_real_escape_string

逃逸的unescaped_string特殊字符,並考慮到 佔當前字符集的連接,使其安全 將其放置用於mysql_query()。如果要插入二進制數據,則必須使用此功能。

mysql_real_escape_string()調用MySQL的庫函數 mysql_real_escape_string,其中前添加反斜槓以下 字符:\ X00,\ n,\ r,\,」,「和\ X1A

此功能必須始終(除少數例外)被用來發送一個查詢到MySQL之前,使數據 安全。

你需要在插入mysql_real_escape_string唯一的處理,但最好是使用或許與PDO或MDB2準備語句。

也就是說,你可以使用mysql_real_escape_string來驗證textareas。這裏有一個示例功能:

function validateContent($txtInput) 
{ 
    if(isset($_REQUEST[$txtInput])) 
    { 
    $txtInput = $_REQUEST[$txtInput]; 
    } 
return mysql_real_escape_string(trim($txtInput)); 
} 

希望這有助於!

+0

感謝您的回覆,但這仍然會遇到同樣的問題「您好,\ r \ n \ r \ n這是一封測試郵件。」 – medk

相關問題