会话到期后重定向帖子

时间:2012-04-04 06:29:17

标签: php forms http post redirect

我有一种处理过期会话的机制:

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发布和重定向等。

之前有人必须遇到过这个问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我认为有几种方法

1)将session.gc_maxlifetime值增加到更高(1天或更长)。如果使用自己的会话,则使用相同的逻辑。

2)除非用户注销

,否则会话永不过期

3)当用户提交POST并且会话过期时,将表单数据存储到会话本身并在重定向从会话中获取数据之后。或者在重定向后使用get方法

4)继续用ajax(ping)检查会话。例如每60秒。除非浏览器没有关闭,否则会话将永不过期(对我来说是最佳解决方案)

5)使用ajax从提交,如果会话到期弹出一个对话框重新登录

当然还有其他选择

答案 1 :(得分:0)

您可以选择以下内容:

User logged in
User starts to fill out a form
Session expires

User submits a form
Server sees session has expired
Server creates new session
Server stores post in session variable $_SESSION['post'] = $_POST
User redirected to login page

User logs in
Server verifies user etc
Server checks for data in $_SESSION['post']
Server sets $_POST = $_SESSION['post']
Form posted on behalf of user