• 网页免登陆实现



    链接:https://www.zhihu.com/question/20182967/answer/76631201
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    COOKIE由于存储在客户端,有被随意篡改的风险,所以其实服务器判断用户登陆状态,一般都是用SESSION的...SESSION的数据存储在服务器中,但是必须通过客户端的COOKIE来找到对应的SESSION
    所以用户登录的过程实际上是
    1:用户输入用户名密码,POST数据到服务器
    2:服务器判断用户名密码是否正确,若正确,则在客户端创建一个存储SESSION_ID的COOKIE,并且在服务器中创建一个相对应的SESSION_ID的SESSION,SESSION里面的数据可能为用户的数据
    3:以后该用户进行操作时,先从客户端取出SESSION_ID,找到服务器相对应的SESSION,取出数据,进行校验后再进行下一步操作..
    然后说说我理解的保持登陆状态
    由于COOKIE存储在客户端,所以不建议用isset($_COOKIE['username'])来判断用户是否登陆.
    因为用户完全可以伪造一个COOKIE,来达到欺骗服务器的目的...
    那么,我想到的两种方法是:
    1:上面有人说了,存储username和加密的密码,再次访问时,服务器取出COOKIE数据,与数据库做校对,如果通过,则判断为已经登陆
    2:建立一个MySQL表,里面存cookie_id,username,expire,time,然后每次登陆时,根据用户选择保存登陆时间,来生成一个md5加密的cookie_id(可以用username,时间戳和随机数生成),然后将cookie_id,username,用户保持的登陆时间,当前时间戳一起插入数据库中,并且创建一个名为cookieid,值为上述md5加密的cookie_id的COOKIE.
    那么下一次用户访问时,服务器可以先取COOKIE,根据COOKIE里的cookieid找到相对应的数据库中的数据,判断有无合法COOKIE,有无生命周期等...如果全部通过就能判定为登陆了
  • 相关阅读:
    【对拍√】
    hdu5791 TWO
    luogu P1220 关路灯
    【NOI2001】食物链
    【HAOI2016】食物链
    luogu P1006 传纸条
    可持久化平衡树
    可持久化并查集
    线段树合并(【POI2011】ROT-Tree Rotations)
    可持久化数组
  • 原文地址:https://www.cnblogs.com/nazhizq/p/7281382.html
Copyright © 2020-2023  润新知