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 回答