uchome 2.0登陆验证机制

uchome2.0的登录验证机制越来越像Ucenter的了

Uchome2.0采用cookie+数据库的方式来进行用户登录验证的
1:登录
A:用户填好登录表单之后数据被提交给sourcedo_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函数在sourcefunction_space.php中定义
其主要功能为a:清除session表中的某个用户的记录b:获得用户的IP以及是否使用隐身道具
c: 将setarr变量数组中的数据插入到session表中。d:更新统计数数据等
G:将用户名与密码加密写入cookie中

2:验证
判断当前用户登录状态是通过sourcefunction_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的身份去操作,不存在就说明用户登录不成功 需要用户登录才能操作。

时间: 2024-08-03 08:42:22

uchome 2.0登陆验证机制的相关文章

ZenTaoPHP框架的数据验证机制

项目中数据验证在web应用中尤其显得重要.下面来给大家介绍下ZenTaoPHP框架的数据验证机制. 一.首先来确定一个问题,即验证的规则放在什么地方? mvc程序中,每一层都可以放验证规则.比如很多的表单验证,会自动根据用户的输入进行验证,然后给予提示.那么数据验证放在哪一层呢?这个问题网络上大家有很多的争议.有的人主要放在view这一层,有的则主张放在control层.禅道框架选择了model层. 为什么这样做呢?因为model层是最低的一层,所有的数据操作,都要经过model来进行处理.那么

Silverlight控件注册验证机制探索

先给大家介绍一下Silverlight客户端控件的使用情景.一般来说, Silverlight客户端控件会销售给开发Silverlight程序的公司,他们是控件的购 买者.他们开发的程序中会用到Silverlight客户端控件.但是Silverlight控件 最终是在浏览Silverlight 程序的网站用户机器上执行的.说的有点绕,请参照 下图. 这个纯客户端注册验证机制主要流程如下: 1,控件购买者下载使用Silverlight控件(Silverlight控件中包含 PublicKey及验证

手把手记录SQL注入后绕过后台登陆验证

下面直接进入正题吧.一提到绕过后台登陆验证直接进入网站后台管理系统,想必大家都能想到经典的万能密码:or=or吧,今天要给大家分享的一个技巧也和这个差不多,不过是这个方法比较另类. 在讲该技巧之前我们还是先来简单回顾下经典的or=or原理,更详细的原理大家可以网上搜索相关资料了解下.我们都知道后台登陆验证一般的方式都是 将用户在登录口输入的账号密码拿去与数据库中的记录做验证,并且要求输入的账号密码要等于数据库中某条记录的账号密码,验证通过则程序就会给用户一个 sssion,然后进入后台,否则就返

angularjs中$http、$location、$watch及双向数据绑定学习实现简单登陆验证

使用$http.$location.$watch及双向数据绑定等实现简单的用户登陆验证,记录备忘: 1.$http模拟从后台获取json格式的数据: 2.$watch实时监控数据变化: 3.$location.path实现页面跳转: 4.$scope实现数据绑定,包括input内容及文字样式等 app.js代码 var app=angular.module('contactsApp',['ui.router']); app.config(function($stateProvider,$urlR

研究人员发现三大公司的2FA短信验证机制存漏洞

比利时安全信息研究员Arne Swinnen报告在Instagram(Facebook),谷歌和微软产品中,发现了一个共同的利用2FA验证机制缺陷的验证服务的漏洞.这些公司部署的2FA验证机制 可通过短信的形式发送短验证码,同时也可以使用人工语音通话读出验证码的形式验证,Swinnen发现的漏洞则利用了后一种验证方式的缺陷.这些语音通话通常将那些特定用户的电话号码和用户账号紧密互绑,Swinnen理论上可以利用此漏洞向这些服务的用户账户发动攻击,在实验中他发现Instagram,谷歌和微软Off

c#-关于登陆验证安全性问题

问题描述 关于登陆验证安全性问题 在CS程序上输入账户.密码,点击登陆,要求在服务器上进行密码验证并返回验证结果,请教大神该怎么处理 解决方案 查询数据库 select count(*) from 表 where 账户=输入账户 and 密码=输入密码 cs判断返回结果大于0就登陆成功 解决方案二: 你这方法真够安全的 呵呵

Shrio登陆验证实例详细解读(转)

    摘要:本文采用了Spring+SpringMVC+Mybatis+Shiro+Msql来写了一个登陆验证的实例,下面来看看过程吧!整个工程基于Mavevn来创建,运行环境为JDK1.6+WIN7+tomcat7. 这里主要说了Shiro的搭建过程,Spring+SpringMVC+Mybatis的搭建过可以看这里Spring+Mybatis+SpringMVC+Maven+MySql搭建实例 整体工程免费下载:http://download.csdn.net/detail/evankak

通过扩展改善ASP.NET MVC的验证机制[使用篇]

原文:通过扩展改善ASP.NET MVC的验证机制[使用篇] ASP.NET MVC提供一种基于元数据的验证方式是我们可以将相应的验证特性应用到作为Model实体的类型或者属性/字段上,但是这依然具有很多的不足.在这篇文章中,我结合EntLib的VAB(Validation Application Block)的一些思想通过扩展为ASP.NET MVC提供一种更为完善的验证机制.[源代码从这里下载] 目录: 一.扩展旨在解决怎样的验证问题 二.一个简单的消息维护组件 三.多语言的支持 四.基于某

mvc C# JavaScript LigerUI oracle实现用户的注册、登陆验证、登陆_C#教程

一.登录数据库,在数据库中创建表User00,并且插入数据. 表的字段分别为: Id(编号).Name(姓名).Grid(级别).Score(积分).Password(密码).Age(年龄).Code(邀请码).(其中编号是自动编号) 部分命令如下: select * from User00; /*查询User00*/ insert into User00 values('one','优',10000,'123',24); /*插入一行数据*/ update User00 set Grid='优