1

我有一个使用 PHP 发送联系邮件的 HTML 表单。

一切顺利,除了来自 textarea 的消息正文,它将使用以下两个函数进行过滤:

1:mysql_real_escape_string()

或者

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这是一封测试邮件。

如果我按原样传递字符串而不进行验证,则效果很好。

这里有什么问题?

谢谢。

4

2 回答 2

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 来验证文本区域。这是一个示例函数:

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

希望这可以帮助!

于 2013-06-27T00:34:16.823 回答
1

好的,我找到了!

逃跑后我这样做了:

str_replace('\r\n', PHP_EOL, $message)

它现在完美无缺。

于 2013-06-27T01:25:33.097 回答