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