寻找一些关于这个问题的建议。我碰巧遇到了使用 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 数据一起坐在那里。然后,再次提交数据,验证通过并发生重定向。接下来,当在浏览器上按下后退按钮时,它会在通过验证之前的状态下运行到表单中,并且出现“文档过期”问题。
我怎样才能防止这种情况?