1

この問題に関するアドバイスを探しています。私はたまたま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 データとともにそこに置かれます。次に、データが再度送信され、検証に合格し、リダイレクトが発生します。次に、ブラウザで戻るボタンを押すと、バリデーションに合格する前の状態のフォームに遭遇し、「ドキュメントの有効期限が切れています」という問題が発生します。

どうすればこれを防ぐことができますか?

4

1 に答える 1

0

あなたがどこまで、または何をしようとしているのか完全にはわかりません-セッションを使用して変数を保存することをお勧めします。これを行うと、ページの更新中に変数の値を呼び出すことができます。

http://us2.php.net/manual/en/session.examples.basic.php

使用デモのより良いリンクは次のとおりです: http://www.w3schools.com/php/php_sessions.asp

于 2013-01-27T02:21:34.517 に答える