php - 使用mysql_real_escape_string存储后保持textarea输入格式

标签 php mysql escaping textarea

我正在使用 php5.3.6 和 mysql 5.1.56 以及 CodeIgniter。这是我所做的。

  1. 在textarea中输入一些文字,像这样:


    这是什么?

    我是鲍勃。


  2. $string = $_POST['name'];

  3. $insertdata = mysql_real_escape_string($string);

  4. 将 $insertdata 插入数据库。 它在表格中显示“这是什么?\n\n\nI\'m bob.”(没有双引号)。

  5. 查询存储在数据库中的数据,对其使用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/

相关文章:

php - 我无法使用 php 中的 session 将值从一个页面传递到另一个页面

php - 从 php/MySql 中的特定列检索数据

Mysql/Django - 开始自动递增到 1

php - 将对象从 PHP 传递到 Mysql 存储过程

php - 插入由触发器生成但未传递的 ID 字段

php - 如何访问 $array[@key] 值

php - 不断尝试将随机唯一值插入表中

html - 可能已经转义的 html 转义字符串的优雅方式

string - 转义postgresql中的所有单引号

php - 如何在php中回显ascii加密文本