先理解为什么出现cookie和session:
为了使得网站可以跟踪客户端与服务器之间的交互,保存和记忆每个用户的身份和信息,我们需要一种强有力的解决方案,这样就产生了会话控制。
会话控制思想就是能够在网站中跟踪一个变量,我们可以跟踪变量,就可以做到对用户的支持,并根据授权和用户身份显示不同内容,不同页面。
一、cookie:
cookie是在http协议下,服务器或脚本可以维护客户端信息的一种方式。当用户访问服务器时,服务器可以设置和访问cookie的信息。cookie保存在客户端。
1)cookie大小限制:
一个域名的每个cookie限制4千字节;
2)设置cookie
bool setcookie(string name,[string value,[int expire,[string path,[string domain,[int secure]]]]]);
name 设置cookie的名字。(必须)
Value 设置cookie的值。
expire 设置cookie的过期时间和日期,用一个标准的Unix时间标记,可以用time()函数取得,以秒为单位。
细节:Setcookie只能保存字符串,如果不是字符串,能转换成字符串它就自动转换,如果不能转换,则不能保存。如果没有设置过期时间,则这个内容不会保存到客户电脑中的cookie当中,它会保存到浏览器的缓存当中,也就是说它的声明周期维持到浏览器关闭为止。在设置 cookie 的页面上去访问cookie信息,是访问不到的,要刷新一下,或者在其他的页面接受。
删除cookie:调用只带有name参数的setcooki,那么名为这个cookie将被从客户机上删除;设置Cookie的失效时间为time()或time()-1
二、session
Session从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期。在会话期间,分配客户唯一的一个SessionID,用来标识当前用户,与其他用户进行区分。Session会话时,SessionID会分别保存在客户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的Session目录中。SessionID可以作为会话信息保存到数据库中,进行Session持久化,这样可以跟踪每个用户的登陆次数、在线与否、在线时间等
session_start() ://开始一个会话或者返回已经存在的会话。
说明:这个函数没有参数,且返回值均为true。如果你使用基于cookie的session,那么在使用session_start()之前浏览器不能有任何输出。尽量把session_start()写在页面的前面。
1)直接关闭浏览器和点击退出按钮有何区别?
是有区别的,安全退出,及时销毁session文件,如果直接关闭浏览器,session仍然保留在服务器上。
2)session的生存周期
PHP的session默认在服务器端,每个session一个文件,如果没有设置session的生存周期,关闭浏览器后该ID自动注销(原因是:PHP配置文件里有设置gc_maxlifetime,还有gc_probability gc_divisor 有一定概率的删除会输数据,参考http://php.net/manual/zh/session.security.ini.php);在没有禁用cookie时,cookie在启动session会话的时候扮演的是存储sessionID和session生存期的角色;所以可以修改cookie的周期来间接控制session的周期
Session_set_cookie_params()函数设置
setcookie(session_name(), session_id(), time()+600);
欢迎大家讨论,对于session的生存周期理解
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有