2013-06-27 42 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

相关问题