本篇文章给大家带来的内容是关于cookie和session的详细介绍(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
cookie技术
cookie是浏览器端的技术,可以在浏览器上保存数据的一门技术!cookie就是指的是浏览器上保存的数据!
PHP支持cookie技术!php可以向浏览器发出指令,从而将数据保存到浏览器上!
浏览器负责保存数据,而php负责控制浏览器保存那些数据!(php在是使用浏览器上cookie技术)
保存在浏览器上的cookie数据,可以在浏览器每次向服务器请求时,都可以携带该数据,向服务器发出请求,此时服务器上的脚本就可以获得该数据!
设置 cookie 变量,增,改,删
利用内部函数 setcookie 完成
形式:setcookie(名字,值)
取得 cookie 变量,读
使用预定义数组变量:$_COOKIE
该变量内保存所有从浏览器请求时所携带的cookie数据!
每个元素就是一个cookie变量数据!下标是名字,值,就是值!
利用firebug的网络选项卡:
设置时,做了什么?
在响应时,服务器发送了一条指令,在浏览器上增加一个cookie变量!
浏览器接到该指令后,在浏览器上增加了一个cookie数据!
获取时,做了什么?
浏览器会将当前站点的所有的cookie在请求时都携带到服务器上!
php会自动获得到浏览器携带的cookie,形成$_COOKIE数组,用户脚本使用!
1.cookie数据只能是字符串数据!
2.setcookie函数,可以完成增,修改,删除!
不存在,则增加,存在则修改!
删除,可以采用将值,置空的形式!
3.cookie变量的失效期
cookie数据存在有效期的概念:
默认,临时cookie。会保存到浏览器关闭!
同时,支持,增加setcookie的第三个参数,来修改cookie变量的有效期。有效期的表示方式,是一个时间戳,表示到哪个时间点,失效!
php可以通过 time()函数,获得当前的时间戳,time()增加增量的形式延长cookie时间!
此时,服务器会向浏览器发出如下指令:
网络上表示时间,都是用格林威治平时!没有时区概念的那个时间!GMT
浏览器知道cookie变量的有效期!
1.cookie存在有效路径的概念
cookie变量是只在当前目录,及其后代目录才会生效!
test/下设置, test/sub/下可以访问
反过来:
那是由于该cookie:
可以更改cookie数据的有效路径:
通过setcookie的第四个参数做修改:
/ 表示站点根目录有效!整站有效!
5,cookie子域名的概念
cookie是严格区分域名的。
支持在子域名之间是可以共享的:
利用第五个参数设置
有效期,有效路径,有效子域名!
6,$_COOKIE是捕获不了当前脚本所设置的cookie变量的!
$_COOKIE是,浏览器请求时所携带的所有cookie!
当前设置的在下次使用请求才好用!
session技术,会话技术
场景:
cookie的问题
由于是数据本身是在浏览器端:
数据的安全性问题!
数据总要在请求时携带!
怎么解决,注意保持在浏览器的多次请求间共享数据!
将数据放在服务器端,同时是数据区分浏览器,在浏览器的多次请求间共享数据!
在服务器上,为来访的每台浏览器增加一个数据空间,然后为这些数据空间分配不同唯一的标识!为每个浏览器分配一个唯一的标识,该标志应该服务器端数据库空间的标识应该一一对应
要求,浏览器每次请求时携带标识,此时服务器可以获得标识,利用标识确定数据空间,但却请求的所有的数据处理,都在当前的确定的空间内完成!
将服务器分配给浏览器的唯一标识存在浏览器的cookie内,可以保证浏览器每次来时都携带!
服务器为每一个新浏览器访问(没有确定标识的浏览器),确定标识,和在服务器上生成一个唯一的数据空间!
直接操作$_SESSION数组,就可以完成session数据的存,取!
每个session数据,就对应$_SESSION内的一个元素!对元素操作,就是对session数据做操作!
但是,session技术,包括生产session标识,开辟session数据空间,为浏览器分配session标识等等,都需要PHP的session机制支持!
因此,需要先开启session的支持,才能操作$_SESSION变量,从而去操作session数据!
开启:
session_start();
操作:
$_SESSION;
先开启后操作:
更新和删除:
浏览器端cookie中保存的sessionID:
当前浏览器第一次对服务器发出请求时,服务器不能确定浏览器的标识
会重新生成一个唯一标识,以cookie的形式保存到浏览器端!
其中默认的cookie变量名为:PHPSESSID。
该cookie标量,也被称之为sessionID!
当浏览器拥有了sessionid这个cookie变量后,接下来的请求都会携带该ID发出请求:
服务器的端的是session数据空间
默认情况下,php,会将保存session数据的空间,生成一个文件来完成!通过文件的名称来区分属于哪个ID的!
默认的被保存在服务器操作系统的临时目录内:
大概的流程:
测试:
使用session来完成登陆标识验证:
以上是cookie和session的详细介绍(图文)的详细内容。更多信息请关注PHP中文网其他相关文章!