如何決定 session 時間?
想請問一下
我在 php.ini 設定session是存在86400
但能不能讓他永久?
應該是說我可以在網頁上決定他多長,不會被php.ini 限制,那我php.ini 要怎麼設定呢?網頁上要怎麼設定呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
想請問一下
我在 php.ini 設定session是存在86400
但能不能讓他永久?
應該是說我可以在網頁上決定他多長,不會被php.ini 限制,那我php.ini 要怎麼設定呢?網頁上要怎麼設定呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
你设置了 php.ini 的 session 时间,我觉得确实生效了。
你会发现,有些网站登录账号,你两个小时没有操作,挂着网页,再操作时会让你重新登录,这个才是 session 的有效期,你设置的 86400 只是这个时间。
而你说的过期则是另外一种过期:
你第一次访问页面,得到一个 session_id
0x01
,而你关闭了浏览器,重新访问页面,由于 http 是无状态的,所以会重新分配一个 session_id0x02
给你,实际上你第一次访问获得的0x01
还没有过期,只是因为你当前的session_id
变成了0x02
评论回复不能保持格式,在这里加一下
想要无限延长,可以这样做(laravel就是这样做的)
4.5 无限循环达到永久登录
清楚浏览器缓存会失效,只能重新登录
你在php.ini 里面把 session.cookie_lifetime 和 session.gc_maxlifetime设置的超大就行,例如999999999
使用session_cache_expire(),然后使用session_start()
经过和你的交流过程,我来做一下回答,上面他们的回答我也看了,也具有一定的道理,要做到你说的这个无限延时也可以做到,那么我站在安全性的角度来和你交流这个东西,虽然来说不一定全部正确,或者是有些地方考虑不够周到。
一般来说,你在浏览器上存一个cookie,cookie可以是一个token或者是key什么的,这个cookie过期时间设置为一个周或者24小时,如果用户在这个期间没有访问,那么就让这个用户重新登录。在数据库中的用户表也用一个字段来记录这个token,每次对比一下,如果数据表中存在这个token,且数据表中设置的过期时间满足,则创建一个新的token存到浏览器,然后再以设置的时候为开始时间再计算出一个有效期,这样子的话,只要用户在指定的时间访问平台,让用户感觉是没有退出登录的,而用户退出后超出一段时间没登录,就重新发起登陆,防止别人拿到这个token了就可以一直模拟这个用户访问这个用户的数据资料或者操作这个用户的数据。
而刷新token的作用主要就是防止别人拿到cookie就可以模拟这个用户登陆,而同时又可以保持用户不会退出登录,相当于做了一道安全措施。
其他的相关想法欢迎探讨
如果想突破单纯的session限制,可以不考虑用php的session,直接把起始时间戳存入数据库,然后自定义过期时间3年,5年,10年... 是这个意思吗?
存入reids