在浏览器中重新加载/刷新页面而不重新提交表单?

Pau*_*aul 5 php forms refresh reload

我在提交到同一页面的 php 页面上有一个表单。我注意到如果我重新加载/刷新页面,表单会重新提交。我如何编码以最简单的方式避免这种情况?

mar*_*kli 3

一种可能性是实施后重定向获取方法。

简单地说,POST 请求永远不会传递到浏览器。相反,您执行所有必要的操作并将所需的信息存储在会话中,然后使用代码 303 进行重定向。

$page = 'show_result.php';
header('Location: '.$page, true, 303);
exit;
Run Code Online (Sandbox Code Playgroud)

通过这种方式,浏览器将显示“show_result.php”页面(GET 请求),而不是 POST 请求的页面。这也是添加到历史记录中的页面,因此刷新并使用后退按钮将永远不会执行另一个 POST 请求。作为一个很好的副作用,您可以摆脱浏览器关于重新发送数据的警告,通常用户无论如何都无法决定要做什么。

我认为这种方法最大的问题是,你需要一个会话来存储错误消息,这意味着你必须依赖cookie。如果不重定向显示错误,浏览器将显示有关重新发送数据的警告。