首页 >后端开发 >php教程 >PHP 中的 Post-Redirect-Get (PRG) 模式如何防止表单重新提交?

PHP 中的 Post-Redirect-Get (PRG) 模式如何防止表单重新提交?

Susan Sarandon
Susan Sarandon原创
2024-12-01 03:37:09138浏览

How Can the Post-Redirect-Get (PRG) Pattern Prevent Form Resubmission in PHP?

PHP 中的 Post-Redirect-Get (PRG) 模式:实现表单重新提交保护

设计 Web 应用程序时,防止表单重新提交页面重新加载或后退按钮操作后可以增强用户体验并保持数据完整性。 Post-Redirect-Get (PRG) 模式是解决此问题的一种广泛认可的方法,但找到简单的 PHP 实现可能具有挑战性。

以下是演示 PHP 中 PRG 模式的简化示例:

<?php
if ($_POST) {
    // Validate input

    if (/* Input is valid */) {
        // Execute code (such as database updates) here.
        // Redirect to this page.
        header("Location: {$_SERVER['REQUEST_URI']}", true, 303);
        exit();
    }
}
?>
<html>
<!-- Your HTML page with a form -->
</html>

在此示例中,当通过 POST 提交表单时,将验证输入。如果输入有效,则执行数据库更新等代码。随后,该脚本使用 Location 标头将用户重定向到同一页面。 303 See Other 状态码表示应通过 GET 重复请求,有效防止表单重新提交。

通过使用 $_SERVER['REQUEST_URI'],此示例避免了 CMS 系统和框架中 PHP_SELF 的潜在问题。调用 exit() 函数是为了防止执行重定向下方的 HTML 代码。

此 PRG 实现提供了针对表单重新提交的保护,同时最大限度地降低了代码复杂性。通过采用此模式,您可以增强 Web 应用程序的稳健性和用户体验。

以上是PHP 中的 Post-Redirect-Get (PRG) 模式如何防止表单重新提交?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn