-1

ここでいくつかの質問を見てきましたが、探しているものが見つからないようです。

ユーザーが実際にそのページから送信したかどうかを確認するための隠しトークンフィールドを作成するプログラムがありますが、トークンを作成する各ページが最後のページのみを有効にすることがわかりました。私はセッションごとに作成された 1 つのトークンを選択していません。また、置換なしのヘッダー 303 があります。

header("Location: " . $_SERVER['PHP_SELF'], false, 303);

このコードを実行すると、ヘッダーが更新で機能することがわかりますが、「データを再送信しますか?」というメッセージが表示されません。ヘッダーの後にデータがエコーされていますが、エコーしていないようです。

ページごとにポストバックデータがうまく機能するのが好きですが、リクエストされた最後のページと303を使用したセッションごとにのみ再投稿/トークンが機能しますが、ヘッダーの後のデータはエコーされません。または、トークンを許可し、データの再送信を無効にして、ユーザーに表示する必要があるデータをエコーできるようにする他の方法はありますか?

サンプル コードが必要な場合は、喜んでこの投稿を編集します。

4

2 に答える 2

0

トークンをセッションに保存すると仮定します。したがって、これを解決する最も簡単な方法は、単一のトークンではなく、それぞれに有効期限のあるトークンのリストを保存することです。

したがって、トークンを使用してページを作成するときはいつでも、それをリストに追加します。トークンを検証するときはいつでも、リストを循環させ、期限切れのトークンを消去し、すべての有効なトークンに対して検証します。

于 2012-11-26T23:32:28.360 に答える
0

なぜデータブラウザに表示されるのかは明らかではありません。(実際には印刷であり、使用されていない可能性があります。重要な場合は、telnet、パケットキャプチャ、またはヘッダーコンテンツをキャプチャするその他の手段を介してデバッグします。)

...あなたの問題は、POSTコンテンツが再送またはその他の方法で表示されることを期待していることに起因していると思います。そうではありません:303リダイレクトは(仕様により)GETを介して追跡されます。ブラウザが303リダイレクトとLocationヘッダーを確認すると、新しいURLに従い、応答の内容を無視します。

于 2012-11-26T23:48:18.653 に答える