今天是平安夜,现在已经是圣诞节了,祝大家都平平安安,开开心心的!
今晚我们分享一下用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';
今晚分享的知识点非常重要,而且应用十分广泛,希望大家好好理解原理,只要原理本质明白了,其实代码真的是非常简单的,好了,今晚分享到此结束,原理不明白的,可以给我留言,我可以再给大家详细讲解!
大家可以关注我的微信公众号:iwork,我会每天推送一篇原创文章,让大家都能有所收获!