对于普通的注册登录页面来说,我们是要通过session来保存用户当前状态.然后到达一定时间之后就销毁重新登录.
概要:
Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。
cookie指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
每当我们关闭浏览器之后,再重新打开浏览器之后,会重新生成一个sessionID,所以对应的cookies就找不到了.那么怎么实现记录登录状态呢?关闭浏览器之后再打开还在.因为cookies是存在本地上的,我们不可能把用户的信息存在本地上,不安全.那么我们肯定是存在session里面的.这个我们后期文章再讨论.这里再继续谈下cookie
同时,cookie也有自己的有效期,过了期以后就失效了,本地的cookie文件会被自动删除。需要再次登录,输入帐号密码,然后生成新的cookie。这样做的主要目的还是为了安全考虑。
1.设置cookie
setcookie("username","user",0,"/");
setcookie("username","user",time()+60*60,"/");
第一个当中的时间放了个0进去,难道代表生存时间为0.明显不可能,它有着特殊的意义,表示cookie的有效期随着浏览器的关闭而结束。他们的路径中都放了个”/”。这个就代表在这个域名下的所有contentpath都可以访问cookie,也就是说这个网站下的所有页面都可以追踪这个cookie。
2.删除cookie
setcookie("username","",time()-3600,"/");
3.查看cookie
print_r($_COOKIE);
在php.ini中
1、session.use_cookies
把这个的值设置为1,利用cookie来传递sessionid
2、session.cookie_lifetime
这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废
3、session.gc_maxlifetime
这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就失效,但是删除是看几率(如下面所说)。
设置php.ini,找到session.gc_maxlifetime = 1440 #(PHP5默认24分钟)
session.gc_probability = 1
session.gc_divisor = 1000
garbage collection 有个概率的,1/1000就是session 1000次才有一次被回收。
只要你的访问量大了,那就能达到回收的效果.
或者你也可以设置一下session.gc_divisor 的值,
比如:session.gc_divisor = 1,这样就能明显的看到SESSION过期的效果了.
1.如果单纯通过设置session生命周期是不行的,因为session大概率还保留在服务器上.如果设置大概率的gc调用呢,也是不行的,如果我们session数据修改了,这样session文件修改时间也变了.又得重新算,不准确
2.设置session.cookie_lifetime.貌似这样就不能通过cookie来获取session id了.但是可以通过URL重写来获取session内容
3.只能通过给session第一次操作的时候,添加一个时间戳,每次访问之前都判断一下就可以的.