如何设置session的有效期?只能设置session.setMaxInactiveInterva

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何设置session的有效期?只能设置session.setMaxInactiveInterva相关的知识,希望对你有一定的参考价值。

如何设置session的有效期?只能设置session.setMaxInactiveInterval(3600)只是设置
session在服务端的存活时间,但是本着对客户透明的角度来说,即使session没有死,但是保存这个jsessionid的cookie死了,不还是相当于session"死"了吗?所以我想知道有没有通过session设置保存此jsessionid的cookie的有效期呢?

首先你要搞清楚session与cookie的关系, 客户端每次向服务器发起请求的时候就会带一个cookie过去, 服务器会判断如果没有jsessionid的话,就会创建一个然后再写入cookie中,这样就可以一直保持全会话了,若客户端禁用了cookie那么每次向服务器请求,服务器都会创建新的session, 这个session的有效期只是数据保存在服务器的有效期,其实它就是一个map对象,但是有超时这个概念, 即创建一个对象出来,超过一定时间都没有使用以后服务器就会清除掉。追答

是这样的,浏览器一关掉session ID就会重新创建,对于服务器来看之前的session可能并没有销毁,这是正常的

参考技术A 搞清楚session与cookie的关系, 客户端每次向服务器发起请求的时候就会带一个cookie过去, 服务器会判断如果没有jsessionid的话,就会创建一个然后再写入cookie中,这样就可以一直保持全会话了,若客户端禁用了cookie那么每次向服务器请求,服务器都会创建新的session, 这个session的有效期只是数据保存在服务器的有效期,其实它就是一个map对象,但是有超时这个概念, 即创建一个对象出来,超过一定时间都没有使用以后服务器就会清除掉。追问

你没看我的问题

如何修改session的生存时间

第一种:在php.ini中设置session.gc_maxlifetime=1440  //默认时间

第二种:代码实现

  1.session 函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:

1 //先设置再开启session
2 $lifeTime = 24 * 3600;  // 保存一天 
3 session_set_cookie_params($lifeTime); 
4 session_start();

  2.手动设置 Session 的生存期,运用 setcookie()函数:

1 <?PHP
2 session_start(); 
3 $lifeTime = 24 * 3600;//保存一天 
4 setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
5  ?>

 

以上是关于如何设置session的有效期?只能设置session.setMaxInactiveInterva的主要内容,如果未能解决你的问题,请参考以下文章

PHP会话控制之如何正确设置session_name

如何修改session的生存时间

如何严格设置php中session过期时间

如何严格设置php中session过期时间?

如何严格设置php中session过期时间

Thinkphp 对session有效期的设置为啥总不起作用