• PHP核心之Cookie


    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
  • 相关阅读:
    泛型类,泛型方法的使用
    Mapper注解与MapperScan注解
    Configuration注解
    LA 4254 Processor (二分 + 贪心)
    UVa 10382 Watering Grass (贪心 区间覆盖)
    UVA 10795 A Different Task (递归)
    LA 3401 Colored Cubes (搜索 + 暴力)
    uva11464 Even Parity (枚举+递推)
    icpc2021 昆明 K (dfs爆搜)
    hdu3533 (bfs + 模拟)
  • 原文地址:https://www.cnblogs.com/SharkJiao/p/14156831.html
Copyright © 2020-2023  润新知