基础理解之SESSION

2023-11-17

SESSION是服务器端的一种会话机制,当客户端的请求服务器创建一个SESSION时,服务器会先检测该请求里面是否包含一个惟一的sesionid,

如果是,说明服务器已经为该用户创建过SESSION,只要按照该sesionid检索出该用户的session供用户使用,如果没有sesionid,

服务器会为该用户新建一个带有唯一标识符sessionid的SESSION.

值得指出的是,应用的SESSION并不是请求服务器就会创建,而是在开启SESSION后,触发了创建对应SESSION才会创建.

既然SESSION是存储于服务器端的.所以如果服务器端出现了某些变动,或者错误.SESSION就会丢失.当然SESSION丢失必定还有其它原因 


下面就查阅资料和遇到的SESSION问题,列出常见SESSION丢失原因

1.SESSION生命周期结束.也就达到了SESSION存在的最长时间
2.客户端禁用了cookie
3.客户端出现问题,暂时无法存起cookie
4.php.ini中的session.use_trans_sid = 0或者编译时没有打开--enable-trans-sid选项
5.服务器端出现问题,如服务重启,文件权限更改,文件删除等问题
6.跨服务器session不同步

针对于上面的第一条.这个不出大意外都属于正常.按需求设置SESSION的生存时间  如:ini_set('session.gc_maxlifetime', 3600); 
这里还会有个疑问, 是不是关闭浏览器SESSION就清除了呢?
   实际上并不是这样的.服务器是不知道用户什么时候关闭浏览器的.理论上来说做不到关闭浏览器就清除对应的SESSION.但是可以通过js代码来监听浏览器的
关闭动作(window.oncolose).然后ajax向服务器返回关闭请求再去清除SESSION.但是这样也有一定的缺陷.在出现突发或者意外事件时.如电脑重启或者断电浏览器崩溃之类的
服务器并没有收到来自客户的关闭浏览器的ajax返回请求.
对于第二/三条的问题就不叫简单了.去开启cookie就是.后面有时间在写一篇关于cookie的.

php.ini的设置,对于每个phper来说是肯定需要了解的.所以第四个原因可以直接去修改session.use_trans_sid = 1或者编译时打开打开了--enable-trans-sid选项


服务器端出现问题这个我是没法解决的,毕竟SESSION只是服务器上的临时文件.但是可以结合第六个原因,我们可以将SESSION写入文件和数据库中,当SESSION丢失了或者说不存在时,就去读取这个文件或者数据库,然后重新写入SESSION中.但是这样就需要我们把握好什么时候该去清楚这个文件或数据库中的SESSION了.


当然肯定还有其它的方法的,目前只是一个初中级的phper,接触的较少,只能想到这么多,后面遇到了再补充吧

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基础理解之SESSION 的相关文章

  • Elasticsearch 如何使用通配符进行 OR 查询

    我很难尝试使用 elasticsearch 构建查询 我想查询类似的内容 WHERE field 1 is match string OR field 2 is wildcard match string OR field 3 is fuz
  • 如何将 javascript 倒计时器与服务器同步

    我有一个拍卖网站 有一个 JavaScript 计时器倒计时 由于某种原因 15 20 分钟后 该计时器比实际时间滞后 20 30 秒 在 1 小时的过程中 JavaScript 倒计时器可能会关闭至少 2 3 分钟 这让用户感到困惑 因为
  • DOMDocument 对我的字符串做了什么?

    dom new DOMDocument 1 0 UTF 8 str p Hello p var dump mb detect encoding str dom gt loadHTML str var dump dom gt saveHTML
  • 如何检查 id 是否已存在 - codeigniter

    我正在尝试检查数据库中的 id 是否已存在 如果不存在则仅插入该 id 而不是其他存在的 id 我尝试执行一个 where 语句来检查数据库中是否存在它们的 id 但即使它们是新信息 它也不会将其插入数据库中 我在这里很迷路 任何指导将不胜
  • PHP 类中的命名空间和全局变量问题

    我陷入了这种困惑 我不明白为什么我的 HelperClass 下的全局 error 返回空 我可以验证 class gt error 确实之前已填充了数据 在这种情况下 命名空间是否存在某种我不知道的问题 请给我一些指点 以下是一些相关的代
  • CodeIgniter 中的 base_url() 和 403 错误

    在 HTML 视图中 css 链接代码如下所示 但我的浏览器显示的地址具有双域地址 www jedendzien pl www jedendzien pl assets css style css 所以我收到 403 错误 我通过以下方式创
  • 未知的 MySQL 服务器主机 (PHP)

    当尝试连接到我的数据库服务器时 我遇到了以下问题未知主机 Warning mysqli mysqli mysqli mysqli HY000 2005 Unknown MySQL server host xxxxxxxxxxxxx port
  • $_GET 作为 PHP 函数中的参数

    我有同样的问题 但是 我根据使用标头的 if 语句将用户重定向到通过函数构造的动态页面 为了使该函数正常工作 需要在标头的 GET 部分中传递参数 根据提供的答案 这是一种不好的做法 我应该用什么方式来做呢 function page ti
  • 有没有办法清除所有会话中的一些会话数据?

    一般来说 我有以下场景 从数据库中获取产品及其相关数据 将获取的数据转换为 php product 对象 在会话中缓存产品对象 缓存是只读的 即客户在网站上查看产品 但也有类似的电话getProductIdsByCategory categ
  • Woocommerce 产品查询库存状态

    我使用 3 种可用性状态 有货 缺货 和 允许缺货 我想要将仅处于 库存 状态的产品导出为 XML 问题是 woocommerce 返回两种状态的值 instock 有库存 和 允许缺货 现在查询如下 query array post ty
  • XAMPP 中的根路径

    我遇到这个问题已经有一段时间了 并且广泛寻找答案但没有成功 img src images test jpg 从 根路径 在我的例子中是在 LAMP 中的生产中 获取图像 htdocs images test jpg 无论是从 htdocs
  • 字符编码失败,为什么\xBD在PHP + HTML中显示不正确

    我只是想更好地理解字符编码 所以我做了一些测试 我有一个保存为 UTF 8 的 PHP 文件 如下所示 页面本身
  • orm和pdo的区别

    我对 ORM 和 PDO 之间的区别有点困惑 PDO是一种ORM吗 根据我的理解 ORM 基本上是一种数据映射 PDO 还提供了数据库数据的抽象 PDO 和 ORM 是两个完全不同的东西 PDO 是数据库访问抽象层的具体实现 它使您能够使用
  • 数据库字段中的空白不会被trim()删除

    我在 MySQL 的文本字段的段落开头有一些空格 Using trim var text field 在 PHP 中或TRIM text field MySQL 中的语句绝对不执行任何操作 这个空白可能是什么以及如何通过代码删除它 如果我进
  • 在 PHP 页面中嵌入 svn 修订号的简单方法?

    注意到这个页面的右下角有 SVN 修订 ID 了吗 我假设这是动态的 我很乐意将其添加到我的一些网站中 就像源代码中的注释一样 以确保代码推送顺利进行 注意 您还可以假设相关站点的工作目录是相关存储库的 svn checkout Edit
  • 来自外部文件的 PHP 变量?

    编辑 完成的解决方案 工作代码 所以 这是我的一个朋友帮我想出来的 这是我在 K2 items php 文件中使用的部分 div class fb comments div
  • 删除删除线的 unicode 文本?

    我偶尔会收到用户的输入 他们正在使用那些烦人的 stikethrough 文本生成器 这破坏了我的代码 我尝试过在这里找到的一些代码 string preg replace x00 x1F x80 xFF string 它有效 但我需要它只
  • PHP cURL 代理带标头?

    我正在制作一个 PHP 图像代理脚本 我需要它不仅能够回显其请求的图像的内容 而且还能够以相同的方式重现图像请求的标头 我见过一个 另一个 但没有同时看到过 这些 cURL 选项让我感到困惑 我该怎么做 抱歉 我不确定你想要什么 这是从图像
  • 一个模型中的多个表 - Laravel

    我的索引页使用数据库中的 3 个表 索引滑块 索引特征 页脚框 我使用一个控制器 IndexController php 并像这样调用三个模型 public function index return View make index gt
  • 将 1 添加到字段

    如何将以下 2 个查询变成 1 个查询 sql SELECT level FROM skills WHERE id id LIMIT 1 result db gt sql query sql level int db gt sql fetc

随机推荐

  • 2023中兴笔试复盘

    选择加编程 选择题考的范围挺广的 编程题第一题有点难度 第二题还好 复盘一下遇到的有点卡顿的题目 1 排序问题 快速排序最适合排完全无序的数据 如果基本有序的数据反而会耗时比较长 原因在于这种情况下一般拿第一个数做基准值的话 容易出现按基准
  • synchronized的作用和用法

    郁闷 参考 synchronized的作用和用法 Java中Synchronized的使用 文章目录 简单介绍 用法 实战实例 修饰代码块 修饰普通方法 修饰静态方法 简单介绍 synchronized关键字是用来控制线程同步的 就是在多线
  • tensorflow学习笔记(1)-tensoflow的设计机制

    tensorflow将整个计算表征为一个图 graph 图的节点 node 是Operation 常常简称为ops 节点之间的边 edge 是张量 tensor 不能理解反了 用图的方式能很容易根据边的连接关系 发现可以并行执行的节点 运算
  • 【笔记】用python计算BS模型、隐波的笔记

    前言 这篇笔记是根据姜禄彬老板在公众号上发布的笔记复刻的 不同的是原作者用的是股票数据 我用的是比特币期权数据 这份笔记里主要是如何用python代码来计算BS模型 如何求隐含波动率 什么是波动率微笑 greeks等 整体还是有点乱 之后有
  • 半生已过:别赌感情,别猜人心

    感情中 很多时候 我们明明懂得了一些道理 却依然会屡屡受伤 是因为我们总是抱着一种信念 以为自己很在乎的人 真的和别人不一样 于是 我们常常毫无保留地信任一个人 坚定不移地相信一段感情 殊不知 期望越大 有时候失望也就会越大 看过一段话说
  • Gabor滤波进行目标图像纹理特征的提取

    1 傅里叶变换 1 简介 数字图像处理的方法主要分成两大部分 空域分析法和频域分析法 空域分析法就是对图像矩阵进行处理 频域分析法是通过图像变换将图像从空域变换到频域 从另外一个角度来分析图像的特征并进行处理 频域分析法在图像增强 图像复原
  • Mysql错误日志、通用查询日志、慢日志的介绍和二进制日志的查看和备份恢复

    目录 一 日志 1 日志和备份的必要性 2 mysql的日志类型 1 错误日志 2 通用查询日志 3 二进制日志 4 慢日志 一 日志 1 日志和备份的必要性 在数据库保存数据时 有时候会因为误删除数据库 意外断电或程序意外终止 由于病毒造
  • openCV无法打开USB摄像头问题

    用Python OpenCV 打开USB摄像头时 出现如下提示 意思是 媒体类型不匹配 测试源代码 cap cv2 VideoCapture 0 while cap isOpened start time time is opened fr
  • 【msvcp100.dll下载】msvcp100.dll丢失修复

    遇到因msvcp100 dll文件丢失而无法正常运行软件或游戏程序的朋友 不用担心 根据小编整理的教程文章 将dll文件放在操作系统system32文件夹的适当位置可以解决这个问题 具体该如何操作呢 只需下载指定的dll文件即可提醒缺少哪个
  • 100道mysql的面试题问答

    1 MySQL 索引使用有哪些注意事项呢 可以从三个维度回答这个问题 索引哪些情况会失效 索引不适合哪些场景 索引规则 索引哪些情况会失效 查询条件包含or 可能导致索引失效 如何字段类型是字符串 where时一定用引号括起来 否则索引失效
  • 数学建模笔记(八):微分方程的应用(偏微分方程)

    文章目录 一 微分方程概述 1 什么是微分方程 2 求解方法 一 求精确解 二 求数值解 近似解 三 定性理论方法 3 建立微分模型的方法 一 根据定理规律列方程 二 微元分析法 三 模拟近似法 4 适用问题 5 常见动态模型 二 观众厅地
  • python3.7 连接sql server出现pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\...

    今天在使用python3 7中的pymssql 连接sqlserver的时候遇到的问题 pymssql OperationalError 20009 b DB Lib error message 20009 severity 9 nUnab
  • 区块链-公钥生成地址

    目录 https blog csdn net qq 40452317 article details 89646633 比特币 区块链 地址是一个由数字和字母组成的字符串 由公钥 一个同样由数字和字母组成的字符串 生成的比特币地址以数字 1
  • UE4/UE5 动画控制

    工程下载 https mbd pub o bread ZJ2cm5pu 蓝图控制sequence播放 倒播动画 设置开启鼠标指针 开启鼠标事件 在场景中进行过场动画制作 设置控制事件
  • 滚动页面触发相应位置动画 ---react

    需要实现的效果 滚动到内容区域触发 第一段内容移动效果 第二段内容淡入 第三段内容缩放 实现思路 滚动过的距离 当前窗口的高度 gt 元素到顶部窗口的距离 gt 则触发动画 整体代码 import React useRef useEffec
  • Rust 取代 C++ ?

    https www zhihu com question 27608498 作者 天象 链接 https www zhihu com question 27608498 answer 50130876 来源 知乎 著作权归作者所有 商业转载
  • CSS 文字特效运用目录

    主要是记录文字相关的特效实践案例和实现思路 章节名称 完成度 难度 文章地址 完整代码下载地址 创意填充文本悬停效果 完成 一般 文章链接 代码下载 发光文字跟随鼠标 完成 一般 文章链接 代码下载 酷炫的文字悬停效果 完成 一般 文章链接
  • checkbox中checked属性总结

    一 checked属性定义和用法 1 checked属性是一个布尔属性 2 checked属性规定在页面加载时应该被预先选定的
  • 数据库连接的5种方式

    数据库连接的5种方式 String url jdbc mysql localhost 3306 njustzjc1 Properties properties new Properties properties setProperty us
  • 基础理解之SESSION

    SESSION是服务器端的一种会话机制 当客户端的请求服务器创建一个SESSION时 服务器会先检测该请求里面是否包含一个惟一的sesionid 如果是 说明服务器已经为该用户创建过SESSION 只要按照该sesionid检索出该用户的s