Cookie
- 概念
- A页面中的变量如果提供给B页面访问的方法
- 方法一:包含文件
- 方法二:get或post提交
- 方法三:cookie,cookie就是保存在客户端的信息文件
原理
-
信息传输流程
- 客户端向服务器发送请求
- 浏览器自动的将信息放到请求头中带到服务器
- 服务器从请求头中获取带来的信息
- 服务器将值放到响应头中发送到客户端
-
概述
- cookie是保存在客户端的信息包(一个文件)
- 通过
header() setcookie()
操作响应头 - setcookie()作用:将值放到响应头中发送到客户端,并保存到客户端
-
语法
header(key:value)
<?php
header('content-type:charset=gbk');
header('name:Sunny');
?>
设置cookie
-
在响应头中可以看到cookie的信息
Set-Cookie: name=Sunny
-
客户端有cookei信息后,每次请求服务器,cookie的信息都会自动的放到请求头中带到服务器
Cookie: name=Sunny
<?php
setcookie('name','Sunny');
?>
获取cookie
-
概述
- 关闭浏览器后,cookie消失。这种cookie称为临时性cookie
- cookie的信息不可以在不同的浏览器中共享,不可以跨浏览器
-
获取cookie
- 超全局变量
$_COOKIE[]
- 超全局变量
<?php
etcookie('pwd','123');
echo $_COOKIE['pwd'];
?>
永久性cookie
-
概述
- 关闭浏览器后cookie的值不消失
-
应用场景
- 登录页面,记住密码
-
语法
- 给cookie添加过期时间就形成了永久性cookie
- 过期时间是时间类型是时间戳
<?php
$time= time()+ 3600;
setcookie('name','tom',$time);
echo $_COOKIE['name'];
?>
cookie的有效目录
- 概述
- cookie默认在当前目录及子目录中有效
- cookie一般要设置在整站有效
setcookie('name','tom',0,'/'); // /表示根目录
支持子域名
- 概述
- 每个域名代码一个网站,网站之间的cookie是不可以相互访问的
- 百度下有多个二级域名的网站,他们自己的cookie是要共享的,实现如下
//在baidu.com域名下都有效
<?php
setcookie('name','tom',0,'/','baidu.com');
?>
<a href="http://www.bb.baidu.com/bb.php">跳转</a>
是否安全传输
- 概述
- 安全传输就是https传输
- 默认情况下https和http都可以传输cookie,默认是false
// true表示只能是https传输
setcookie('name','tom',0,'/','',true);
是否安全访问
- 概述
- 默认情况下,PHP和JS都可以访问cookie,默认是false
- 安全访问,PHP可以访问,JS不可以
# 后台代码
<?php
setcookie('name','tom',0,'/','',false,true);
?>
<a href="/5-demo2.php">跳转</a>
# 前端代码
<?php
echo $_COOKIE['name'],'<br>'; //PHP获取cookie
?>
<script type="text/javascript">
document.write(document.cookie); //js获取cookie
</script>
删除cookie
- 概念
- cookie中只能保存数字和字符串
<?php
//setcookie('name',false); //删除cookie方法一
//setcookie('name'); //删除cookie方法二
setcookie('name','tom',time()-1); //删除cookie方法三
?>
cookie的缺点
- 概念
- 因为在浏览器中可以看到cookie的值,所以安全性低
- 因为只能保存字符串和数字,所以可控性差
- 因为数据放在请求头中传输,增加了请求时候的数据负载
- 因为数据存储在浏览器中,但浏览器存储空间是有限制的,一般是4K