注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

古城风~~~

竹密无妨溪水过,天高不碍白云飞。这天下总有一份是属于我古城的天地!

 
 
 

日志

 
 

PHP解析post过来的json格式字符串双引号问题  

2015-07-31 20:06:00|  分类: php |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
默认地,PHP 对所有的 GET、POST 和 COOKIE 数据自动运行 addslashes()。所以您不应对已转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。

解决办法:把post过来的数据使用函数stripslashes()删除由 addslashes() 函数添加的反斜杠。(备注:该函数可用于清理从数据库中或者从 HTML 表单中取回的数据。)
例如:
$json_data= $_POST["json_data"];
var_dump(json_decode(stripslashes($json_data)));


资料参考:
http://www.w3school.com.cn/php/func_string_addslashes.asp
http://www.w3school.com.cn/php/func_string_stripslashes.asp


-----------------------------------------------------------------------------------
----- 比较明显的分界线 -----
-----------------------------------------------------------------------------------



上面的方法已经可以解决问题,另外说说set_magic_quotes_runtime(),对数据库和文件才有效;

set_magic_quotes_runtime 用来设置php.ini文件中的magic_quotes_runtime值,当遇到反斜杆(\)、单引号(')、双引号(")这样一些的字符定入到数据库里,又不想被过滤掉,使用这个函数,将会自动加上一个反斜杆(\),保护系统和数据库的安全。

magic_quotes_runtime 是php.ini里的环境配置变量,0和false表示关闭本功能,1和true表示打开本功能。当magic_quotes_runtime打开时,所有外部引入的数据库资料或者文件等都会自动转为含有反斜线溢出的资料,
设置方法如下:

1、可以直接在php.ini里面设置为ON

2、set_magic_quotes_runtime(true)或者set_magic_quotes_runtime(1)

3、用ini_set函数,ini_set(magic_quotes_runtime,1);

示例:

<?php
$fp=tmpfile();                      //以读写模式建立一个具有唯一文件名的临时文件,文件会在关闭后自动被删除
fwrite($fp,'\'PHP\' is a Recursive acronym');                //写入数据
rewind($fp);                                //指针倒回文件的开头
set_magic_quotes_runtime(0);
echo 'Without magic_quotes_runtime:'.fread($fp,1024).'<br />';            //从文件中读取1k
rewind($fp);
set_magic_quotes_runtime(true);
echo 'With magic_quotes_runtime:'.fread($fp,1024);
fclose($fp);//关闭文件
?>

运行结果:
Without magic_quotes_runtime:'PHP' is a Recursive acronym
With magic_quotes_runtime:\'PHP\' is a Recursive acronym

备注:PHP5.3中 bool set_magic_quotes_runtime ( bool $new_setting )函数已过时。应该把函数“set_magic_quotes_runtime($new_setting)”改成“ini_set("magic_quotes_runtime", $new_setting);”。

资料参考:http://blog.sina.com.cn/s/blog_6f49a3c30100s0r0.html
  评论这张
 
阅读(1535)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017