Heim >Backend-Entwicklung >PHP-Tutorial >请问怎么提高登录验证的效能

请问怎么提高登录验证的效能

WBOY
WBOYOriginal
2016-06-13 12:03:20933Durchsuche

请教如何提高登录验证的效能

本帖最后由 sky94132003 于 2014-07-25 21:02:14 编辑 最近做的一个系统

登录是用$_COOKIE做的

会自动生成一个识别符($identifier)和验证符($token),保存到
<br />$_COOKIE["auth"] = $identifier . ":" . $token ;<br />有做加密,在此先不提加密的事<br />


同时把
识别符($identifier)和验证符($token) 分别保存到SQL的2个栏位

做了个function,并且在confing文件中引入运作

这样就每一页都会验证

function 大约是意思是

list($identifier, $token) = explode(':', $_COOKIE['auth']);
取回$_COOKIE之前设定的
识别符($identifier)和验证符($token) 

然后对比数据库  这两个值是否一模一样

如果是正确,那就照常运作,如果不相等,就清空
setcookie('auth', 'DELETED!', time()-1);


以上这样做,就可以做到自动登录的效果了

效果和验证是可以正常使用,但问题是,大家的网站....难度验证功能都是每一页都要查询一次数据库的吗?

有没有什么别的方法?

基本上想到...是否做个别的timeout字段,定时清空,如果空了,才进行验证,又重新付值一次?


脑筋有点塞了,求个思路。
------解决方案--------------------
1、验证只发生在需要以用户数据修改系统数据数据的页面
2、增强的验证必须来自不同的数据源。将 识别符和验证符 用同一种方式传递,是没有意义的,自欺欺人的。
3、如有“踢人”的需求,那么就需要时刻检查了。可使用自定义的 session 处理程序来完成
------解决方案--------------------
直接获取cookie,用服务器的key解出来就可以了,不用验证,因为若是被修改,你用服务器的key是解不出来的

比如你就存放个uid和过期时间,要是能解出来,你就直接查询那个uid的信息,并存放到全局变量里面,解出来没有uid,说明就是被篡改了,要重新登录
------解决方案--------------------
引用:
先谢谢
1. 问题是怕流量大时有负载问题
2. 我写得这么麻烦不想用SESSION,因为要做自动登录, 应该只能用COOKIE吧?


1.负载问题我没有实际经验,但session的文件是hash,加了正确索引的用户表是树,我想前者会快一些,而且每个页面都要查询,似乎有些太占数据库连接了
2.cookie和session配合着来,session负责当前登陆,存个cookie负责下次自动登陆呗
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn