cookie 基本原理:
1,允许服务器向浏览器发送指令,用来管理存储在浏览器端的cookie数据;
2,浏览器如果存储了某台服务器上所设置的cookie数据,那麽以后的每一次请求的时候,都会主动的携带所存储的cookie数据到服务器。
cookie基本操作;
设置cookie(增删改):
cookie的增删改是通过setCookie这个函数完成的!最起码又两个参数:
setCookie (名字,值);
修改cookie:
还是使用setCookie 这个函数,修改就是保持cookie的名字不变,而值发生改变。
删除cookie:
还是使用setCookie()函数,只是将值设置为空字符串就是删除当前cookie.
setCookie(名字,' ');
查cookie:
使用预定义超全局数组变量$_COOKIE完成对cookie数据的获取,
php会将浏览器发送请求的时候所携带的所有的cookie数据存放到$_COOKIE数组变量中,供所有的脚本使用。
cookie的属性:
cookie的有效期:
cookie的有效期是一个会话周期(相当于两个人聊天,一个人离开,会话结束),就是关闭浏览器的时候,默认关闭时间是在会话结束后,也可以支持自己设置有效期,添加setcookie()函数的第三个参数。
setcookie("TestCookie", $value, time()+3600);//有效期就是在当前时间3600秒后结束会话
有效期的几个特殊的值:
0:默认值(缺省值),表示一个会话周期
time()-1:表示一个过去的时间,这是删除一个cookie的最标准的做法,只要是一个过去的时间就行。
php_int_max:
注意:浏览器在向服务器发送服务请求的书时候,首先会检测当前的cookie数据是否还处于有效期内,只有还没有过期的cookie数据才会在请求的时候主动携带。
COOKIE 和SESSION 之间的联系:
1、用户向服务器发送用户名和密码。
2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。
3、服务器向用户返回一个 session_id,写入用户的 Cookie。
4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。
5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。
开启session机制:
1,设置为自动开启,在php.ini中进行配置:
但由于自动开启后,每一个脚本都会进行相关的session的初始化工作,但不是每一个脚本都要
使用session机制,一般都不会设置为自动开启。
2,在各个需要session机制的脚本中手动开启(推荐使用):
通过session_start()函数来完成,只用使用session_start()函数,系统才会进行一些session的初始化工作。
这样做的好处,需要的时候开启,不需要的时候不开启,不同的脚本之间都需要单独开启,互不影响!
操作session机制:
session数据的增删改查,都是通过使用$_SESSION这个预定义超全局数组变量来完成的,
我们可以像操作数组一样来操作$_SESSION这个变量(只不过$_SESSION这个数组在session机制下有特殊的含义而已)。
session属性:
修改session的属性:
1.直接在php.ini中直接修改(不推荐使用)。
2.通过在脚本中使用函数来更改
session_set_cookie_params(有效期,有效路径,有效域,是否安全传输,是否仅HTTPONLY);
注意:该函数要在session_start之前进行设置!一般只用前三个属性!有效期直接写时间间隔,不用加上time();
session 的其他语法:
1.session数据可以是除了资源型之外的其他的任意类型(cookie只能是字符串类型)。
2.$_session数组元素的下标仅仅支持字符串类型(支持关联型数组),而不能是索引数组。
session与cookie的区别:
cookie | session | |
存储位置 | 浏览器端 | 服务器端 |
浏览器携带的数据量 | 多 | 少(只携带session_id) |
存储的类型 | 只能是字符串 | 任意类型(除去资源型) |
安全性 | 较低 | 高 |
默认的有效路径 | 当前目录及其子目录 | 整站有效 |
数据的存储量 | 有限制一般是4k | 理论上是无限制的 |
session数据的删除与销毁:
session数据的删除与销毁有三个层次:
1,删除其中某一个元素
2,清空整个的session的数据
3,销毁会话数据区
通过函数session_destroy()来完成
$_session 变量与会话数据区之间的交互:
1,第一次访问
之所以在程序结束之前将$_SESSION的值写入会话数据区,是因为当一个脚本结束的时候,整个脚本资源
都销毁了,包括$_session这个数组变量,所以要在销毁之前写入会话数据区中以实现数据的持久化存储!
2,第二次访问:
3.第三次访问
4.第四次访问,
由于之前的会话数据区已被销毁,所以第四次访问相当于第一次访问,系统会为浏览器重新建立一个新的会话数据区。