【问题标题】:linebreak characters show as normal text in email换行符在电子邮件中显示为普通文本
【发布时间】:2013-06-24 07:55:25
【问题描述】:

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

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

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

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

这里有什么问题?

谢谢。

【问题讨论】:

标签: php validation email


【解决方案1】:

mysql_real_escape_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));
}

希望这会有所帮助!

【讨论】:

  • 感谢您的回复,但仍然遇到同样的问题“您好,\r\n\r\n这是一封测试邮件。”
【解决方案2】:

好的,我找到了!

逃跑后我这样做了:

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

现在可以完美运行了。

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-25
    相关资源
    最近更新 更多