在处理mysql和GET、POST的数据时,常常要对数据的引号进行转义操作。
PHP中有三个设置可以实现自动对’(单引号),”(双引号),\(反斜线)和 NULL 字符转转。
PHP称之为魔术引号,这三项设置分别是
magic_quotes_gpc
影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。

这个开启时,通过GET,POST,COOKIE传递的数据会自动被转义。

如 test.php?id=abc'de"f
echo $_GET['id'];    #  会得到 abc\'de\"f
magic_quotes_gpc=On; 这个开启了,对写入数据库是没有影响的,比如 上面的$_GET['id']  写到数据库里面,依然是 abc'de"f ,
相反,如果magic_quotes_gpc=Off; 那么字符中要带有引号(不管单引号还是双引号) ,直接写入mysql都会直接变成空白
但是,如果你将它写入文档,而非mysql。那么它将是 abc\'de\"f

magic_quotes_runtime
如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

magic_quotes_sybase
如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。

我表单内容本来是:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />

<img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />

对策一:修改php.ini文件(修改php.ini这个方法就不说了,大家可以google下)

对策二:把转义的给取消了

第一步:找到你提交的数据比如$_POST['content'],将其改成$content=stripslashes($_POST['content']);

第二步:以后在使用$POST['content']的地方都换成$content

第三步:提交到数据库,数据库储存还是正常的:<img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” />读出来又成了

<img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” />(这个应该知道怎么解决了吧?要不我再罗嗦下吧)

第四步:将数据库读取的内容再用stripslashes()过滤一下。

stripslashes()  这个函数 ,删除由addslashes()函数添加的反斜杠。用于清理从数据库或 HTML 表单中取回的数据

PHP页面中如果不希望出现以下情况:
单引号被转义为 \'
双引号被转义为 \"
那么可以进行如下设置以防止:
在php.ini中设置:magic_quotes_gpc = Off)

总结如下:

1. 对于magic_quotes_gpc=on的情况,

我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。

如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

2. 对于magic_quotes_gpc=off 的情况

必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。

最新文章

  1. 你所不知道的linq(二)
  2. HTTP图解(大牛必经之路)
  3. 和JavaScript家的闭包玩玩捉迷藏
  4. Apache+MySQL+PHP开发环境的搭建(二)
  5. SOA 和webservice 的区别
  6. 【processing】小代码5
  7. CodeForces 546A-Soldier and Bananas
  8. [坑]c#中double转字符串精度丢失问题记录
  9. HDU5654xiaoxin and his watermelon candy 离线+树状数组
  10. C# Get Desktop Screenshot ZZ
  11. alarm函数可以定时
  12. Java基本语法-----java数组(一维数组二维数组)
  13. FFmpeg源代码简单分析:avformat_find_stream_info()
  14. Volley网络框架完全解析(实战篇)
  15. Ext.Net的一例Ext Undefined解决办法
  16. [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool
  17. maven工程的多环境配置方案(profile)
  18. 上任com的发布流程
  19. MYSQL中替换oracle中runum用法
  20. STM32 F4 General-purpose Timers for Periodic Interrupts

热门文章

  1. Lamp 安装(CentOS6.6, php-5.4.39, httpd-2.4.12, mysql-5.6.24)
  2. GATK-BWA-MEM handle GRCh38 alternate contig mappings
  3. 简单介绍智能DNS解析+双线路接入
  4. SpringMVC与ajax相关知识练习与存档
  5. 【Maven】Eclipse 使用Maven创建Java Web项目
  6. mysql数据库查询pdo的用法
  7. 安卓奇葩问题之:设置webView超时
  8. 《CSS3专业网页开发指南》笔记
  9. nodejs:express 4.x
  10. HTML回顾