3

期限切れのセッションを処理するメカニズムがあります。

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 の投稿、リダイレクトなど、これを行うための他の方法を考えてみました。

誰かが以前にこの問題を経験したに違いありません。

何か案は?

4

2 に答える 2

1

私が思ういくつかの方法があります

1)session.gc_maxlifetime値を高くします(1日以上)。独自のセッションを使用する場合は、同じロジックを使用します。

2)ユーザーがログアウトしない限りセッションが期限切れにならないようにする

3)ユーザーがPOSTを送信してセッションが期限切れになると、フォームデータをセッション自体に保存し、リダイレクト後にセッションからデータを取得します。または、リダイレクト後にgetメソッドを使用します

4)ajax(ping)でセッションを継続的にチェックします。たとえば、60秒ごと。ブラウザが閉じない限り、セッションが期限切れになることはありません(私にとっては最善の解決策です)

5)送信からajaxを使用します。セッションの有効期限が切れた場合は、再ログイン用のダイアログボックスを表示します。

もちろん別のオプションがあるかもしれません

于 2012-04-04T06:45:03.987 に答える
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
于 2012-04-04T06:51:20.380 に答える