0

これが私が解決しようとしてきたトリッキーな質問です...

この問題はモバイルウェブサイトで発生します。私はcodeigniterを使用してフォームを作成し、いくつかの値をdbに渡してから、ユーザーが送信した記事にユーザーをリダイレクトします。

問題は、Android WebView(カスタムアプリ)では、おそらく他のモバイルデバイスでも、ユーザーが戻るボタンを押すと、データが再送信され、記事が再度投稿されることです。記事は、ユーザーが戻るボタンを押すたびに警告なしで投稿されます。

助言がありますか?誰かがこの問題を抱えていましたか?

ちなみに、履歴全体が消去され(クライアント側であるため、それが可能かどうかはわかりませんが、JavaScriptを使用するのは好きではありません)、ユーザーが戻るボタンを押すと、彼は削除されます私が起こりたくないアプリ。

4

2 に答える 2

0

POSTを介して読み込まれたページにより、ブラウザはユーザーに情報を再送信してページを表示するように求め、そのページによって実行されるアクションが再度発生します。ページがGETを介して要求され、クエリ文字列に変数がある場合、同じことが起こりますが、サイレントになります(ユーザーに再度入力するように求められることはありません)。

これを回避する最善の方法は、POST / REDIRECT/GETパターンを使用することです。Authorize.Net用に作成した支払いの処理に関する例で使用しました。うまくいけば、それはあなたを正しい方向に向けます。

于 2013-01-31T14:49:06.037 に答える
0

私はこのように(電話でも)同様の問題を解決します。

  1. トークン(15文字のランダムな文字列)を生成し、SESSION['token']に保存します。

  2. このトークンをhtmlフォームの非表示の入力に保存します。

  3. フォームが送信されたら、データベースにアクセスする前に、送信されたトークンをセッション1と比較します。一致する場合は、続行してセッショントークンをunset()します。そうでない場合は、エラートークンが一致しません。

それが役に立てば幸い。

于 2016-04-13T13:36:45.643 に答える