1

我有一个执行此操作的表单的文本区域:

<textarea rows="4" name="message"></textarea>

在 PHP 中,当提交表单时,会发生这种情况:

 $text_form = $database -> escape_value($_POST['message']);

然后使用 PHPMailer 作为电子邮件消息的一部分发送:

$message .= '<p style="font-family: Arial, verdana, sans-serif;"><strong>Brief Message</strong>: ' . $text_form . '</p>';

最后在这里,是我上面提到的数据库方法:

public function escape_value($value) {
    if ( $this->real_escape_string_exisits ) {
    if ( $this->magic_quotes_active ) { $value = stripslashes( $value ); }
        $value = mysql_real_escape_string($value);
    } else {
        if (!$this->magic_quotes_active ) { $value = addslashes( $value ); }
    }
    return $value;      
}

上述方法实际上是从 Lynda.com 教程中逐行复制的。

现在在电子邮件上,如果用户在文本字段中点击返回,他会得到这个

这是第一行。现在我将在此处按回车键。\r\n这是新行

为什么要添加 \r\n ?我明白这些是什么意思,但为什么它们会出现?

4

1 回答 1

2

来自PHP 文档

mysql_real_escape_string() 调用 MySQL 的库函数 mysql_real_escape_string,该函数在以下字符前添加反斜杠:\x00、\n、\r、\、'、" 和 \x1a。

因此,您的字符串现在包含两个反斜杠和另外两个字母,而不是换行符。

现在的问题是你$value以后做什么。如果将其插入到 SQL 语句中,则应该是这样;如果您直接将其用于邮件,则它具有文字\r\n而不是回车换行符。

于 2013-01-29T04:31:03.040 回答