web程序员入门必学之会话技术cookie
概念
可以使在同一台浏览器向同一个服务器的多次请求之间,将数据持久化存储的一种技术!
为什么需要会话技术?
因为B/S请求响应模式是无状态无记忆的,任意的请求间,不存在任何的联系,不能将请求状态保持下去!
正式由于B/S的这种特点,导致了我们用户无法实现连续的业务逻辑,比如:购物!填写资料!
分类
cookie技术:基于浏览器端的一种技术
session技术:基于服务器端的一种技术
COOKIE初步
基本原理
允许服务器端,在浏览器端存储数据的一种技术!
所以,cookie技术其实是浏览器端的一种技术,它的基本特点如下:
1,允许服务器向浏览器发送指令,用来存储和管理存放在浏览器端上的cookie数据
2,如果浏览器存储了某台服务器所设置的cookie数据,那么浏览器再次向服务器请求的时候,浏览器会主动携带这些cookie数据到服务器端
基本操作:cookie的本质还是数据,只要是数据,基本操作就是增删改查
设置(增删改):cookie的增删改都是通过setCookie这个函数来完成的,基本的语法格式如下:
setCookie(名字,值)
如何删除?删除,就是设置这个cookie的变量为空字符串!修改cookie就是cookie变量的名字不变,值发生了改变!
获取cookie的值(查)
所谓的获取cookie变量的值就是获取浏览器在请求服务器的时候携带的cookie数据!
获取cookie变量的值,是使用超全局数组变量$_COOKIE完成对cookie数据的获取!
php会将浏览器上发送请求时携带的所有的cookie数据存放到$_COOKIE数组变量中,供php的脚本使用!
其中,每一个$_COOKIE中的元素,都对应着一个cookie变量,其中,变量的名字就是cookie元素的键key,变量的值就是cookie元素的值value
思考:如果此时,我们换一个浏览器再次请求10cookie2.php,能不能获得数据?
回答:不能!在firefox下查询cookie数据:在工具---选项----隐私
COOKIE的属性
COOKIE的有效期
默认的是:
一个会话周期结束,也就是浏览器关闭的时候,cookie的有效期就结束了!里面的数据也就没有了!
也可以设置有效期:
我们可以通过设置setCookie函数的第三个参数对cookie的有效期进行设置!
有效期是使用一个时间戳来表示的!
注意:
浏览器在向服务器发送请求时候,会检测cookie数据是否过期,只有没有过期的数据,在请求的时候才会携带!
有效期的特殊值:
0:默认值,表示一个会话周期
time() – 1 :是删除一个cookie的最最标准的做法,只要是一个过去的时间就行
PHP_INT_MAX:逻辑上表示永久有效的cookie(到2038年)
COOKIE的有效路径
所谓的有效路径,就是该cookie变量在哪能访问在哪不能访问!
默认的是:
cookie在当前目录以及当前目录的子目录是有效的!但是,如果在某一个子目录设置了一个cookie变量,其父目录是无法访问的!
COOKIE的有效域
这里的域指的就是域名!
cookie都是基于域名来保存的!默认的,cookie只能在当前的域名下才有效!
http://www.shop.com/11cookie2.php的域名是www.shop.com
但是,随着互联网的发展,出现了子域的概念,也就是说,我们可以通过设置,是的cookie的有效域,扩展到某个一级域名下的所有的子域!
比如:shop.com是一级域名,www.shop.com和bbs.shop.com一样都是二级域名!
可以通过修改COOKIE的第5个参数,第5个参数如果为空字符串,也就是使用默认值,但是也可以手动配置!
COOKIE的仅安全传输
意思是:是否仅安全传输,默认值是false,如果为true,意思就是仅安全连接的时候才传输!
什么是安全传输?就是以https://开头的,https是一种加密后了的http协议,更安全!
COOKIE的仅HTTPONLY
是否仅HTTPONLY!默认的,浏览器存储的cookie数据是可以在其他的任意的脚本进行处理的,比如JS中!
但是,如果将COOKIE的第7个参数设置为true(默认值为false),表示仅仅在http请求中使用,也就是说,其他的脚本就不能使用了!
注意:cookie的值,仅仅支持字符串的类型!