Empire cms MemberConnect_DoLogin function code comment

1.<?php
2.//处理登录
3.function MemberConnect_DoLogin($apptype,$openid){
4.	global $empire,$dbtbpre;
5.	$apptype=RepPostVar($apptype);
6.	$openid=RepPostVar($openid);
7.	//验证openid
8.	$mcr=MemberConnect_CheckOpenid($apptype,$openid);
9.	//如果返回记录
10.	if($mcr['id'])
11.	{
12.		$lifetime=0;
13.		$r=$empire->fetch1("select ".eReturnSelectMemberF('*')." from ".eReturnMemberTable()." where ".egetmf('userid')."='".$mcr['userid']."' limit 1");
14.//$r=$empire->fetch1("select * from {$dbtbpre}enewsmember where userid='".$mcr['userid']."' limit 1");
15.//userid(用户ID)、username(用户名)、password(用户密码)
16.//rnd(随机认证码)、email(邮箱)、registertime(注册时间)
17.//groupid(会员组ID)、userfen(点数)、userdate(有效期)
18.//money(金额)、zgroupid(到期后转向会员组ID)、havemsg(是否有短信息)
19.//checked(是否审核)、salt(salt密码加密随机码)、userkey(密钥)
20. 
21.		//生成新的随机认证码, 如果该会员的会员组ID未设置就设置为默认的会员组ID, 设置cookie(用户名、用户ID、用户的会员组ID、随机认证码、登录验证符、登录附加)
22.		DoEcmsMemberLogin($r,$lifetime);
23.		//更新该用户的登录次数+1、最后登录时间
24.		MemberConnect_UpdateBindLogin($mcr['id']);
25.		//返回指示当前页面的页面地址(返回用户在执行登录的那个页面地址)
26.		$tourl=$_SESSION['referer']?$_SESSION['referer']:'../../../';
27.		//重置会话变量
28.		MemberConnect_ResetVar();
29.		printerrortourl($tourl);
30.	}
31.	else
32.	{
33.		printerrortourl('../tobind.php');
34.	}
35.}
36.//验证openid
37.function MemberConnect_CheckOpenid($apptype,$openid){
38.	global $empire,$dbtbpre;
39.	$mcr['id']=0;
40.	$mcr['userid']=0;
41.	//如果两个参数其中任何一个的值等于0、空字符串、FALSE或NULL, 则返回数组$mcr
42.	if(!$apptype||!trim($openid)){
43.		return $mcr;
44.	}
45.	//检查会员外部接口表是否具有记录
46.	//id(ID)、userid(会员ID)、apptype(接口类型)、bindkey(绑定密钥)
47.	$mcr=$empire->fetch1("select id,userid from {$dbtbpre}enewsmember_connect where apptype='$apptype' and bindkey='$openid' limit 1");
48.	return $mcr;
49.}
50.//函数eReturnSelectMemberF在/e/member/class/user.php
51.//返回查询会员字段列表
52.function eReturnSelectMemberF($f,$tb=''){
53.	global $ecms_config;
54.	//是否使用原版会员表信息,0为原版,1为非原版
55.	if(empty($ecms_config['member']['chmember'])){
56.		if(!empty($tb)){
57.			$f=$f=='*'?$tb.$f:$tb.str_replace(',',','.$tb,$f);
58.		}
59.		return $f;
60.	}
61.	if($f=='*'){
62.		$f='userid,username,password,rnd,email,registertime,groupid,userfen,userdate,money,zgroupid,havemsg,checked,salt,userkey';
63.	}
64.	$r=explode(',',$f);
65.	$count=count($r);
66.	$selectf='';
67.	$dh='';
68.	for($i=0;$i<$count;$i++){
69.		$truef=$r[$i];
70.		if($ecms_config['memberf'][$truef]==$truef){
71.			$selectf.=$dh.$tb.$truef;
72.		}else{
73.			$selectf.=$dh.$tb.$ecms_config['memberf'][$truef].' as '.$truef;
74.		}
75.		$dh=',';
76.	}
77.	return $selectf;
78.}
79.//函数eReturnMemberTable在/e/member/class/user.php
80.//返回会员表
81.function eReturnMemberTable(){
82.	global $ecms_config;
83.	return $ecms_config['member']['tablename'];
84.}
85.//函数egetmf在/e/member/class/user.php
86.//取得实际会员字段
87.function egetmf($f){
88.	global $ecms_config;
89.	//是否使用原版会员表信息,0为原版,1为非原版
90.	if(empty($ecms_config['member']['chmember'])){
91.		return $f;
92.	}
93.	return $ecms_config['memberf'][$f]?$ecms_config['memberf'][$f]:$f;
94.}
95.//函数DoEcmsMemberLogin在/e/member/class/user.php
96.//会员登录
97.function DoEcmsMemberLogin($r,$lifetime=0){
98.	global $empire,$dbtbpre,$ecms_config;
99.	$rnd=make_password(20);//取得随机密码
100.	//默认会员组
101.	if(empty($r['groupid'])){
102.		$r['groupid']=eReturnMemberDefGroupid();
103.	}
104.	$r['groupid']=(int)$r['groupid'];
105.	$empire->query("update ".eReturnMemberTable()." set ".egetmf('rnd')."='$rnd',".egetmf('groupid')."='$r[groupid]' where ".egetmf('userid')."='$r[userid]'");
106.	//更新会员的随机认证码和会员组ID
107.	//$empire->query("update {$dbtbpre}enewsmember set rnd='$rnd',groupid='$r[groupid]' where userid='$r[userid]'");
108.	$lifetime=(int)$lifetime;
109.	$logincookie=0;
110.	if($lifetime){
111.		$logincookie=time()+$lifetime;
112.	}
113.	//cookie何时到期, 到期时间参数用于设置cookie存在的精确限定的时间长度, 用从新纪元(epoch)(新纪元是1970年1月1日0点)起所经过的秒数表示。
114.	//如果没有设置它或者把它的值设置为0, cookie将持续起作用, 直到用户关闭了他或她的浏览器。这些cookie被认为在浏览器会话期间一直存在。
115.	esetcookie("mlusername",$r['username'],$logincookie);//设置用户名cookie
116.	esetcookie("mluserid",$r['userid'],$logincookie);//设置用户ID cookie
117.	esetcookie("mlgroupid",$r['groupid'],$logincookie);//设置用户会员组ID cookie
118.	esetcookie("mlrnd",$rnd,$logincookie);//设置随机认证码cookie
119.	qGetLoginAuthstr($r['userid'],$r['username'],$rnd,$r['groupid'],$logincookie);//设置登录验证符cookie
120.	AddLoginCookie($r);//登录附加cookie
121.}
122.//函数eReturnMemberDefGroupid在/e/member/class/user.php
123.//返回默认会员组ID
124.function eReturnMemberDefGroupid(){
125.	global $ecms_config,$public_r;
126.	//注册时会员组ID(ecms的会员组,0为后台默认)
127.	//注册会员默认会员组,1普通会员,2VIP会员,3企业会员,4企业VIP会员
128.	$groupid=$ecms_config['member']['defgroupid']?$ecms_config['member']['defgroupid']:$public_r['defaultgroupid'];
129.	return intval($groupid);
130.}
131.//函数qGetLoginAuthstr在/e/member/class/user.php
132.//登录验证符
133.function qGetLoginAuthstr($userid,$username,$rnd,$groupid,$cookietime=0){
134.	global $ecms_config;
135.	//COOKIE验证随机码2(填写10~50个任意字符, 最好多种字符组合)
136.	$checkpass=md5(md5($rnd.'-'.$userid.'-'.$username.'-'.$groupid).'-#empire.cms!-'.$ecms_config['cks']['ckrndtwo']);
137.	esetcookie('mlauth',$checkpass,$cookietime);//设置登录验证符cookie
138.}
139.//函数AddLoginCookie在/e/member/class/user.php
140.//登录附加cookie
141.function AddLoginCookie($r){}
142.//函数MemberConnect_UpdateBindLogin在/e/memberconnect/memberconnectfun.php
143.//更新登录绑定
144.function MemberConnect_UpdateBindLogin($id){
145.	global $empire,$dbtbpre;
146.	$id=(int)$id;
147.	$lasttime=time();
148.	$empire->query("update {$dbtbpre}enewsmember_connect set loginnum=loginnum+1,lasttime='$lasttime' where id='$id' limit 1");
149.}
150.//函数MemberConnect_ResetVar在/e/memberconnect/memberconnectfun.php
151.//重置变量
152.function MemberConnect_ResetVar(){
153.	$_SESSION['state']='';
154.	$_SESSION['openid']='';
155.	$_SESSION['apptype']='';
156.	$_SESSION['openidkey']='';
157.	//自定义增加的会话数据
158.	$_SESSION['nickname']='';
159.	$_SESSION['userpic']='';
160.}
161.//函数printerrortourl在/e/class/connect.php
162.//直接转向
163.function printerrortourl($gotourl='',$error='',$sec=0){
164.	global $empire,$editor,$public_r,$ecms_config;
165.	echo'<meta http-equiv="refresh" content="'.$sec.';url='.$gotourl.'">'.$error;
166.	db_close();
167.	$empire=null;
168.	exit();
169.}
170.?>

 

Guess you like

Origin blog.csdn.net/weixin_41653910/article/details/88753543