ホームページ  >  記事  >  バックエンド開発  >  フォーム送信エラー後に返されたコンテンツが消える問題を解決

フォーム送信エラー後に返されたコンテンツが消える問題を解決

WBOY
WBOYオリジナル
2016-06-20 13:03:50734ブラウズ

(PHP Webサイトのみ、フォーム送信エラーが返った後に入力内容が消えてしまう問題を解決) フォーム情報を入力して送信する際、ユーザーが入力して送信する際に問題が発生します。フォームの場合、プログラムは要件を満たしていないと判断し、リターンすると、以前に入力されたフォーム情報はリターン後にクリアされます。記入される情報量が少ない場合は問題ありませんが、記入される情報量が比較的多い場合は、記入する人の機嫌に直結します。そのため、フォーム送信エラーが戻った後に入力内容が消えてしまう問題の解決は、ユーザーエクスペリエンスを向上させる上で喫緊の課題となっています。このような問題について、以下の状況をまとめました。

(1) このページは session_start 関数を使用しています。この関数には、現在のページが強制的に更新されないという特性があります。この関数の後に次のコードを追加します。header("Cache- control: private");//PHP プログラムでは、この行の前に出力を含めることはできないことに注意してください。追加する解決策は他にもいくつかあります。

session_cache_limiter('nocache'); //session_start の前にフォームをクリアします。

session_cache_limiter('private'); //セッションが有効な間のみ、フォームをクリアしません。
session_cache_limiter('public'); //セッションが使用されていない場合と同様に、フォームをクリアしません。上記のセッションを設定するとキャッシュ現象が発生し、セッションに適用するとセッション情報が更新できない問題が発生するため、この記事では次のような別の解決策を提案します。

(2) Header メソッドを使用してメッセージ ヘッダー Cache-control を設定し、次のコードをページに追加します。

header('Cache-control: private, must- revalidate'); / /ページのバウンスをサポートします。この行の前には出力がないことに注意してください

(3) session_cache_limiter メソッドを使用して、次のコードをページに追加します:

session_cache_limiter ('private,must-revalidate'); //session_start メソッドの前に記述する必要があることに注意してください。 以下は、Cache-Control メッセージ ヘッダー フィールドの補足説明です。 Cache-Control は、その後にリクエストと応答が続くキャッシュ メカニズムを指定します。 。

要求メッセージまたは応答メッセージで Cache-Control を設定しても、別のメッセージ処理プロセスのキャッシュ処理プロセスは変更されません。リクエスト中のキャッシュ命令には、no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached が含まれ、応答メッセージ内の命令には、public、private、no-cache、no が含まれます。 -store、no-transform、must-revalidate、proxy-revalidate、max-age。

各メッセージの指示の意味は次のとおりです。

パブリック: 応答を任意のキャッシュ領域にキャッシュできることを示します。

プライベート: 単一ユーザーの応答メッセージの全部または一部が共有キャッシュで処理できないことを示します。これにより、サーバーは、他のユーザーのリクエストには無効なユーザーからの部分的な応答のみを記述することができます。

no-cache: リクエストまたは応答メッセージをキャッシュできないことを示します。

no-store: 重要な情報が意図せずに公開されるのを防ぐために使用されます。リクエスト メッセージで送信すると、リクエスト メッセージと応答メッセージの両方でキャッシュが使用されます。

max-age: クライアントが、指定された時間 (秒単位) を超えない存続期間を持つ応答を受信できることを示します。

min-fresh: クライアントが、現在時刻に指定された時刻を加えた時間よりも短い応答時間で応答を受信できることを示します。

max-stale: クライアントがタイムアウト期間を超えて応答メッセージを受信できることを示します。 max-stale メッセージの値を指定すると、クライアントは指定されたタイムアウト期間の値を超える応答メッセージを受信する可能性があります。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。