この問題に関するアドバイスを探しています。私はたまたまphpフレームワークYiiを使用していましたが、Webフォームの普遍的な問題/この概念の理解不足のようです。
問題: ブラウザーの [戻る] ボタンを押すと、フォームに検証エラーがあった場合にのみ、ユーザーが「ドキュメントの有効期限が切れました」というメッセージが表示されます。送信前に検証エラーが発生しなかった場合、「ドキュメントの期限切れ」の問題はありません (リダイレクトのため)。
コントローラーのこの単純な一般的な例を見てみましょう。
public function actionSomething() {
$model=new ExampleClass;
if(isset($_POST['ExampleClass'])) {
$model->attributes=$_POST['ExampleClass'];
if($model->validate()) {
$this->redirect(Yii::app()->createUrl('some/where'));
}
}
$this->render('_form',array(
'model'=>$model
));
}
そのため、検証が失敗すると、フォームは $_POST データとともにそこに置かれます。次に、データが再度送信され、検証に合格し、リダイレクトが発生します。次に、ブラウザで戻るボタンを押すと、バリデーションに合格する前の状態のフォームに遭遇し、「ドキュメントの有効期限が切れています」という問題が発生します。
どうすればこれを防ぐことができますか?