一段时间后取消设置会话

2024-07-01

我正在建立一个在线订票网站。在此,我将执行以下操作: 用户使用其座位号搜索公共汽车。数据库中的座位号已更新为temp_seat_book = 'Y'。如果他预订机票并付款,他的状态将更新为final_ticket_book = 'Y'。现在我想删除该字段temp_seat_book = 'Y' but final_ticket_book = 'N'。为此,我需要删除超过 10 分钟的 session_idsfinal_ticket_book = 'N'。那么我该如何实现后台工作呢?


而不是搜索文件(这涉及更多的 i/o )等, 什么是会话cookie:会话 Cookie http://en.wikipedia.org/wiki/HTTP_cookie#Session_cookie
更好的方法是将“最近活动”的时间戳存储在 $_SESSION 变量中。
并更新每个请求的会话数据(包括自动定期 ajax 调用,如果有的话)。

假设您想在 10 分钟后取消会话设置,

if (isset($_SESSION['most_recent_activity']) && 
    (time() -   $_SESSION['most_recent_activity'] > 600)) {

 //600 seconds = 10 minutes
 session_destroy();   
 session_unset();  

 }
 $_SESSION['most_recent_activity'] = time(); // the start of the session.

为了避免像这样的攻击会话固定 https://www.owasp.org/index.php/Session_fixation:(会话固定是一种允许攻击者劫持有效用户会话的攻击)定期重新生成会话 ID,例如 5 分钟(我建议将重新生成时间和会话过期时间保留得更长一些)。更详细的攻击列表:攻击列表 https://www.owasp.org/index.php/Category:Attack.

if (!isset($_SESSION['CREATED'])) {
    $_SESSION['CREATED'] = time();
    } 
else if (time() - $_SESSION['CREATED'] > 600) {
    session_regenerate_id(true);    
    $_SESSION['CREATED'] = time();  
    }

另外,请确保session.gc-maxlifetime设置为您要使用的最长过期时间。 你可以这样做

ini_set('session.gc-maxlifetime', 600)


或者 直接在 php.ini 中设置。

and also

session.cookie_lifetime http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime :

session.cookie_lifetime 指定发送到浏览器的 cookie 的生命周期(以秒为单位)。

但是,销毁会话必须在服务器端而不是客户端进行处理。 将 session.cookie_lifetime 设置为 0 将使会话 cookie 的行为方式与会话 cookie 的行为方式相同,即会话 cookie 仅在浏览器关闭之前有效。

虽然这种方法有点繁琐,但是比较优雅。

啊,找到了我很久以前读过的链接! :如何让 PHP 会话在 30 分钟后过期? https://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes

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

一段时间后取消设置会话 的相关文章

  • 一段时间后取消设置会话

    我正在建立一个在线订票网站 在此 我将执行以下操作 用户使用其座位号搜索公共汽车 数据库中的座位号已更新为temp seat book Y 如果他预订机票并付款 他的状态将更新为final ticket book Y 现在我想删除该字段te
  • 如何使用 preg_match 在数组中搜索?

    如何使用 preg match 在数组中搜索 Example 在这篇文章中 我将为您提供三种不同的方法来完成您的要求 我实际上建议使用最后一个片段 因为它最容易理解并且代码非常简洁 如何查看数组中哪些元素与我的正则表达式匹配 有一个函数专门
  • pdf下载 html2pdf

    我正在使用 html2pdf 类来生成 pdf 在我的问题中 它为 html 代码生成 pdf 但它没有提供下载该 pdf 的对话框选项 请帮助我的情况如下
  • 下拉列表在 php 中保留先前选择的值

    我在 php 中创建了一个个人资料页面 用户使用 html 下拉列表选择性别 html代码如下 Gender
  • 将数组项合并到字符串中[重复]

    这个问题在这里已经有答案了 如何将所有数组项合并为一个字符串 Use the implode功能 http php net manual en function implode php 例如 fruits array apples pear
  • Recaptcha - 表单定制

    有谁知道 recaptcha 是否可以在没有默认框架的情况下完全自定义 我需要验证码图像和输入字段只有一定的宽度 以前有人成功做到过吗 您可以使用 自定义 主题选项指定自定义标记 方法是在页面上包含类似以下内容 然后 您在页面上创建一个 d
  • 使用 PHP 解析 XML 导航站点地图

    我正在从 XML 文件实现 PHP 站点地图解析器 我做得相对不错 但是 我需要解析器更加动态 我需要实现一个递归函数 它将继续循环找到的每个 child node 一个节点可以在另一个 child node 中包含许多 child nod
  • symfony2 实体验证正则表达式 a-z A-Z 0-9

    symfony2 中是否有一种内置方法可以根据经典的 a z A Z 和 0 9 规则验证字符串 在我的例子中是用户名和另一个属性 我是否必须自己在正则表达式中编写它作为自定义验证器 如果是这样 请提示在哪里查看 你应该使用原生的正则表达式
  • 删除一行或多行后,在 auto_increment 列上使用下一个可能的主键

    我有一个带有主键 自动增量 ID 列的表 当我删除具有最高 ID 的行 例如 ID 100 时 我想仅使用 mysql 触发器将该 ID 100 用于新行 我怎么做 当我删除时 例如 ID 1 并且最高 ID 是 100 我不想再次使用 I
  • 使用 AJAX 提交表单,将表单数据传递给 PHP,无需刷新页面 [重复]

    这个问题在这里已经有答案了 谁能告诉我为什么这段代码不起作用
  • PHP/MySQL:从 YYYY-MM-DD 转换为 DD 月,YYYY?

    我在 MySQL 表中有一个 DATE 列 它以以下格式表示日期 YYYY MM DD 我想使用 PHP 从数据库中检索日期 但显示如下 DD 月 YYYY 例如 从 2009 04 13 到 2009 年 4 月 13 日 女巫是最好的方
  • MacOS Sierra 上未找到 OpenSSL

    我正在尝试安装 PHP MongoDB 驱动程序 但安装失败 因为它找不到 OpenSSL Users username mongo php driver src libmongoc src mongoc mongoc crypto ope
  • 在 Enterprise Architect 中为 PHP 生成 getter 和 setter

    我正在使用 Enterprise Architect 制作 UML 类图并生成 PHP5 代码 如何为某个类生成 getter 和 setter 方法 Add the lt
  • 使用 PHP 删除字符串的前 4 个字符

    如何使用 PHP 删除字符串的前 4 个字符 你可以使用substr http php net manual en function substr php函数返回从第 5 个字符开始的子字符串 str The quick brown fox
  • PHP 使用破折号箭头“->”检索数组值

    我已经使用 PHP 有一段时间了 但从来都不是一个高级程序员 我觉得这是一个愚蠢的问题 但从未理解为什么可以使用不同的方法检索某些数组值 This array gt value 而不是正常的 array value 标准 array val
  • 有人可以向我指出一个好的 PHP/MySQL 加盐哈希密码实现吗?

    在阅读了盐密码哈希之后 我想为我正在构建的站点的管理区域实现一个简单的版本 如果您有任何很好的链接以及很好地实现了这个想法的代码 如果您能分享 我将不胜感激 Thanks 注册过程 用户输入密码 系统根据随机数据生成盐值 可能是时间和 PI
  • 为什么apache不能同时处理来自同一浏览器的多个请求

    我不太确定如何正确地表达这个问题 所以我将从我遇到的场景开始 我的网络应用程序中有一些处理时间比我希望用户等待再次控制页面的时间要长 所以我决定通过 ajax 请求来处理它 问题是 即使我将此请求卸载到 ajax 请求中 在原始处理器繁重的
  • 在 Doctrine 2 DQL 中组合 IS NULL 和 :value

    由于其他 旧 问题没有得到正确的答案 我会再试一次 我经常遇到一个场景 我想查询具有特定值的实体 query em gt createQuery SELECT e FROM Entity e WHERE e parent parent qu
  • PHPStorm + PHPUnit 颜色输出

    因此 我在 PHPStorm 7 1 中运行 PHPUnit 但我不知道如何在测试中使 ANSI 颜色代码正常工作 我的 PHPunit xml 有colors true 在属性列表中 但每次我尝试类似的操作 echo 033 31mErr
  • 逐像素改变图像的颜色

    我试图更改 png 图像的颜色 以便透明区域仍然保持透明 并为图像的其余部分提供颜色 这就是我尝试过的

随机推荐