0

我试图通过在将数据插入数据库之前使用 mysql_real_escape_string 来防止 sql 注入:

$data=mysql_real_escape_string($_POST['data']);

现在,数据是这样存储的:

That\\\'s an apostrophe.\r\n\r\nThis new line isn\\\'t displaying properly!

所以,我试图让它在将它从 mysql 中拉出后在 textarea 内正确显示:

$data = nl2br($data);

无论出于何种原因,这都不起作用。我什至尝试str_replace\r\n's 替换为 a <br>,但随后<br>仅显示在 textarea 中。

如何让我的 mysql 中的内容显示为:

That's an apostrophe.

This new line isn't displaying properly!
4

3 回答 3

2

最佳解决方案..

$data= mysql_real_escape_string($_POST['data']);(如果需要,可以将其插入数据库)

echo stripslashes(str_replace('\r\n',PHP_EOL,$data));(输出与您的输入完全相同)

于 2015-07-03T22:56:20.873 回答
1

实际上使用mysql_real_escape_string并不能完全保护您免受SQL Injection攻击。

最好的方法是使用PDOor MySQLi

于 2012-11-30T13:02:55.213 回答
0

你可能打开了magic_quotes,用
echo get_magic_quotes_gpc() 检查它,否则你会加双引号

"为 GPC (Get/Post/Cookie) 操作设置 magic_quotes 状态。当 magic_quotes 开启时,所有 '(单引号)、"(双引号)、\(反斜杠)和 NUL 都会自动用反斜杠转义。"

顺便说一句,使用magic_quotes 不是一个好主意,请尝试使用其中一个类。

PDO http://br2.php.net/manual/en/book.pdo.php 或 mysqli http://br2.php.net/manual/en/book.mysqli.php

于 2012-11-30T13:13:45.517 回答