PHP,在刷新和显示消息时禁用 POST

PHP, disabling the POST on refresh & displaying message

我有一个包含此代码的表格:

<form method="post" enctype="multipart/form-data">

所以基本上,每当访问者单击“提交”时,页面就会刷新,我就会进行操作。一切正常,但似乎我必须通过以下方式在刷新时禁用 re-post 之间做出选择:

header("Location: http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");

或向我显示错误和成功消息,但如果我这样做,如果访问者刷新页面,则重新提交。

我在网上阅读了两种解决此问题的方法:

那么,还有其他方法可以实现吗?

为 ex 生成一个像时间戳一样的唯一票证。将其作为表单的附加参数。现在您可以将处理后的请求存储在会话或 cookie 中。一个简单的例子:

客户:

<form method="post" enctype="multipart/form-data">
    <input type="hidden" name="requestTicket" value="<?php echo time(); ?>" />
    ...

服务器:

if(!array_key_exists("rt", $_SESSION))
    $_SESSION["rt"] = array();

if(!array_key_exists($_REQUEST["requestTicket"], $_SESSION["rt"])) {
    //do the job
    //...

    $_SESSION["rt"][$_REQUEST["requestTicket"]] = true;
}