thinkphp 下保持用户在重启浏览器之后,还能保持之前登录的状态,我现在是用 cookie+session 进行验证。不知道服务器端如何保持 cookie 的值。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
no13bus
V2EX    问与答

thinkphp 下保持用户在重启浏览器之后,还能保持之前登录的状态,我现在是用 cookie+session 进行验证。不知道服务端如何保持 cookie 的值。

  •  
  •   no13bus 2014-03-04 16:12:49 +08:00 4299 次点击
    这是一个创建于 4310 天前的主题,其中的信息可能已经有所发展或是发生改变。
    思路大概是这样的。
    用户登录后,session['uid]赋值为用户的uid, session['username']赋值为用户的username.同时在浏览器端产生一个cookie,$aaaa=session['uid'] . ':' . session['username']
    cookie['auto']=$aaaa
    然后下次用户登录的时候检验 他的浏览器发送的cookie里面有没有auto这个key,有的话说明登录过了,直接在数据库找到,然后赋值session的相关值,让其登录。但是这样的话,不太安全。我想的是确保用户发送的cookie有auto这个key,并且cookie['auto']的值确实是
    之前的$aaaa。但是之前用户第一次登录的时候,这个$aaaa值怎么保存呢?如果不存在数据库里面,怎么才能在下次登录浏览器的时候还存在呢。用$_GLOBAL超全局变量不行呀。
    10 条回复    1970-01-01 08:00:00 +08:00
    no13bus
        1
    no13bus  
    OP
       2014-03-04 18:24:04 +08:00 via Android
    没有人知道吗?
    66beta
        2
    66beta  
       2014-03-04 18:35:13 +08:00
    貌似~~
    服务器端是session,不存cookie
    浏览器端是cookie

    cookie加密,跟服务器的session做校验?
    no13bus
        3
    no13bus  
    OP
       2014-03-05 07:34:50 +08:00 via Android
    是吗?是我问的问题太简单吗?
    zxb888
        4
    zxb888  
       2014-03-05 10:41:20 +08:00
    我最近刚做过的:用户登录检验后,把session['key']加密保存在cookie中,并在memcache中保存一个key。
    下次浏览时,把memcache保存的key与session['key']比较,如果相同,用户处在登录状态,如果不同,提示用户重新登录。使用场景类似微信登录情况。不知你是想在何场景下使用?
    no13bus
        5
    no13bus  
    OP
       2014-03-05 13:38:10 +08:00
    @zxb888 就是个论坛 类似v2ex 因为每次我打开浏览器的时候 我的v2ex都是在登录的。呵呵。那保存这个数据出了memcache,我觉得这种验证的东西只能放到数据库里面 mysql redis memcacheed。像php的$_GLOBAL是不能永久保存这个验证值的吧????有人说python的flask框架里面g变量能做到memcacheed这样的作用,重启浏览器之后还能保存着那个值。
    zxb888
        6
    zxb888  
       2014-03-05 14:20:00 +08:00
    @no13bus $_GLOBAL当然不能永久保存!!python我不懂。看你说的每次都是要登录,说明session没有起作用。估计还不太明白session的用途,建议找些sessin资料看看!方便的话,你把登录验证后给session赋值的程序片段贴上来看看。
    no13bus
        7
    no13bus  
    OP
       2014-03-06 21:21:25 +08:00
    @zxb888
    下面这个是每个控制器都会继承的类 也就是登陆验证时候要用到的。
    https://gist.github.com/9389531.git
    no13bus
        8
    no13bus  
    OP
       2014-03-06 21:23:15 +08:00
    重发一次 刚才格式看着不对。
    https://gist.github.com/9389531
    no13bus
        9
    no13bus  
    OP
       2014-03-06 21:25:29 +08:00
    @zxb888 这个是登陆进去之后进行的验证。
    https://gist.github.com/9389605
    zxb888
        10
    zxb888  
       2014-03-09 08:04:36 +08:00 via Android
    cookie('auto',$auto,3600);这是你每次都要登录的问题所在!
    但是你整个登录的流程存在明显的漏洞,我只要知道某用户的uid和username,我就能登录!!!
    实际上你的系统,根本用不到cookie。
    session一般来说是保存在服务器端的(也可以自己定义保存在cookie里);cookie是保存在浏览器端的。浏览器端的cookie是可以伪造的。
    建议找些php的session的资料和登录的源码先琢磨一下。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2662 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 09:03 PVG 17:03 LAX 01:03 JFK 04:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86