UCHOME2.0登录验证机制分析
时间:2009-09-23
来源:互联网
uchome2.0的登录验证机制越来越像Ucenter的了
Uchome2.0采用cookie+数据库的方式来进行用户登录验证的
1:登录
A:用户填好登录表单之后数据被提交给source\do_login.php 处理
B:在do_login.php中下面这些语句接收传递来的用户名密码与cookie生效时间
C:然后验证用户提交来的用户名以及密码的正确性,不正确则跳转并提示登录失败
注意:这里验证用户名与密码的正确性是通过uc_client在Ucenter用户中心数据库中查询的
D:若验证通过之后,再将获取到得用户账户信息赋给setarr变量数组
E:查询uchome的数据库看该用户信息是否存在于Uchome数据库中,不存在的话,则将从Ucenter中查询到的用户数据写入到uchome的member表中,存在则将member中的密码替换掉从Ucenter中查询出来的密码,存入setarr变量数组中。
F:将用户登录信息写入到Uchome的session表中
Session表的数据如下
Insertsession函数在source\function_space.php中定义
其主要功能为a:清除session表中的某个用户的记录b:获得用户的IP以及是否使用隐身道具
c: 将setarr变量数组中的数据插入到session表中。d:更新统计数数据等
G:将用户名与密码加密写入cookie中
2:验证
判断当前用户登录状态是通过source\function_common.php中的checkauth函数实现的
下面就来分析这个函数
A:判断$_cookie[auth]是否存在,若不存在则不进行任何处理,并清除所有cookie
若存在则:
B:从cookie中反解出用户名跟密码信息
注意:这里说的密码以及上面说的将密码加密进cookie中的密码并不是用户的真实密码,而是经过md5双重加密并且salt处理后的密码
C:从session数据表中取出用户ID为$_SGLOBAL[supe_uid]的用户信息,若该记录存在则执行下面的操作,否则执行D操作(直接查询用户数据库)
如果取出来的密码与cookie中的密码相等,那么判定为登录成功将数据写入到$_SGLOBAL['session']数组
否则判定为登录失败,清除所有cookie
D:在C步时,若在session表中没有该用户的数据则,在用户数据表member中查询该ID得用户数据,看cookie中的密码是否与数据库中的密码一样,如果一样则登录成功,并将用户数据写入到session表中保持用户的登录状态,否则登录失败
上面无论是用session表来判定登录状态还是用member表来判定登录状态,都会影响到一个变量,那就是$_SGLOBAL['supe_uid'],在程序处理的时候,用户登录与否一般要用到得变量就是$_SGLOBAL['supe_uid']。
例如在space.php文件中 有个这样的语句
此语句中的checklogin函数就是检测用户是否需要登录
这个函数就是看$_SGLOBAL['supe_uid']是否存在,存在的话就以这个ID的身份去操作,不存在就说明用户登录不成功 需要用户登录才能操作。
作者: E蜗牛 发布时间: 2009-09-23
作者: houhuiyang 发布时间: 2009-09-24
作者: syw0602 发布时间: 2009-09-25

作者: 特蓝克斯 发布时间: 2009-09-26
作者: cuiyh 发布时间: 2009-09-27
作者: 半个书生 发布时间: 2009-10-10
作者: blackhailang 发布时间: 2009-10-14

写的很详细,也很易懂。学习了
作者: fejay 发布时间: 2009-10-15
作者: sinopf 发布时间: 2009-10-16
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28