cookie (储存在用户本地终端上的数据)
什么是cookie
cookie是服务器暂时存放再自己电脑当中的资料,方便服务器辨认自己的计算机
cookie是由服务器端生成,发送给User-Agent,浏览器将Cookie的key/value(键值对)保存到某个目录下的txt文件内,下次请求同一网站时就返送该Cookie给服务器
举例cookie的方便性
- 用户登录,记住账号密码,下次访问该网站时就可以保存登陆状态
- “购物车”用户再不同页面选中,添加到购物车,也会写入cookie
cookie工作原理
cookie操作
添加cookie数据
函数: setcookie($name,$value,$expire,$path,$domain,$secure)
cookie中的数据都是以键值对保存的
参数:
- $name:cookie的名称
- $value:cookie的值
- $expire:cookie的有效期
- $path:cookie的服务器路径
- $domain:cookie所在域
- $secure:是否通过安全HTTPS连接来传输cookie
函数返回bool,成功返回TRUE,失败返回FALSE
<?php
setcookie("username","abc");
setcookie("password","12345");
设定cookie有效时间
参数$expire,指定cookie保存的时间,cookie默认是关闭浏览器时cookie失效
$expire是一个时间戳,一般用time()设置时间戳并加上固定秒值
<?php
//设定一周后过期
setcookie("username","abc",time()+7*24*3600);
setcookie("password","12345",time()+7*24*3600);
设定cookie有效路径
设定cookie只能在指定目录下生效
参数$path,默认“/”当前网址根目录
//path为某一目录
setcookie("username","abc",time()+7*24*3600,"/path");
setcookie("password","12345",time()+7*24*3600,"/path");
设定cookie有效域名
用bilibili举例
域名划分
- 主域名:bilibili.com
- 一级域名:www.bilibili.com 主站
- 二级域名:www.space.bilibili.com b站用户中心
二级域名是一级域名的下属
如果将cookie设定为主域名,则所有子域名也可用
//path为某一目录
//主域名在所有子域名下都可用
setcookie("username","abc",time()+7*24*3600,"/","bilibili.com");
//子域名只能在当前域名下使用
setcookie("password","12345",time()+7*24*3600,"/","www.bilibili.com");
是否https安全连接发送cookie
默认情况下http协议发送,如果仅限https发送cookie数据,则在http写一下无法获取
//true:只能通过https发送cookie
//false:可以通过http发送cookie 默认为false
setcookie("username","abc",time()+7*24*3600,"/","bilibili.com",false);
setcookie("password","12345",time()+7*24*3600,"/","www.bilibili.com",true);
读取cookie数据
通过超全局数组 **$_COOKIE[ ]**来实现
//通过键值对获取cookie
用户名: $_COOKIE['username'];
密码: $_COOKIE['password'];
删除cookie的方法
将有效时间设定为过去的时刻
setcookie("username","abc",time()-1);
setcookie("password","12345",time()-1);
将cookie值设为空或false
setcookie("username","");
setcookie("password",false);