• PHP会话控制考察点


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

    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等)

  • 相关阅读:
    CentOS7学习小记
    PHP的time函数返回时间不正确
    MySQL信息提示不是英文问题
    windows下ITOP安装
    Zend安装
    投资日记2015.6
    解决SecureCRT连接linux超时后断开[转]
    红黑树及生成超过32768随机数
    在宏定义中怎么使用可变参数
    C++堆上申请二维数组
  • 原文地址:https://www.cnblogs.com/clannadxr/p/7723309.html
Copyright © 2020-2023  润新知