寻找有关此问题的一些建议。我碰巧遇到了使用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数据。然后,再次提交数据,验证通过并重定向发生。接下来,当在浏览器上按下后退按钮时,它会在通过验证之前的状态下运行到表单中,并且出现“文档已过期”问题。
我该如何防止这种情况?
答案 0 :(得分:0)
我不完全确定你愿意尝试多远或多少 - 我可能会建议使用会话来存储变量。执行此操作将允许您在页面刷新期间调用变量的值。
http://us2.php.net/manual/en/session.examples.basic.php
以下是使用演示的更好链接: http://www.w3schools.com/php/php_sessions.asp