PHP,禁用刷新时发布&;显示消息

PHP,禁用刷新时发布&;显示消息,php,forms,session,post,http-headers,Php,Forms,Session,Post,Http Headers,我有一个带有此代码的表格: <form method="post" enctype="multipart/form-data"> 或者显示错误和成功消息,但如果我这样做,如果访问者刷新页面,它将重新提交 我在线阅读了有关修复此问题的两个选项: 重定向到另一个页面(无法采用此路线,因为它会中断访问流程) 将我的消息数组存储在会话变量中(我这里的问题是,如果用户刷新或重新访问页面,则会话将停留太长时间,消息数组需要为空…) 那么,还有其他方法可以实现这一点吗?生成一个uniqe票证

我有一个带有此代码的表格:

<form method="post" enctype="multipart/form-data">
或者显示错误和成功消息,但如果我这样做,如果访问者刷新页面,它将重新提交

我在线阅读了有关修复此问题的两个选项:

  • 重定向到另一个页面(无法采用此路线,因为它会中断访问流程)
  • 将我的消息数组存储在会话变量中(我这里的问题是,如果用户刷新或重新访问页面,则会话将停留太长时间,消息数组需要为空…)

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

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

客户:

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

取消设置(美元邮政);提交后,然后在提交后重置表单submit@SRK嗯,不是。如果您非常需要使用您提到的两种解决方案之一,浏览器仍将重新提交。重定向到其他页面,或刷新页面,使其不再是POST操作。请注意,如果您使用会话路由,您可以在处理完会话数据后轻松删除该数据,使其无法重复使用。重定向到确认页面。刷新时重新提交有什么问题?嗯,您手头有如何执行此操作的示例吗?我不确定这将如何禁用刷新问题…@Dacramash我添加了一个简单的示例。似乎正在工作,但我不再需要标题(“位置:”)了,对吗?@Dacramash正确,只需要此解决方案中的一个来解决此问题。因此,在所有这些之后,我似乎需要使用标题来强制刷新(我们的图像位于CDN上,我启动了清除缓存的代码,但需要强制刷新)…您知道是否有某种方法可以将您的修复与标头混合使用?
<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;
}