<?php private function _init_user(){ if($this->init_user){ if($auth=getglobal('auth','cookie')){ $auth=daddslashes(explode("\t", authcode($auth,'DECODE'))); } list($discuz_pw,$discuz_uid)=empty($auth) || count($auth) < 2 ? array('','') : $auth; if($discuz_uid) { //调用getuserbyuid函数得到会员信息, 第二个参数如果是1并且在common_member(用户主表)表中没有该会员就去common_member_archive表中寻找, 否则直接去common_member表中查找 $user=getuserbyuid($discuz_uid,1); } if(!empty($user) && $user['password']==$discuz_pw) { //如果$user数组中有_inarchive元素并且不等于NULL就将当前查到的用户信息插入到用户表common_member表中 if(isset($user['_inarchive'])){ C::t('common_member_archive')->move_to_master($discuz_uid); } //更新$_G["member"]将用户信息压入模板变量中 $this->var['member']=$user; }else{ //没有登录 $user=array(); //设置没登陆的游客的信息 $this->_init_guest(); } //用户组有效期 if($user && $user['groupexpiry']>0 && $user['groupexpiry']<TIMESTAMP) { $memberfieldforum=C::t('common_member_field_forum')->fetch($discuz_uid); $groupterms=dunserialize($memberfieldforum['groupterms']); if(!empty($groupterms['main'])) { C::t('common_member')->update($user['uid'], array('groupexpiry'=>0,'groupid'=>$groupterms['main']['groupid'],'adminid'=>$groupterms['main']['adminid'])); $user['groupid']=$groupterms['main']['groupid']; $user['adminid']=$groupterms['main']['adminid']; unset($groupterms['main'], $groupterms['ext'][$this->var['member']['groupid']]); $this->var['member']=$user; C::t('common_member_field_forum')->update($discuz_uid, array('groupterms'=>serialize($groupterms))); } elseif((getgpc('mod')!='spacecp' || CURSCRIPT!='home') && CURSCRIPT!='member') { dheader('location:home.php?mod=spacecp&ac=usergroup&do=expiry'); } } if($user && $user['freeze'] && (getgpc('mod')!='spacecp' && getgpc('mod')!='misc' || CURSCRIPT!='home') && CURSCRIPT!='member' && CURSCRIPT!='misc') { dheader('location:home.php?mod=spacecp&ac=profile&op=password'); } $this->cachelist[]='usergroup_'.$this->var['member']['groupid']; if($user && $user['adminid'] > 0 && $user['groupid']!=$user['adminid']) { $this->cachelist[]='admingroup_'.$this->var['member']['adminid']; } } else { $this->_init_guest(); } setglobal('groupid',getglobal('groupid','member')); //当访问http://bbs.pinku.com/forum.php时,未登录状态加载的缓存 //array('announcements','onlinelist','forumlinks','heats','historyposts','onlinerecord','userstats','diytemplatenameforum','plugin','pluginlanguage_system','setting','style_default','cronnextrun','usergroup_7',) //当访问http://bbs.pinku.com/plugin.php?id=htt_qqlogin:qqoauth,未登录状态加载的缓存 //array('plugin','diytemplatename','setting','style_default','cronnextrun','usergroup_7',) //加载当前的用户组缓存列表信息 !empty($this->cachelist) && loadcache($this->cachelist); //未登录状态时打印$this->var['member'] //array('uid'=>0,'username'=>'','adminid'=>0,'groupid'=>7,'credits'=>0,'timeoffset'=>9999,) if($this->var['member'] && $this->var['group']['radminid']==0 && $this->var['member']['adminid']>0 && $this->var['member']['groupid']!=$this->var['member']['adminid'] && !empty($this->var['cache']['admingroup_'.$this->var['member']['adminid']])) { $this->var['group']=array_merge($this->var['group'], $this->var['cache']['admingroup_'.$this->var['member']['adminid']]); } if($this->var['group']['allowmakehtml'] && isset($_GET['_makehtml'])) { $this->var['makehtml']=1; $this->_init_guest(); loadcache(array('usergroup_7')); $this->var['group']=$this->var['cache']['usergroup_7']; unset($this->var['inajax']); } if(empty($this->var['cookie']['lastvisit'])) { $this->var['member']['lastvisit']=TIMESTAMP-3600; dsetcookie('lastvisit', TIMESTAMP-3600, 86400*30); } else { $this->var['member']['lastvisit']=$this->var['cookie']['lastvisit']; } setglobal('uid', getglobal('uid','member')); setglobal('username', getglobal('username','member')); setglobal('adminid', getglobal('adminid','member')); setglobal('groupid', getglobal('groupid','member')); if($this->var['member']['newprompt']) { $this->var['member']['newprompt_num']=C::t('common_member_newprompt')->fetch($this->var['member']['uid']); $this->var['member']['newprompt_num']=unserialize($this->var['member']['newprompt_num']['data']); $this->var['member']['category_num']=helper_notification::get_categorynum($this->var['member']['newprompt_num']); } } private function _init_guest(){ $username=""; $groupid=7; if(!empty($this->var["cookie"]["con_auth_hash"]) && ($openid=authcode($this->var["cookie"]["con_auth_hash"]))) { $this->var["connectguest"]=1; $username="QQ_".substr($openid,-6); $this->var["setting"]["cacheindexlife"]=0;//缓存论坛首页有效期,设置论坛首页缓存更新的时间,单位为秒,0为关闭(此处关闭以后,缓存系数将不再起作用),建议设置为900。此功能只针对游客 $this->var["setting"]["cachethreadlife"]=0;//缓存帖子有效期,设置帖子页面缓存更新的时间,单位为秒,0 为关闭。请根据实际情况进行调整,建议设置为900。另外,请通过编辑论坛来指定帖子页面缓存系数 $groupid=$this->var["setting"]["connect"]["guest_groupid"] ? $this->var["setting"]["connect"]["guest_groupid"] : $this->var["setting"]["newusergroupid"]; } setglobal('member',array('uid'=>0,'username'=>$username,'adminid'=>0,'groupid'=>$groupid,'credits'=>0,'timeoffset'=>9999)); } ?>