如果表单未验证,则重定向后文档过期

时间:2013-01-27 01:34:00

标签: php redirect validation

寻找有关此问题的一些建议。我碰巧遇到了使用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数据。然后,再次提交数据,验证通过并重定向发生。接下来,当在浏览器上按下后退按钮时,它会在通过验证之前的状态下运行到表单中,并且出现“文档已过期”问题。

我该如何防止这种情况?

1 个答案:

答案 0 :(得分:0)

我不完全确定你愿意尝试多远或多少 - 我可能会建议使用会话来存储变量。执行此操作将允许您在页面刷新期间调用变量的值。

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

以下是使用演示的更好链接: http://www.w3schools.com/php/php_sessions.asp