将textarea保存到MySQL并保留换行符

Gab*_*bb0 4 html php mysql sql-injection

想象一下博客或cms系统(PHP和MySQL).我想让用户在textarea中输入一些文本并将其保存到数据库中.数据库中字段的类型是TEXT.

我想保留换行符并在以后打印它们.我知道我可以用PHP的nl2br函数做到这一点,但是如何保护这个字符串免受SQL注入攻击(让我们假设我不能使用预处理语句).如果我使用mysql_real_escape_string它,它不再显示换行符.

$text = 'one line
another line';
$text = mysql_real_escape_string($text);
/* save to db, fetch it some time later */
echo nl2br($text); /* output: one line\r\nanotherline */
Run Code Online (Sandbox Code Playgroud)

Pek*_*ica 9

mysql_real_escape_string不会删除换行符,它会逃脱它们.

在存储字符串时应该可以正常工作,并nl2br输出htmlspecialchars()数据时应用(可能结合使用以防止用户输入原始HTML).这是最好的方式.