PHP SESSION之自动登陆的实现

用户与服务器建立连接的同时,服务器会自动为其分配一个SessionId 

储存需要的信息。服务器通过SessionId作为key,读写到对应的value,这就达到了保持会话信息的目的

今晚我们分享一下用PHP实现网站的自动登陆功能,自动登陆的本质就是长久的保存session信息,即关闭浏览

器,重新启动之后,存储在session的信息依据存在,这样就实现了自动登陆!为了让大家能够更好的理解技术的本

质,我先给大家聊聊Cookie与session。首先,Cookie是存储在浏览器本地的,它是与本机的某个浏览器密切相关

的,换一个浏览器,Cookie就会失效;而Session是保存在服务器那端的,当我们创建session之后,比如登陆成功之

后,将用户名保存在session里面,这个时候在服务器端会自动生成一个sessionID,而且这个sessionID会以Cookie

的形式,给我们浏览器返回来,因此,当我们访问该网站的其它页面的时候,我们就会带着这个sessionID的Cookie

信息过去,然后,网站就会比对我们传过去的sessionID与它服务器端存储的sessionID的值是不是一样,假如一样,

那它就会认为你是登陆成功的!

      那么为什么关闭浏览器之后,重启浏览器去访问该网站页面,session登陆信息就会失效了呢?其实原理是这样

的:由于本机的sessionID是以Cookie信息存储的,而且服务器端给我们返回的带有sessionID的Cookie是没有设置有

效时间的,因此,只要关闭浏览器,Cookie就自动销毁了,那么存储的sessionID信息也就不存在了,所以服务器判

断的时候,就会认为你登陆信息失效了!那么解决办法就是:只要我们能够给那个特殊的Cookie的sessionID设置一

个失效时间,那么一切问题就迎刃而解了,下面我以一个例子,讲解一下代码,让大家彻底明白本质!!

       // PHP开启Session

       session_start();
      // 模拟登陆验证成功

      $name = $_POST['name'];
      $pwd = $_POST['pwd'];
      if($pwd == '123'){

         // 保存用户名信息到Session 
         $_SESSION['uname'] = $name;

         // 这个就是服务器端生成的SessionID,非常重要,用于身份验证的判定
         $session_id = session_id();

        // PHPSESSID就是服务器端保存的sessionID名字,这个名字是固定的,不允许乱取
        // 当我们去访问show页面的时候,只要PHPSESSID这个Cookie值保存的sessionID还存在,说明就是登录状态
        // 也就实现了关闭浏览器重启,还保持登录状态

        // 给特殊的PHPSESSION这个Cookie,设置有效生命周期,这样重启浏览器后,Cookie信息依旧存在
       setcookie('PHPSESSID',$session_id,time()+7*24*3600);

       echo 'success';

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值