我正在使用 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。 它在文本区域中显示“这是什么?nnnI'm bob.”(没有双引号)。
我的问题是:
- 在第 4 步中,不应该是“这是什么?\n\n\n 我是鲍勃。”存储在表中? 我检查了php手册。它说:
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.
我应该如何在使用 mysql_real_escape_string() 后保持文本区域输入格式?
有没有办法选择去掉哪些斜线,哪些不去掉?
注意事项:
- 魔术引号选项已关闭
- 我之前没有使用过 stripslashes() 使用 mysql_real_escape_string()
- 如果我使用 addslashes() 而不是 mysql_real_escape_string(), 一切正常。
- 我不想使用 addslashes() 因为 它不像 mysql_real_escape_string(),至于 我知道。
谢谢, 米洛
最佳答案
这确实感觉很像 magic_quotes_gpc = On
。您是在 php.ini 中还是在运行时禁用它?它必须是前者,否则它将保持打开状态。
http://www.php.net/manual/en/security.magicquotes.disabling.php
magic_quotes_gpc 指令只能在系统级别禁用,而不能在运行时禁用。换句话说,使用 ini_set() 不是一个选项。
关于php - 使用mysql_real_escape_string存储后保持textarea输入格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5968206/