【发布时间】:2011-08-23 12:24:18
【问题描述】:
我正在使用 php5.3.6 和 mysql 5.1.56 和 CodeIgniter。这就是我所做的。
-
在 textarea 中输入一些文本,如下所示:
这是什么?
我是鲍勃。
$string = $_POST['name'];
$insertdata = mysql_real_escape_string($string);
将 $insertdata 插入数据库。 它在表格中显示“这是什么?\n\n\nI\'m bob.”(不带双引号)。
查询存储在数据库中的数据,在其上使用stripslashes,然后将其放回textarea。 它在文本区域中显示“这是什么?nnn我是鲍勃。”(不带双引号)。
我的问题是:
- 在第 4 步中,不应该是“这是什么?\n\n\n 我是鲍勃。”存储在表中? 我检查了php手册。它说:
mysql_real_escape_string() 调用 MySQL的库函数 mysql_real_escape_string,其中 将反斜杠添加到以下内容 字符:\x00、\n、\r、\、'、" 和 \x1a.
在使用 mysql_real_escape_string() 后,我应该如何保持 textarea 输入格式?
有没有办法选择去掉哪个斜线,哪个不去掉?
注意事项:
- 魔术引号选项已关闭
- 我之前没有使用 stripslashes() 使用 mysql_real_escape_string()
- 如果我使用 addlashes() 而不是 mysql_real_escape_string(), 一切正常。
- 我不想使用addlashes(),因为 它不如安全 mysql_real_escape_string(),就 我知道。
谢谢, 米洛
【问题讨论】:
-
当您从数据库中检索文本时,您是否尝试过使用nl2br? (
$textToShow = nl2br($textFromDatabase);) -
@DavidThomas 是的。不知何故,nl2br() 对 mysql_real_escape_string() 处理的字符串不起作用
-
nl2br()不应在此处使用 - 您希望在文本区域中使用真正的换行符,而不是<br />标记(这是无效的 HTML)。 -
@CVM 是的。你说的对。另一个与此主题无关的问题。知道为什么 nl2br() 对 mysql_real_escape_string() 处理过的字符串没有影响吗?
标签: php mysql escaping textarea