发布于 1970-01-01 08:00
  • 3 个回答
    • 首先你要搞明白 session 、cookie之间的关系。
      因为http协议是无状态的,所以2个http请求之间是没有任何联系。
      但是很多时候的业务需求是需要知道2个http请求之间是要进行信息共享的,这就是session的由来。
      因为http协议是无状态的,所以需要有信息共享的2个http请求中带上一个session标志,通过这个session标志,可以把上个请求的信息在下次请求时获取出来,通常是把session标志存储到cookie中(当然你也可以把这个标志放到url参数中或者放在请求header中)。
      因此session过期不过期,完全取决于某个请求时是否有session标志,而这个session标志的相应的session信息是否还在服务器保留。

      基于问题回答

      cookie给了2小时,这两个小时不关你有没有动作,到时间他都会过期

      你说的没错,前提是你没有更改存储在cookie中seesion标志的过期时间

      而且session是只要你有动作或刷新页面他都不会过期对吗?

      这个更新的服务器存储session信息的时间,即

      在服务端session过期时间 = 上次更新session信息的时间 + 设置的过期时间
      
      2022-12-01 18:18 回答
    • 调用session_start方法后,服务器会返回给客户端一个sessionid,客户端(一般是浏览器)会在每一次请求服务器的时候带上这个sessionid,服务器就是根据这个sessiond来找到对应的回话保存记录的。
      所以“session是只要你有动作或刷新页面他都不会过期”
      这个不全对,虽然看上去是这样。但是如果客户端清除了sessionid(例如关闭浏览器),或者服务器清除掉了对应的session回话记录(在设置的过期时间内没有接收到请求),都会导致session过期

      2022-12-01 18:18 回答
    • 所谓session也是服务端生成一个id然后作为cookie存储在用户本地,服务端这个cookie作为一个唯一值key存储在数据库。

      session会自己处理过期时间的问题,比如只要有请求,自动重新设置一次cookie(过期时间就又延后了好多)

      2022-12-01 18:18 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有