cookie和session的基本用法小结

这两天初步看了下cookiesession的用法,就个人理解,总结如下:

总结这些之前,先说下一次会话的概念,一次会话可以简单的认为是一个进程,也就是打开一个浏览器,只要不点那个×,都是一次会话,包括在浏览器的后面新建选项卡。关闭浏览器,一次会话结束。

  cookie

  存在于用户端,即谁用就存在谁的电脑上,确切的说是浏览器的缓存存放位置。语法如下:

  设置cookie 

  setcookie(‘名称’,’值’,time()+时间秒数);因为后面的两个参数不常用,所以就不写了。

  使用cookie
  $_COOKIE[‘cookie名称’];

  删除cookie

  setcookie(‘名称’,’值’,time()-时间秒数);

  举例说明:

设置cookiesetcookie(‘username’,’酱油’,time()+3600)设置用户名为酱油的cookie值,3600秒后过期

访问cookieecho $_COOKIE[‘username’];   //输出酱油

删除cookiesetcookie(‘username’,’’,time()-1);   //此时已经将这个值删除了

注意事项:

①创建一个cookie的时候都会产生一个相应的文件,删除时会讲文件也一并删除

cookie的有效期其实是从设置的时间开始的,到设定时间结束,如果在一次会话中还访问了其他的文件,对cookie的结束时间不会有改变

session

存在于服务器端,用户一般无权限操作,由系统管理员来管理,语法如下:
设置、使用session

$_SESSION[‘session名称’];

删除session
unset($_SESSION[‘session名称’]);      //指定删除

session_destroy();                     //删除一次会话中的所有session

 

注意事项:

session的垃圾回收机制是在执行session_start()才会启用(是在读操作之后执行),但是启用垃圾回收机制又与三个参数有关,分别是session.gc_maxlifetime(默认1440)session.gc_probability(默认是1)session.gc_divisor = 1000(默认是1000),启用垃圾回收机制的原则是如果这个session的生存周期已经结束,文件就成为了垃圾,每次触发这个机制的概率是ession.gc_probability/session.gc_divisor,一旦触发,将会对所有的session垃圾文件进行回收处理。

②要使用session,要先设置session_start()

③通过session来请求浏览器的时候,服务器会给浏览器返回set_cookie的值,这个值一般是以PHPSSID来标识

 

sessioncookie的对比

cookie只能存放字符串类型数据,session通吃,不过要注意在存对象类型的时候存在序列化的问题

cookie的设置只能通过setcookie(),而session是用$_SESSION[]

③其实session是基于cookie

 

session的注意事项:

session_start()的时候做了两个工作,一个是先判断浏览器是否携带session-ID,生成session文件或者找到session-ID的文件,这个时候会从session数据区(默认的是文件)读取session的数据,然后对数据的进行反序列化的操作,将反序列化后的结果给$_SESSION变量,即完成了对$_SESSION的初始化。

脚本运行周期中,对$_SESSION的操作只是对$_SESSION的操作,不会和数据区的文件进行交互。

脚本运行结束的时候,才会将session数据序列化后写入到session数据区(默认文件中)。即一次脚本周期,只会对文件进行一次读或者写操作。但是也有例外,如果使用了session_destroy(),那么在脚本结束的时候不会再向文件中写入数据。

 

完全删除session

首先session_destroy();   //删除文件,但是不会删除$_SESSION数据

然后unset($_SESSION)或者$_SESSION = array()    //一般使用的是置为空数组

最后setcookie(session_name(),’’,time()-1);       //删除浏览器中所存放的cookie数据

 

你可能感兴趣的:(php)