我有一个HTML表单,它用PHP发送联系邮件。
除了来自文本区域的消息正文外,一切都很顺利,文本区域将通过以下两个功能进行过滤:
1:mysql_real_sescape_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这是一封测试邮件。
如果我在没有验证的情况下按原样传递字符串,它会很好地工作。
这里有什么问题?
谢谢。
mysql_real_aescape_string
转义unscaped_string中的特殊字符,考虑计算连接的当前字符集,以确保其安全将其放置在mysql_query()中。如果要插入二进制数据必须使用函数。
mysql_real_eescape_string()调用mysql的库函数mysql_real_eescape_string,它将反斜杠前置到以下内容字符:''x00,''n,''r,'',',"和''x1.
此函数必须始终(除少数例外)用于生成数据安全,然后再将查询发送到MySQL。
插入时唯一需要的处理是mysql_real_eescape_string,但最好使用准备好的语句,可能与PDO或MDB2一起使用。
也就是说,您可以使用mysql_real_eescape_string来验证文本区域。下面是一个示例函数:
function validateContent($txtInput)
{
if(isset($_REQUEST[$txtInput]))
{
$txtInput = $_REQUEST[$txtInput];
}
return mysql_real_escape_string(trim($txtInput));
}
希望这能有所帮助!
好的,我找到了!
逃跑后我做了这个:
str_replace('''r''n',PHP_EOL,$message)
现在它运行得很好。