网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > PHP技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.PHP5中的this,self和parent关键字.
.PHP 中的一些经验积累.
.PHP PEAR简介.
.将PHP作为Shell脚本语言使用.
.Pear:HTTP_Upload简介.
.提取HTML标签.
.PHP中实现进程间通讯.
.编译php的配置参数 .
.PHP中使用FCKeditor2.3.2配置.
.如何在PHP中使用Oracle数据库(4).
.基于DB2及PHP的应用系统跨平台迁.
.用PHP实现ODBC数据分页显示一例.
.Phalanger-PHP的.NET编译器 .
.vBulletin HACK----显示话题大小.
.php配置文件php.ini的中文注释版.
.关于PHP操作文件的一些FAQ总结.
.PHP伪造referer实例代码.
.通过包含文件来组织项目.
.一些使用频率比较高的PHP函数.
.PHP与SQL注入攻击[一] .

关于unserialize的问题

发表日期:2008-12-21


特的理念。’,
‘uid’ => 1,
‘nickname’ => ‘土豆男’,
’site’ => ”,
’sitetype’ => 1,
’starttime’ => 1191074174,
‘lasttime’ => 1191629784,
‘totleviews’ => 14,
‘totleblogs’ => 3
);

由于程序自动判断了magic_quotes_gpc并将所有POST,GET的数据自动转义(addslashes下),所以上面数组中的$message['sitename']在入库之前就变成了土人\’部落,当进入mysql数据库的保存的时候,保存的内容依然是 土人’部落(不要问我\’怎么入mysql库以后就变成了’ 这是mysql的转义特性,绝大多数数据库也都是靠\来转义的),这时候是没有问题的。


当从数据库中查出这个字段,然后unserialize的时候问题就来了,由于从数据库中查出来的是没有转义的 土人’部落 这个值,于是在unserialize的时候就会失败。

想了几种解决方式:
第一,将此数组不再存在一个字段内,每个key独立存在一个字段内,此种被排除,系统已经跑起来了,改起来麻烦的说。
第二,将数据在存入mysql之前对serialize的数组再addslashes下,这时候存入mysql的就是 土人\’部落 了,但是数据库查出来unserialize之后的数据还是 土人\’部落 所以需要再次对此数组逐一stripslashes。
第三,放弃用户体验吧:) ,不允许’/”出现在,有了就自动替换掉

上一篇:PHP Extended CHM 中文手册 人气:42
下一篇:PHP5.2下preg_replace函数的问题 人气:43
浏览全部unserialize的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐