在PHP中提交后清除表单数据

在PHP中提交后清除表单数据,php,Php,我在表单数据清理方面遇到了麻烦。用户提交表单后,数据将添加到数据库中。在这里以前天气很好。但是,如果用户刷新页面,以前输入的数据将重新输入数据库。我正在使用post方法发送数据。我没有使用AJAX。提交for数据后,整个页面将重新加载。请帮我做这个。如果有任何方法可以在提交表单数据后清除表单数据,以便在刷新页面后不会将任何数据添加到数据库,请回答此问题。在我看来,表单的post操作就是表单页面本身。您必须添加一个检查表单是否已经提交,以便您不再将数据保存在数据库中。或者,您可以将post操作更改

我在表单数据清理方面遇到了麻烦。用户提交表单后,数据将添加到数据库中。在这里以前天气很好。但是,如果用户刷新页面,以前输入的数据将重新输入数据库。我正在使用post方法发送数据。我没有使用AJAX。提交for数据后,整个页面将重新加载。请帮我做这个。如果有任何方法可以在提交表单数据后清除表单数据,以便在刷新页面后不会将任何数据添加到数据库,请回答此问题。

在我看来,表单的post操作就是表单页面本身。您必须添加一个检查表单是否已经提交,以便您不再将数据保存在数据库中。或者,您可以将post操作更改为在数据库中执行插入操作的其他页面,并将用户重定向到初始页面表单。

大多数人使用url将表单发布到,然后重定向回原始表单。这可以是相同的url。

插入数据后,执行重定向:

header('Location:'.$_SERVER['PHP_SELF']);
重定向后,刷新不会导致再次插入数据


要向用户显示消息,我只需通过
$\u GET
设置一个标志。例如:

// Redirect and set $_GET variable
header('Location:'.$_SERVER['PHP_SELF'].'?showmsg=true');
要显示隐藏的div,可以创建一个函数:

function show_confirmation()
{
    return isset($_GET['showmsg']) && $_GET['showmsg'] == 'true';
}
并使用如下功能:

<div style="display:<?php echo show_confirmation() ? 'block' : 'none'; ?>">
    <!-- Message for user -->
</div>

尝试使用会话。设置会话变量以记录用户是否已提交表单

将其放在代码的开头(需要放在每页上):

会话_start()

然后,当他们提交表单时,设置一个会话变量:

$\u会话['form\u submitted']=true


这里有一个指向会话教程的链接:

如果在表单上使用
POST
而不是
GET
作为操作属性,则刷新结果页不会重新提交表单(某些浏览器可能提供此选项,但默认情况下肯定不应该这样做)

然而,你不能排除表单被多次发布的可能性——这有几个常见的原因;例如,如果页面加载缓慢,用户可能会多次单击按钮


最好的做法是在表单上有一个隐藏的唯一ID字段,这样您就可以知道何时收到一个已提交多次的表单,并且您的程序可以忽略它。

在生成表单html时生成一个唯一键,并将表单中的隐藏字段设置为该键。将密钥与数据一起保存,如果密钥已存在于数据库中,则不保存数据。

如果选择重定向方法,请不要忘记在重定向后添加骰子,以指示Web服务器停止脚本执行

if(saveFormInformation())
{
    header('Location: http://www.example.com/'); //this line instructs browser 
                                                 //to go to example. com 
                                                 //but the webserver will keep executing the rest of the script 
                                                 //unless you instruct it to stop

    die; //this line instructs web server to stop execution of the script
}

将其插入数据库后,调用unset()方法清除数据

unset($\u POST)


在这里检查我的答案:

在提交之前可能使用布尔值进行检查,然后在提交时将其设置为true?谢谢,伙计,它可以工作。但还有一个问题。提交表格后,我有一条信息要显示。该消息显示在div元素中,该元素在用户提交表单之前隐藏。你能帮忙吗?Sanket,我更新了我的答案,建议向你的用户显示隐藏的div。