session - 会话

定义

  1. 会话在 PHP 中是在并发访问时由一个方法来保存某些数据。从而使你能够构建更多的定制程序从而提高你的 web 网站的吸引力。
  2. PHP session 变量用于存储关于用户会话(session)的信息,或者更改用户会话(session)的设置。Session 变量存储单一用户的信息,并且对于应用程序中的所有页面都是可用的。

开发原因

  1. 在计算机上操作某个应用程序时,打开它,做些更改,然后关闭它。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。然而,在因特网上问题出现了:由于HTTP地址无法保持状态,Web服务器并不知道您是谁以及您做了什么。

  2. PHP session 解决了这个问题,它通过在服务器上存储用户信息以便随后使用(比如用户名称、购买商品等)。然而,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久存储信息,可以把数据存储在数据库中。

工作机制

  1. 为每个访客创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,或者通过 URL 进行传导。

工作流程

  1. 从请求中查找会话ID(传递到服务器的会话cookie),如果请求中不包含,创建一个新的会话;
  2. 当一个session第一次被启用时,一个独一的标识被存储于本地的cookie中。
  3. web server 为用户创建一个唯一的 session对象
  4. 把用户信息存储到 PHP session 中之前,首先必须启动会话。调用session_start() 函数(必须位于 < html > 标签之前)
  5. 注册会话变量到 $_SESSION() 中,或调用会话变量
  6. 当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

查询 - 启用 - 注册 - 存储

作用

  1. 会话通常被用来在多个页面请求之间保存及共享信息。
  2. 用户登陆之后,整个网站都可以访问,对于应用程序中的所有页面都是可用的。

作用时间

  1. Session的作用时间从用户到达某个特定的Web页开始,到该用户离开Web站点,或在程序中利用代码终止某个Session结束。引用Session 则可以让一个用户访问多个页面之间的切换也会保留该用户的信息。

session与cookie的区别

  1. 相同点:都使用cookie存储一些信息,前者是sessionID,后者是cookie变量的值
  2. 不同点
    sessionID 存储在 客户端,但 session变量 存储在 服务器端 的内存(定太多影响服务器的性能)
    cookie 只在 客户端 存储(定义再多也不影响服务器的性能)

相关配置(php.ini)

  1. 会话管理器:PHP为sesion的存储提供了三种方式:文件/ 内存/ 自定义存储,默认是使用文件存储;
    在这里插入图片描述
  2. session会话数据的存储路径:文件名以 sess_ 为前缀,后跟 SESSION ID
    在这里插入图片描述
  3. 使用cookie保存sessionid
    在这里插入图片描述
    在这里插入图片描述
  4. 会话名字:保存在cookie里的session名字
    在这里插入图片描述
  5. 启动机制:不自动开启session
    在这里插入图片描述
  6. 会话有效期是直到浏览器重启
    在这里插入图片描述
  7. SESSION的数据格式:使用较旧的序列化处理器导致 $ _SESSION 的索引既不能是数字也不能包含特殊字符(l and !)。使用 php_serialize 避免脚本退出时,数字及特殊字符索引导致出错。
    在这里插入图片描述

序列化:把数据变为永久存储格式或可传输格式
反序列化:把数据还原到变量中

会话方法

  1. 启动会话: session_start()

启动新会话或者重用现有会话

  1. 会话变量的注册:$ _ session()
  2. 主动保存会话数据: session_write_close()

对于基于文件的会话数据保存(PHP 的默认行为)而言, 在会话开始的时候都会给会话数据文件加锁, 直到 PHP 脚本执行完毕或者显式调用 session_write_close() 来保存会话数据。 在此期间,其他脚本不可以访问同一个会话数据文件。

  1. 释放会话变量: session_unset()

session_unset () — 释放所有的会话变量
session_destroy () — 销毁一个会话中的全部数据
setcookie () — 删除客户端的会话 cookie

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白夜下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值