cookie 和 session 主要不同的是存储机制。cookie 是一个web页面到下一个页面的数据传输方法,存储在客户端;session 是让数据在页面中持续有效的方法,存储在服务器端
COOKIE
1.什么是cookie
Cookie 是在HTTP协议下,通过服务器或或脚本语言可以维护客户浏览器上信息的一种方式,存在与http请求头中。
cookie 简单的说,是web服务器暂时存储在用户硬盘上的一个文本文件。cookie文本文件命令格式:
用户名@网址[数字].txt
2.创建cookie
在PHP中通过 setcookie() 创建cookie。
cookie 是 HTTP 头标的组成部分,而投标必须在其他内容发送以前发送,因此在 setcookie() 之前不能有任何内容的输出。
cookie 语法格式如下:
bool cookie( name [,value [,expire [,path [,domain [,secure]]]]])
expire : 有效时间
path : cookie 在服务器端的有效路径
domain : cookie 有效域名
secure : cookie 是否仅通过安全的https,1,只在https上有效, 0,默认值都有效
3.读取Cookie
$_COOKIE[] 超全局数组读取浏览器端的Cookie值
4.删除Cookie
setcookie( "name","",time()-1 ); //值为空,有效期小于当前时间
5.cookie 生命周期
如果不设置失效时间,为会话Cookie,保存在内存中,关闭浏览器,Cookie失效。
设置了失效时间,保存在硬盘中,关闭浏览器依然有效,知道有效期超时。
浏览器最多允许存储300个Cookie文件,每个文件最大容量为4KB ,每个域名最多支持20个Cookie,达到限制,浏览器自动随机删除Cookie文件
SESSION
1.什么是SESSION
在计算机术语中,session 是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间。因此。Session实际上是一个特定的时间概念。
Session 工作原理: 启动一个session会话时,会生成一个随机而且唯一的session_id ,也就是session 的文件名,session_id 存储在服务器的内存中。关闭页面时 id 自动注销。
2.创建会话
2.1启动会话
- session_start() 函数
bool session_start(void); // 使用函数之前浏览器不能有任何内容的输出
- session_register()函数
session_register() , 函数需要 php.ini 中将 register_golbals 设置为on ; 使用session_register() 时不需要调用session_start(),PHP在创建了变量后隐含的调用了session_start()。
2.2 注册会话
session_start();
$_SESSION['name'] = 'yuzhangsir';
2.3 使用会话
if(!empty($_SESSION['name'])){
$name = $_SESSION['name'];
}
2.4 删除会话
unset( $_SESSION['name'] ) ; //删除单个会话,必须加元素,否则一次注销整个$_SESSION 会禁止整个会话功能,没有办法恢复,用户也没有办法再注册
$_SESSION = array(); // 删除所有的会话变量
session_destroy() ; // 结束当前会话
3.SESSION 设置时间
3.1客户端没有禁用Cookie
session_start();
$time = 36800 ;
setcookie( session_name(), session_id(), time()+$time , '/');
$_SESSION['name'] = 'yuzhangsir';
3.2 客户端禁用了Cookie
1.提醒用户必须打开Cookie ;
2. php.ini 中,session.use_trans_sid = 1 , 或者编译时打开 -enable-trans-sid 选项;
3. 文件或者数据中存储 session_id
4.Session 临时文件
在服务器中,如果将所有用户的Session 都保存在临时目录中,会降低服务器的安全性和效率,session_save_path() ,可以设置存储路径、
$path = './tmp/';
session_save_path($path);
session_start();