• 会话技术整理


    Cookie基本使用(增删改查)

    创建cookie(增加)

    setcookie();setcookie7个参数:

    参数1:保存的cookie变量名称

    参数2:变量对应的值

    参数3cookie文件的有效期

    参数4:有效路径

     

    参数5:有效域名(cookie不支持跨域使用,可以通过参数5指定cookie在哪个域名下起作用)

     

    参数6:是否只允许在https协议下使用。如果设置为true,就表示该cookie只能在https协议下进行传输

     

    参数7:为了防止cookie被劫持定义的参数,只允许在http协议下传输(在web服务器下进行传输)。如果设置为false,允许该cookie在任何协议下都能传输

     

    读取cookie(查询)

    $_COOKIE['age'];

    修改cookie

    如果给同一个cookie变量重新赋值,就是修改的意思,而且cookie的有效期会从修改的时间重新计算。

     

    删除cookie

     

    cookie的有效期设置为过期

    细节:

    setcookie前面不能有任何输出,echo var_dump()

    因为setcookie是服务器告诉浏览器的,告诉浏览器在自己身上创建cookie文件,服务器向浏览器回应信息是通过header头信息回应的

     

    为什么要使用会话控制技术

    HTTP协议是无状态的,也就是说HTTP没有一个内建的机制来维护两个事务之间的状态。当一个用户完成一个请求发起第二个请求的时候,服务器无法知道这次请求是来自于上一次的客户。而用户登录、购物车等,这些是需要服务器能够保存用户的状态的。会话技术就是用来完成这件事的。其思想是允许服务器跟踪客户端做出的连续请求

    会话控制技术的实现方式

    通过GET参数传递

    在get里面把状态传递到下一页

    使用get参数传递不安全而且不稳定,不建议使用

    Cookie本质上是服务器发送给客户端的片段信息,存储在客户端浏览器的内存或者是硬盘中的技术。

    • Cookie的写入操作
      setcookie($name,$value,$expire,$path,$domain,$secure)
    • 读取Cookie
      $_COOKIE数组
    • 删除Cookie
      删除cookie不能使用unset,因为$_COOKIE是只读的。要想删除,只需要让其过期就就行:
      setcookie($name,'',time()-1000)
    • Cookie的优缺点
      • 优点:存储在客户端,不会占用服务器的资源
      • 缺点:信息保存在客户端,安全性得不到保障,而且用户可以关闭cookie。

    Session

    Session将数据保存在服务器上,相比cookie更加安全。
    session并不是完全脱离cookie,他是基于cookie的(需要将sessionid保存在客户端,如果cookie被禁用,可以通过url来传递sessionid)

    • session 的操作
      1. session_start();//要使用之前一定要开启
      2. 然后直接操作$_SESSION数组
      3. 要删除,直接赋空数组:$_SESSION = [];
      4. 如果想删除文件,则使用session_destroy();//同时会删除对应session的cookie
    • session 配置(php.ini)
      1. session.auto_start
      2. session.cookie_domain
      3. session.cookie_lifetime
      4. session.cookie_path
      5. session.name
      6. session.save_path
      7. session.use_cookies
      8. session.use_trans_sid
      9. session.gc_probability
      10. session.gc_divisor
      11. session.gc_maxlifetime
      12. session.save_handler
    • session的优缺点传递sessionid
      • 优点:信息安全
      • 缺点:占用服务器的资源,分布式不方便

    • 如果cookie被禁用,那么可以通过get来传递sessionid:
    "xxx.php?<?php echo session_name().'='.session_id();  ?>"//通过session_name()和session_id()来拼接
    
    "xxx.php?<?php echo SID; ?>"//SID常量在cookie开启的时候为空,在cookie被禁用的时候是session_name()和session_id()拼接的样子
    • session 的存储

      session_set_save_handler()函数可以将session存储在服务器上(mysql Memcache redis等)

  • 相关阅读:
    001 分布式系统
    024 RabbitTemplate组件
    023 RabbitAdmin组件
    022 spring与Rabbitmq整合
    011 mandatory参数
    这样自己组装数据,醉了,
    cool,
    swift,
    page enable,
    构建 HTTPserver,
  • 原文地址:https://www.cnblogs.com/lxj0205/p/9549405.html
Copyright © 2020-2023  润新知