我有一个表单中的文本区域:
<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?我明白这些是什么意思,但为什么会出现呢?
答案 0 :(得分:1)
来自PHP docs:
mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠添加到以下字符:\ x00,\ n,\ r,\,',“和\ x1a。
所以你的字符串现在包含两个反斜杠和两个字母而不是换行符。
现在的问题是你以后如何处理$value
。如果将它插入到SQL语句中,那应该是这样的;如果您直接将它用于邮件,则它具有文字\r\n
而不是回车换行符。