cookie和session都属于会话技术
会话技术的实现方式主要有两种:
1, cookie技术:将会话数据存储在浏览器端,所以也是浏览器端的一种技术
2, session技术:将会话数据存储在服务器端,所以也是服务器端的一种技术
会话技术也就是可以在同一台浏览器与服务器直接的多次访问的时候,将数据持久化存储的一种技术!
cookie的增删改都是通过setCookie这个函数来完成的!基本的语法形式如下:
setCookie(名,值);
第一次请求时
第二次请求
$_COOKIE
使用一个预定义的超全局数组变量$_COOKIE完成对cookie数据的获取!
PHP会将浏览器发送请求的时候携带的所有的cookie数据存放到$_COOKIE数组变量,供所有的PHP脚本使用!
cookie的有效期默认的是一个会话周期,所谓的会话结束时,就是关闭浏览器的时候!
当然,也支持设置有效期:
需要使用setCookie的第三个参数,可以对有效期进行设置,而且是使用一个时间戳来表示的
setCookie(名,值,有效期的时间戳);
注意:
浏览器在向服务器发送服务请求的时候,首先会检测当前的cookie哪些是有效的哪些已经过期了,只有没有过期的cookie数据才会在请求的时候主动携带!
有效期的几个特殊的值:
0:默认值(缺省值),表示一个会话周期
time()-1 :一个过去的时间,这是删除一个cookie的最最标准的做法,只要是一个过去的时间就行!
PHP_INT_MAX:逻辑上表示一个永久的有效期(到2038年)
cookie的有效路径
默认的,cookie是在当前的目录以及当前的子目录是有效的,在其父目录是无效的!
注意:
有效路径也有一个默认值,就是一个空字符串!
setCookie(名,值,有效期,有效路径);
cookie都是基于域名来保存的,默认的,cookie只能在当前的站点是有效的!
我们一样可以通过设置setCookie的第5个参数进行有效域的设置:
setCookie(名,值,有效期,有效路径,有效域);
注意:
cookie的有效域也有一个默认值,也是一个空字符串!\
cookie的仅安全传输
什么是安全传输?
就是采用ssi加密后的http协议的方式进行传输!从形式上来看,协议头是以https开头!
默认的,无论是http还是https协议头,所有的cookie数据都会被传输!
所谓的仅安全传输,就是仅仅当以https开头的时候,才会把cookie数据携带到服务器端(出于安全的考虑!)
我们可以通过设置setCookie的第6个参数进行设置,如果设置为true,意思就开启了仅安全传输!(默认值为false)
setCookie(名,值,有效期,有效路径,有效域,是否仅安全传输);
COOKIE的仅HTTPONLY
默认的,浏览器存储的cookie数据是可以被其他的脚本所处理的,比如:JS脚本!
如果不想让其他的脚本处理cookie数据,可以设置第7个参数为true,意思就是开启了仅HTTPONLY(默认值为false)
setCookie(名,值,有效期,有效路径,有效域,是否仅安全传输,是否仅HTTPONLY);
cookie属性的默认值的总结:
cookie的值,仅仅支持字符串类型!
cookie的下标(键),可以写成数组下标的形式!
利用cookie实现每次访问的时候都能显示上次访问的时间的功能!
(第一次访问的时候给出欢迎的信息!)