我有这样一种处理过期 session 的机制:
User logged in
Session expires
User goes to link
User redirected to login page
User logs in
User redirected to requested link
我想实现的是具有与表单相同的功能,例如:
User logged in
User starts to fill out a form
Session expires
User submits a form
User redirected to login page
User logs in
Form posted on behalf of user (aka redirect with post)
但是现在它是这样工作的:
User logged in
User starts to fill out a form
Session expires
User submits a form
User redirected to login page
User logs in
User redirected to form page with all fields empty
User sad
我曾尝试使用 http_redirect 来访问它,但事实证明它只是向 URL 添加了参数。问题是,服务器端不接受 GET,只接受 POST。我一直在尝试考虑其他方法来做到这一点,例如自动保存功能、javascript 发布和重定向等。
以前肯定有人遇到过这个问题。
有什么想法吗?
最佳答案
我认为有几种方法
1) 将 session.gc_maxlifetime
值增加到更高(1 天或更长时间)。如果使用自己的 session ,同样的逻辑。
2) 使 session 永不过期,除非用户注销
3) 当用户提交 POST 和 session 过期时,将表单数据存储到 session 本身,并在重定向后从 session 中获取数据。或者重定向后使用get方法
4) 使用 ajax (ping) 持续检查 session 。例如每 60 秒。除非浏览器不关闭, session 永远不会过期(对我来说这是最好的解决方案)
5) 使用ajax进行提交,如果session过期弹出对话框重新登录
当然还有其他选择
关于php - session 过期后用帖子重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10005960/