cookie和session

  • 在浏览器端持久化数据的容器

  • 可以使用js对cookie进行操作

  • cookie 允许服务器脚本(PHP脚本)在浏览器端存储数据

  • cookie特点:在cookie中数据设置后,浏览器再次请求服务器指定页面时,会自动携带cookie中的数据到服务器,在服务器中可以获取cookie中的数据;

    浏览器查看cookie数据

js操作cookie(了解)

// 设置cookie
    document.cookie = 'name=zs'; 
    document.cookie = 'pwd=123';   

// 获取cookie中的值
    var cookies = document.cookie;
    var arr = cookies.split('; '); //注意这里是 '; ' 有空格的 
    if(arr){
        for (var i = 0; i < arr.length; i++) {
            var data = arr[i].split('=');
            if(data[0] == 'name'){
                console.log(data[1]);
            }
        }
    }

jquery.cookie.js插件 操作cookie

	//向页面中引入插件js文件,基于jquery的 
	$.cookie('weight',100,{expires:7});//设置   expires 过期天数时间
	$.cookie('weight',100,{expires:-1});//设置立即过期 等于删除
	$.cookie('name');//获取
	$.cookie('name',null);//删除	
 	$.cookie(键,值,{expires:过期天数})
	$.cookie(键) //获取 

PHP操作cookie(服务器端操作cookie)

	//设置cookie
	setcookie('名称','值'); 
	setcookie('名称','值','有效期');
	//删除cookie  将过期时间设置为之前的时间即可
	setcookie('名称','',time()-1000); 
	//获取cookie  
	//$_COOKIE是PHP的超全局变量,内部存放有浏览器传过来的cookie数据,$_COOKIE只能用于获取数据
	$_COOKIE['名称'];

注意点:

  • cookie中的数据 可以被同一个网站的页面所共享
  • 不同浏览器的cookie 不能共享
  • cookie的数据存储在浏览器中,每次请求服务器,在请求报文中携带cookie的数据,发送给服务器
  • 服务器无法直接操作cookie,通过在服务器端设置响应头的的方式,通知浏览器对cookie进行设置,
  • cookie中的数据有效期,不设置即浏览器关闭,会话结束,数据销毁
  • cookie存储容量小,约4kb

session--服务器多页面交流

  • 在服务器端存储数据的容器
  • session容器是一个数组的形式,通过超全局变量$_SESSION 进行取值和设置
  • session在使用前,必须先开启session机制
  • session中的数据可以被当前网站所共享

session的基本操作

开启sessiion机制(使用session前必须调用此方法)

 session_start(); //开启session会话或者重用已经创建的会话。

session_start();的作用:

  • 在服务器中随机生成一个sessionID

  • 创建一个session会话文件,用于存储数据(文件名和session的相同,同一个会话只会创建一次)

  • 在响应头中设置cookie,在cookie中存放本次会话的sessionID

设置和获取session中的数据(通过超全局变量$_SESSION进行操作)

//设置
$_SESSION['键']='值'; 
//删除
unset($_SESSION['键']); 
//清空session
$_SESSION=[]; 
//直接删除session会话文件,PHP脚本将无法读取session数据
session_destroy()
 //获取session的id
session_id();

COOKE 和SESSION的应用--登录状态保持

登录模块的基本思路:

  1. 如果用户登录成功,在服务器中记录用户的登录状态

    • 执行session_start(), 生产session文件,在session文件中,记录当前用户的信息

    • 通过响应头部,给浏览器的cookie设置sessionID

          if($name=='zs'&&$pwd=='666'){
              //登录成功
              session_start();
              $_SESSION['username']=$name;
          }
      
  2. 后续访问其他页面(购物车,个人中心),浏览器会自动发送cookie中存放的sessionID到服务器

  3. 服务器会浏览器传递根据sessionID,找到对应的session文件,查看其中是否存放有当前用户的信息

    • 是: 用户已登录 ,正常浏览

    • 否:用户未登录,跳转到登录页

              session_start();
              if(!empty($_SESSION['username'])){
                  //正常浏览
              }else{
                  header('location:./04-login.html');
                  die();//后面代码不执行
              }
      

      流程图如下:

posted @ 2021-03-26 18:24  镜像山海  阅读(82)  评论(0)    收藏  举报