20150116--Cookie+Session

image

需求:跨脚本共享数据(变量信息)

会话技术

会话:当前通话,当前用户在当次打开浏览器不关闭的过程称为一次会话

会话技术:指在浏览器不关闭期间,访问一个网站的多个网页的时候,能够实现信息的跨脚本共享。

会话技术分为两类:cookie和session

COOKIE技术

cookie技术:是一种服务器将数据保存到浏览器,然后浏览器在下次访问该网站的时候,会自动将服务器保存的数据携带给服务器的技术。

cookie原理

clip_image002

clip_image004

cookie操作

1. 通过header设置响应头(显示的修改HTTP响应头)

header(‘set-cookie:名字=值’);

clip_image006

后续访问就可以访问到cookie

clip_image008

PHP中想要获取cookie都是通过超全局预定义变量$_COOKIE,$_COOKIE是一个数组,会保存当前浏览器携带过来的全部cookie数据。

浏览器关闭

clip_image010

2. 使用setcookie函数设定cookie

setcookie(名字,值);

cookie跨脚本共享

clip_image012

setcookie设置cookie

clip_image014

cookie过期

cookie保存在浏览器的有效时间,如果当前时间已经达到了cookie的生命上限,意味着cookie就会失效,浏览器就不会携带cookie去访问服务器。

默认的cookie的失效时间是浏览器关闭(会话结束)

在setcookie函数第三个参数,就是用来控制cookie的生命周期,默认是0,代表浏览器关闭就失效

clip_image016

通过setcookie的第三个参数,可以主动控制cookie的失效时间:使用有效期(时间戳)

clip_image018

控制cookie在浏览器关闭之后也不过期

clip_image020

cookie的作用域

cookie只能给当前文件及其子目录里面的文件共享,但是默认的是不能给父目录的文件共享。

clip_image022

通常,对网站进行设计的时候,需要的整个网站都能够共享cookie,需要通过setcookie的第四个参数:作用域,来进行控制。设置整站的可以通过相对路径“/”(网站根目录)

clip_image024

跨域共享cookie

在不同的域名之下都能共享cookie数据。

一级域名:域名之前只有一级名称:itcast.cn

二级域名:在一级域名有两级名称:www.itcast.cn

跨域共享cookie:指的是不同的二级域名能够共享数据,前提是他们的一级域名相同。

通过setcookie的第五个参数来实现。

clip_image026

$_COOKIE操作

$_COOKIE不能存放数组,默认的$_COOKIE只能是一个一维数组。

clip_image028

擦边球:php会主动将[]当成数组处理,但是浏览器不会

clip_image002[4]

原文地址:https://www.cnblogs.com/lifushan/p/5419435.html