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来完成登陆标识验证:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值