【发布时间】:2013-01-30 17:48:15
【问题描述】:
我在 PHP 中有一个注释系统,当用户在 textarea 中键入换行符时,它显示为 rn(注意:我正在清理此输入并使用 htmlentities(),并且我有自定义标记) .
这是我当前的代码(包括换行符的尝试):
$comment_content =stripslashes(str_replace('\r\n', '@//', mysql_real_escape_string($_POST['comment_content'])));
$comment_content = htmlentities($comment_content);
$comment_content = mysql_real_escape_string(str_replace("====", "<span class=".$bold.">", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("===", "</span>", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("~~~", "<span class=".$italic.">", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("~~", "</span>", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("++++", "<span class=".$big.">", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("+++", "</span>", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("___", "<span class=".$underline.">", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("__", "</span>", $comment_content));
$comment_content = mysql_real_escape_string(str_replace("@//", "<br>", $comment_content));
$comment_content = comment_sanitize($comment_content);
这就是我的消毒方式:
function sanitize($sql, $formUse = true) {
$sql = preg_replace("/(from|script|src|select|insert|delete|where|drop table|show tables|`|,|'|\*|\\\\)/i","",$sql);
$sql = trim($sql);
if(!$formUse || !get_magic_quotes_gpc()) {
$sql = addslashes($sql);
}
return $sql;
}
有什么想法吗?
【问题讨论】:
-
你在做什么来清理输入?试试……做点别的。
-
PHP 的原生函数
nl2br()是又快又脏的方式。 -
Wooble,我正在使用自定义清理代码。 ceejayoz,谢谢。 j08691,好的,会的。
标签: php