PHP cookie SESSION 的一些操作方法及自己的理解

发布时间:2021-11-29 17:22:58 作者:King 来源:本站 浏览量(599) 点赞(136)
摘要:PHP cookie SESSION 的一些操作方法及自己的理解

会话技术COOKIE

  • COOKIE的基本使用

  • COOKIE原理

    • 技术:服务器将数据通过HTTP响应存储到浏览器上,浏览器可以在以后携带对应COOKIE数据访问服务器

    • 利用$_COOKIE访问cookie信息

  • 设置COOKIE信息

  • setcookie函数来设定COOKIE信息

    • cookie名的设置:字符串,第一个参数

    • cookie值的设置:第二个参数

    • cookie值的类型要求:必须是简单类型中的整数和字符串

    • COOKIE(会话要求)能够实现跨脚本共享数据

      setcookie('age',18);
      setcookie('name','mark');
      var_dump($_COOKIE);
  • COOKIE生命周期:COOKIE在浏览器生存时间(浏览器在下次访问服务器的时候是否携带对应的COOKIE)

    • 默认(不设定)时的生命周期:不设定周期默认是关闭浏览器(会话结束)

    • 设定为一个常规日期戳的周期:通过setcookie第三个参数可以限定生命周期,是用时间戳来管理,从格林威治时间开始

    • 设定为0的周期:第三个参数设定为0,表示普通设置,会话结束过期

    • 删除一个cookie的做法:服务器没有权限去操作浏览器上的内容(不可能删除),可以通过设定生命周期让浏览器自动判定COOKIE是否有效:无效清除

      setcookie('age',18);//普通COKKIE,浏览器关闭失效
      setcookie('a2',19,0);//和普通COKKIE一样
      setcookie('name','mark',7*24*60*60);//格林威治时间七天过期
      setcookie('ll','ddd',time()+7*24*60*60);//格林威治时间,从现在开始7天过期
      var_dump($_COOKIE);
      //删除COOKIE
      setcookie('a2','');
  • COOKIE作用范围

    • 默认(不设定)的范围:就是使用COOKIE默认的作用范围

    • 设定为‘/’的含义:告知浏览器当前COOKIE的作用范围是网站根目录

    • setcookie(名字,值,生命周期,作用范围)

      //设定全局访问的COOKIE
      setcookie('global_son','global_son',0,'/');
    • 不同文件层级中,设定的COOKIE默认是在不同的文件中有访问限制,上层文件中设定的COOKIE可以在下层(子文件)中访问,而子文件中设定的COOKIE不能在上层文件中访问

  • 跨子域

    • setcookie(名字,值,生命周期,作用范围,有效域名)

    • 设定COOKIE的有效域名:不同的域名(包含主机)之间不能共享COOKIE,可以通过secookie的第五个参数来控制

    • 跨子域名的设定方法:在设定域名访问的时候用设定上级域名即可类似于ezuhuishou.com,不需要设置前缀

              setcookie('global_son','global_son',0,'/','xxx.com');
  • COOKIE数组数据

    • COOKIE本身只支持简单数据,能够保留数据本身有限,也不成体系。如果需要使用COOKIE来保留一组数组。(COOKIE不支持数组)

              setcookie('good_ids[0]',1);
              setcookie('good_ids[1]',2);
              setcookie('good_ids[2]',3);
              setcookie('good_ids[3]',4);
              setcookie('good_ids[4]',5);

会话技术SESSION

SESSION原理

  • session与浏览器无关,但是与COOKIE有关

    • 不存在该文件:创建一个sessionID命名文件

    • 存在该文件:读取文件内容(反序列化),将数据存储到$_SESSION中

    • 如果COOKIE中存在,使用现成的

    • 如果COOKIE中不存在,则创建一个sessionID,并通过响应头以cookie形式保存到浏览器上

    • PHP碰到session_start()时开启session会话,会自动检测sessionID

    • 初始化超全局变量$_SESSION为一个空数组

    • PHP通过sessionID去指定位置(SESSION文件存储位置)匹配对应的文件

    • 脚本执行结束,将$_SESSION中保存的所有数据序列化存储到sessionID对应的文件中

SESSION基本使用

  • 启用session,任何时候都需要开启session(脚本使用到$_SESSION就开启一次)

  • 设置SESSION信息:如果想存储数据到SESSION中,那么只要不断给$_SESSION数组中添加元素即可

    //SESSION基本使用
    session_start();
    $_SESSION['name']='mark';
    $_SESSION['age']=20;
    echo $_SESSION['name'];
  • 删除SESSION:就是将session数据清理掉

    • 删除一个SESSION信息

      session_start();
      $_SESSION['name']='mark';
      $_SESSION['age']=20;
      //删除数据
      unset($_SESSION['name']);
      var_dump($_SESSION);
    • 删除全部SESSION数据

      $_SESSION=array();

SESSION配置

  • session.name:session名字,保存在COOKIE中sessionID对应的名字

  • session.autostart :是否自动开启session(无需手动sessionstart()),默认是关闭

  • session.save_handler:session数据保存方式

  • session.save_path:session默认保存的位置

SESSION常用配置

  • session.cookie_lifetime:phpsessionID在浏览器端对应COOKIE的生命周期,默认是会话结束

  • session.cookie_path:sessionID在浏览器存储之后允许服务器访问的路径(COOKIE有作用范围)

  • session.cookie_domain:COOKIE允许访问的子区域

配置的两种方式

  • php.ini:全局配置,修改php.ini中的配置项

  • 脚本中配置:PHP可以通过ini_set函数来在运行中设定某些配置项(只会对当前运行的脚本有效),把这种配置称之为项目级

        ini_set('session.save_path','e:/server/文件名字')

销毁SESSION

  • 是指删除SEESION对应的SESSION文件

  • 系统提供一个函数:sessiondestroy(),会自动根据sessionstart得到的sessionID去找到指定的session文件,并把其删除

        //销毁SESSION
        session_destroy();

SESSION垃圾回收机制

  • session.gc_maxlifetime =1440:规定session文件最大生命周期是1440秒,24分钟

  • session.gc_probability =1:垃圾回收概率因子(分子)

  • session.gc_divisor = 1000:垃圾回收概率分母,默认触发概率是1/1000


微信

扫一扫,关注我们

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

【如有开发需求】那就联系我们吧

搜索千万次不如咨询1次

承接:网站建设,手机网站,响应式网站,小程序开发,原生android开发等业务

立即咨询 16605125102