3

リダイレクト後に成功メッセージを表示するための最良の方法を探しています。フォームが複数回送信されるのを防ぐには、フォームが送信された後にリダイレクトするのが最善の方法だと思います。

次の可能性は、私が頭に浮かんだいくつかです。それらの中で何が一番良いと思いますか、またその理由、または他の可能性はありますか?

  • メッセージをセッションに保存し、そこからターゲット ページを読み取る
  • 新しいページに次のようないくつかの GET パラメータを指定しますheader('Location: index.php?success='.urlencode($message));
  • ヘッダーよりも多くを提供Locationし、このようにターゲットページでそれらを読み取ります

    header('Location: index.php');
    header('X-Success-Message: ' . urlencode($message));
    
4

2 に答える 2

1

これは私の意見:

セッション。

セッションで保存するすべてのデータはサーバーに保存されます。デフォルトの場所はディスクです。IO - 非常に限られたリソースです。必要がないときは、セッションを開始しないでください。必要がない場合は、セッションにデータを保存しないでください。

新しいページにいくつかの GET パラメータを指定します。

これは良い習慣ですが、1 つ欠けています。クライアントがリンクをお気に入り (など) に保存し、それを別のユーザーに渡し、後でこのリンクを開くと、成功メッセージが表示されます。

Location ヘッダー以上のものを提供し、ターゲット ページでそれらを読み取ります。

これは良い方法ですが、アプリケーションとクライアントの中間にあるサーバー構成とプロキシに依存します。サーバー構成 (プロキシ) が非標準ヘッダーを強制終了することがあります。しかし、通常は問題ありません。

このデータを Cookie に保存します。

不足:

  • クッキーを削除することを忘れないでください。
  • Cookie に保存されたすべてのデータは、サーバーからクライアントに転送され、戻ってきます。

このデータをサーバーに保存します。

データベース、memcache、NoSQL などに保存します。これがサーバーに追加の負荷を発生させず、アプリケーションに理想的に適しているのであれば、なぜですか? また、必ずしもメッセージ自体を保存する必要はありませんが、状態フラグのみを保存する必要があります。

実際には、このすべての方法を使用します。現時点でどの方法を使用する必要があるか - アプリケーションの要件と将来の使用方法を確認してください。

于 2012-06-15T08:45:51.957 に答える
0

メッセージを配列または構成ファイルに保存します。

セッション (またはフレームワークのフラッシュ データ) を使用する場合は、表示するメッセージのキーを保存するだけです。

GET ソリューションを使用する場合は、表示するメッセージのキーをパラメーターに渡します。

GET を使用し、ユーザーがメッセージのあるページをブックマークするのを避けたい場合は、セッションでブール変数を使用して、この変数が 1 に設定されている場合にのみメッセージを表示することができます。

于 2012-06-16T12:23:12.047 に答える