A-A+

phpcms会员头像修改过程分析

2015年06月15日 php 暂无评论 阅读 103 次

跟踪了一下,得到的结论是,phpcms生成不同尺寸头像的操作是通过flash完成的
1,在 Google Chrome 中进入会员中心修改头像页面,上传好头像(先别点保存)
http://www.test.com/index.php?m=member&c=index&a=account_manage_avatar&t=1

2,按F12打开开发者工具,切换到 Network 选项卡,选中红色的小按钮(这样可以捕捉到保存图片的请求)
201309141042164903

3,点击“保存图片”,上传完头像后,在所有的请求中,切换到 XHR 选项卡(这个应该是 XMLHttpRequest 的缩写,未确认),即可以看到刚才提交的请求中,向服务器提交头像图片的请求是
(呃,为什么第二张图片上传不了了)

4,在3中的请求中,向下拉,Request Payload 中可以看到下面这些请求内容

PKU&C 90x90.jpgÅ·WXZÐ÷‹m#"*R…­€tzÙ¢€   zQ‘’Ð{ °UŠt…$´M !@è¡é’P$ôФ'ˆúç{¾ó|7çæ<çæ̺ZÏÌÅüÖš5ë??.ntº —.10\ú³.¦"ÿìþ¶‹/ ì׬¬®\bg¸Ì~éû¥‹îKùr¼ö¿þo»tùÊÕk1^gb¾q‹áò¥+W._½ríÚÕ«<a| WÙ¯Ý~ ûä¯;Ưzß•{û)ïº vUd”*$ÿÚçó=N.nG"¢bâ

 

……

……

……

90x90.jpgPKU&Cžˆ$P׫   ò>45x45.jpgPKU&C™“ho` (

    R30x30.jpgPKU&CWrø)Ô¥Õ —[180x180.jpgPKÞù/

这些是向服务器发送的图片的数据

5,由此可以得出结论,phpcms生成头像的操作是在浏览器中完成的,得到不同尺寸的头像,然后提交给服务器

6,“保存图片”的按钮位于这个flash中(XHR 选项卡中的第二个请求)
http://www.test.com/phpsso_server/statics/images/main.swf
我试着把这个 main.swf 反编译成 .fla ,然后查看源代码,可是没找到裁剪头像的as代码,所以“生成200*250”这个需求,帮不上了(不懂flash,爱莫能助)

7,接收浏览器提交头像图片的代码是

     D:\wamp\www\phpsso_server\phpcms\modules\phpsso\classes\phpsso.class.php (42行)

if(isset($GLOBALS['HTTP_RAW_POST_DATA'])) {

$this->data['avatardata'] = $GLOBALS['HTTP_RAW_POST_DATA'];

if($this->applist[$this->appid]['authkey'] != $this->data['ps_auth_key']) {

exit('0');

}

}

 

8,顺便把和头像尺寸相关的文件贴出来一下吧,不过这些都是获取头像的操作,而不是生成

D:\wamp\www\phpcms\libs\functions\global.func.php (882行)
D:\wamp\www\phpcms\modules\member\classes\client.class.php (199行)
D:\wamp\www\phpsso_server\phpcms\modules\phpsso\index.php (604行)
D:\wamp\www\phpsso_server\phpcms\modules\admin\functions\global.func.php (137行)

标签:

给我留言

Copyright © web前端技术开发个人博客 保留所有权利  京ICP备14060653号 Theme  Ality

用户登录