首先我们来看一下会员表字段
字段名 | 类型 | 解释 | 附加说明 |
userid | int(11) | 用户ID | |
username | varchar(30) | 用户名 | |
password | varchar(32) | 用户密码 | |
rnd | varchar(30) | 随机认证码 | |
varchar(50) | 联系邮箱 | ||
registertime | datetime | 注册时间 | |
groupid | smallint(6) | 会员组ID | |
userfen | int(11) | 点数 | |
userdate | int(11) | 有效期 | |
money | float(11,2) | 金额 | |
zgroupid | smallint(6) | 到期后转向会员组ID | |
havemsg | tinyint(1) | 是否有短信息 | 1为提示有短信息,0为不提示 |
checked | tinyint(1) | 是否审核 | 1为已审核,0为未审核 |
salt | varchar(8) | salt密码加密随机码 |
相关字段说明
涉及登陆的字段有username,password,rnd,salt,checked
username: 就是用户名不用说
rnd:是randomize的缩写,取得随机数的意思,记录中会员每登陆一次变一次,用这个随机数来判断当前登陆是否有效,用两个非IE内核浏览器登陆同一个会员,第一个登陆的被挤掉就是RND的效果。
checked:会员是否被审核
password,salt:共同用于密码会员密码验证
openid第一次连接帝国CMS 或者绑定帝国CMS账号
新浪微博,腾讯微博,QQ空间等等都会给一个openid,比如新浪微博的是weiboid,腾讯微博的是nickname,QQ空间给的是openid,无论第一次连接注册还是绑定原有帝国CMS账号都是绑定一个openid而已,所以在一般在帝国CMS主表新建一个字段用于储存openid;
以后的连接
以后的连接就简单了,获得返回的OPENID后搜索帝国CMS会员主表,如果有存在的OPENID就执行登陆,没有就执行注册或绑定,trylife用的登陆函数如下:openid已经是绑定的,所以函数更新下RND之后写COOKIE就可以;买过trylife插件的童鞋可以看下这个函数在,e\trylife/common/Dev/ecms-rd-common-functions.php
- function ecms_memberlogin($userid)
- {
- global $empire,$user_tablename,$public_r,$user_groupid,$user_username,$user_userid,$user_email,$user_password,$user_dopass,$user_rnd,$user_registertime,$user_register,$user_group,$user_saltnum,$user_salt,$user_seting,$forumgroupid,$registerurl,$dbtbpre,$user_regcookietime,$user_userfen,$user_checked,$level_r;
- $r=$empire->fetch1("select * from ".$user_tablename." where ".$user_userid."='$userid' limit 1");
- $rnd=make_password(12);
- $sql=$empire->query("update ".$user_tablename." set ".$user_rnd."='$rnd' where ".$user_userid."='$userid' ");
- $logincookie=0;
- $set1=esetcookie("mlusername",$r[$user_username],$logincookie);
- $set2=esetcookie("mluserid",$r[$user_userid],$logincookie);
- $set3=esetcookie("mlgroupid",$r[$user_group],$logincookie);
- $set4=esetcookie("mlrnd",$rnd,$logincookie);
- if( $set1 && $set2 && $set3 && $set4 )
- {
- $re=1;
- }
- else
- {
- $re=0;
- }
- return $re;
- }