欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

avatar.php uid,phpcms函数库中获取会员头像方法get_memberavatar()有时无效问题

发布时间:2025/3/11 php 27 豆豆
生活随笔 收集整理的这篇文章主要介绍了 avatar.php uid,phpcms函数库中获取会员头像方法get_memberavatar()有时无效问题 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

修复方法:

首先我先给出无效情况的演示代码,如下:$userid = intval($_GET['userid']);

$userinfo = $this->db->get_one('userid='.$userid);

$this->db->set_model(10); //原因便在这里

$userdetail = $this->db->get_one("userid=".$userid);

$avatar = get_memberavatar($userid,1,180); //结果$avatar为空内容

我们再来看下get_memberavatar()的部分源码:function get_memberavatar($uid, $is_userid='', $size='30') {

if($is_userid) {

$db = pc_base::load_model('member_model');

$memberinfo = $db->get_one(array('userid'=>$uid)); //获取会员的基本信息

if(isset($memberinfo['phpssouid'])) {

$uid = $memberinfo['phpssouid'];

} else {

return false;

}

}

...

综合以上两段代码,不知道你有没有发现错误原因在哪里呢?

当我们把后者代码放到前者代码的环境中时,并且第二个参数为真时,因为第一段代码中使用了set_model()方法对会员模型了设定从而使$this->db中的一个属性变量tablename(代表当前指向的数据表,默认为“member”)进行了更换,变成了“member_detail”之类的其它标,不再是‘member’这个值了,那么在后续的get_memberavatar()方法中再去读取会员信息时因为没有重置回member表,那么读取的仍然是‘member_detail'表,如此,后续数据中当然没有“$memberinfo['phpssouid']”这一项,结果返回false空内容。

解决方法:

解决方法当然也非常简单,就是在get_memberavatar()方法中为了防止外部环境中对数据表做了更改的影响,在方法里先重置操作回member表,再执行后面的操作。修改代码部分如下:if($is_userid) {

$db = pc_base::load_model('member_model');

$db->set_model(); //重置回member表

$memberinfo = $db->get_one(array('userid'=>$uid)); //获取会员的基本信息

...

总结

以上是生活随笔为你收集整理的avatar.php uid,phpcms函数库中获取会员头像方法get_memberavatar()有时无效问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。