我有一个HTML表单,用PHP发送联系人邮件。
一切顺利,除了来自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这是一封测试邮件。
如果我按原样传递字符串而未经验证,则效果很好。
这里的问题是什么?
感谢。
答案 0 :(得分:2)
转义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));
}
希望这有帮助!
答案 1 :(得分:1)
好的,我找到了它!
逃跑后我做了这个:str_replace('\ r \ n',PHP_EOL,$ message)
现在它完美无缺。