session_cache_limiter private_no_expire ...表单和缓存

时间:2012-12-03 20:10:07

标签: php

我遇到的问题是我不得不删除缓存或表单不提交任何新内容。例如,我在表单中键入新数据并提交,但未插入到mysql中。我必须先删除缓存。

submit.php上是表格。 done.php$_POST收到submit.php个变量 。在done.php的顶部,我有session_cache_limiter('private_no_expire');。我有这个,所以当用户按下后退按钮并返回done.php时,他们将不会收到页面过期消息。

我只添加session_cache_limiter('private_no_expire');以删除页面过期消息。有没有替代方案,所以当我用户按下后退按钮时,他们没有得到页面过期消息?...或者我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

另一种方法是在提交失败或成功后将表单处理器的301重定向发送回submit.php。这将阻止在使用后退按钮时出现提示。它将跳过提交过程回到用户之前的任何页面(通常是submit.php)。

你必须在submit.php中修改你的逻辑来处理这种情况。您不想使用用户以前的条目重新填充表单字段,并且还能够显示表单未提交的原因的任何错误消息。

处理此问题的一种方法是将所有表单提交和任何错误消息保存到会话中,并在重新显示submit.php时,检查会话中是否有任何表单数据。如果是这样,请使用会话中的先前条目重新填充表单字段,并显示会话中的任何错误消息。

<强> done.php

// validate form inputs here...

if (!$formIsValid) {
    // save $_POST values to $_SESSION
    // save any error message to $_SESSION
    header('Location: /submit.php');  // redirect back to form
    exit;
} else {
    header('Location: /success.php'); // redirect to success page
    exit;
}