帝国 CMS 8.0 新增了官方会员头像调用函数 eMember_UpicReturnUrl(),可以方便地获取会员头像地址。不过官方文档对第二个参数的说明比较简单,很多站长在实际使用时容易遇到头像无法显示、始终返回默认头像等问题。本文结合帝国 CMS 8.0 源码,对该函数的使用方法进行详细说明。
零、内容页调用代码
<?php $userr=sys_ShowMemberInfo($navinfor['userid'],''); ?>
<img src="<?=eMember_UpicReturnUrl($userr['userid'],$userr['upic'],0)?>" alt="用户头像">
一、函数说明
官方函数:
eMember_UpicReturnUrl($userid,$upic=1,$ckf=0);
参数说明:
- $userid:会员 ID。
- $upic:头像图片类型(不是是否有头像)。
- $ckf:是否检测头像文件是否存在,0 为不检测,1 为检测,推荐用0。
二、第二个参数并不是是否有头像
很多人都会按照官方文档这样调用:
echo eMember_UpicReturnUrl(1,1,1);
如果会员头像实际上是 PNG 格式,那么返回的地址将会变成:
https://www.xxx.com/d/file/efupic/000/00/00/1.jpg
由于真实文件并不是 JPG,因此开启文件检测(第三个参数为 1)后,就会直接返回默认头像:
/e/data/images/nouserpic.gif
因此,第二个参数并不是"是否设置头像",而是头像文件扩展名类型。
三、源码对应关系
帝国 CMS 8.0 源码中:
1 = .jpg
2 = .gif
3 = .png
4 = .bmp
5 = .jpeg
6 = .webp
也就是说:
| upic 值 | 对应扩展名 |
|---|---|
| 1 | .jpg |
| 2 | .gif |
| 3 | .png |
| 4 | .bmp |
| 5 | .jpeg |
| 6 | .webp |
四、正确调用方式
如果会员头像是 PNG,则应该这样调用:
echo eMember_UpicReturnUrl(1,3,1);
输出结果:
https://www.xxx.com/d/file/efupic/000/00/00/1.png
五、推荐写法
不要把第二个参数写死,而是直接读取会员表中的 upic 字段。
$r=$empire->fetch1("select userid,upic from {$dbtbpre}enewsmember where userid=1");
echo eMember_UpicReturnUrl($r['userid'],$r['upic'],1);
这样无论用户上传的是 JPG、PNG、GIF、WEBP 等格式,都能够自动返回正确的头像地址。
六、第三个参数说明
第三个参数用于检测头像文件是否真实存在。
| 参数 | 说明 |
|---|---|
| 0 | 不检测文件是否存在,速度更快。 |
| 1 | 检测文件是否存在,如果不存在则返回默认头像。 |
例如:
echo eMember_UpicReturnUrl($userid,$upic,0);
不会检测文件。
echo eMember_UpicReturnUrl($userid,$upic,1);
会检测头像文件,如果文件不存在,则返回:
/e/data/images/nouserpic.gif
七、常见错误
错误写法:
echo eMember_UpicReturnUrl($userid,1,1);
这种写法只适用于 JPG 头像。
如果用户上传的是 PNG、GIF、WEBP 等格式,将无法正确返回头像地址。
八、总结
帝国 CMS 8.0 的 eMember_UpicReturnUrl() 第二个参数实际上表示头像文件类型,并不是简单的"是否设置头像"。实际开发中,建议始终读取会员表中的 upic 字段作为第二个参数,再配合第三个参数进行文件检测,这样才能兼容所有头像格式,也是官方推荐的使用方式。