Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

UC用户头像存贮方式揭秘

[复制链接]
sdaupp 发表于 2008-7-4 11:53:04 | 显示全部楼层 |阅读模式
自DZ0606版开始,用户头像与UC合并,而且采取了新的存贮规则。
为了彻底了解UC系统头像的存贮方式,对DZ的头像解析程序 avatar.php进行了简单分析。
请看下面的程序段:
  1. function get_avatar($uid, $size = 'middle') {
  2.         $size = in_array($size, array('big', 'middle', 'small')) ? $size : 'middle';
  3.         $uid = abs(intval($uid)); //UID取整数绝对值
  4.         $uid = sprintf("%09d", $uid); //前边加0补齐9位,例如UID为31的用户变成 000000031
  5.         $dir1 = substr($uid, 0, 3);  //取左边3位,即 000
  6.         $dir2 = substr($uid, 3, 2);  //取4-5位,即00
  7.         $dir3 = substr($uid, 5, 2);  //取6-7位,即00
  8. // 下面拼成用户头像路径,即000/00/00/31_avatar_middle.jpg
  9.         return $dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid, -2)."_avatar_$size.jpg";
  10. }
复制代码
所以,UID为31的用户,其头像文件的正确路径为:
uc/data/avatar/000/00/00/31_avatar_small.jpg
uc/data/avatar/000/00/00/31_avatar_middle.jpg
uc/data/avatar/000/00/00/31_avatar_big.jpg
如果在以上位置找不到相应的文件,则自动重定向到:
Location: images/noavatar_$size.gif
也就是:
uc/images/noavatar_small.gif
uc/images/noavatar_middle.gif
uc/images/noavatar_big.gif
根据提交的参数调用其中的一个显示。
============================
明白了以上道理,实际应用中如果出现用户头像显示问题,就可以采取以下变通处理:
1. 模板中直接调用头像:
<img src=http://你的域名/UC目录名/avatar.php?uid=$post[authorid]&size="small" border=0>
2. 升级后自行整理上传用户头像:
  如果升级后有些用户头像显示不出来,你可以直接按照以上规则创建目录,将customavatars/下的用户自定义头像上传到相应目录并重新命名。
  例:某用户UID为12345,原头像保存在customavatars/12345.jpg,根据以上算法,升级后的头像目录即为:
      uc/data/avatar/000/01/23/
          那么你就可以将用户原头像文件复制-改名为:45_avatar_middle.jpg,45_avatar_small.jpg,45_avatar_big.jpg
          上传到该目录下就可以了。
      当然,你也可以写一个程序自行完成以上过程。

[ 本帖最后由 sdaupp 于 2008-7-4 14:33 编辑 ]

评分

1

查看全部评分

下砂 发表于 2008-7-4 11:53:30 | 显示全部楼层
支持下
回复

使用道具 举报

 楼主| sdaupp 发表于 2008-7-4 16:55:28 | 显示全部楼层

让DZ6.1支持gif动画的笨办法

是不是还在为你的论坛升级到6.1后不支持gif动画而烦恼?
教你一个“笨”办法。
浏览器在显示图片文件的时候,其实是不在乎文件扩展名的,而是根据图片文件内部的信息显示!
那么好了,你可以将gif文件改名成jpg骗过DZ!
具体做法:
1. 首先确定用户头像文件所在目录和文件名。可能很容易地从帖子浏览页面获得~~
2. 将要替换的gif改名为:uid最后两位_avatar_middle.jpg,上传覆盖;
OK!刷新一下页面看看,头像是否可以“动”起来了?
回复

使用道具 举报

白乐天 发表于 2008-7-4 19:17:17 | 显示全部楼层
关注研究一下。
回复

使用道具 举报

xiabill 发表于 2008-7-10 02:17:24 | 显示全部楼层
好文章呢 mark一下
回复

使用道具 举报

nic0301 发表于 2008-7-10 07:46:55 | 显示全部楼层
:) 支持下
回复

使用道具 举报

快来吧 发表于 2008-7-22 23:36:13 | 显示全部楼层
支持下
回复

使用道具 举报

dnfdnf 发表于 2008-7-22 23:55:05 | 显示全部楼层
学习了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-23 10:27 , Processed in 0.039601 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表