Php 如何清除表单数据,以便刷新不会在不转发的情况下复制数据?

Php 如何清除表单数据,以便刷新不会在不转发的情况下复制数据?,php,html,browser,refresh,Php,Html,Browser,Refresh,我创建了一个留言簿,用户可以通过HTML表单在其中添加条目。将数据提交到留言簿后,一些用户刷新页面。我知道的所有浏览器都会重新提交数据。之后是否有办法告知浏览器不应重新提交数据 我曾经在成功地将数据存储到数据库后进行重定向。但是,现在我想向用户提示一些附加信息,例如,感谢您题为“…”的条目,或者该条目的一部分已发送到您的电子邮件地址。。。。我真的希望避免添加所有的值来获取参数,以便在转发后能够使用信息 没有前锋还有别的路吗!要防止浏览器在用户单击“刷新”按钮后再次提交数据?您可以设置一个包含已发

我创建了一个留言簿,用户可以通过HTML表单在其中添加条目。将数据提交到留言簿后,一些用户刷新页面。我知道的所有浏览器都会重新提交数据。之后是否有办法告知浏览器不应重新提交数据

我曾经在成功地将数据存储到数据库后进行重定向。但是,现在我想向用户提示一些附加信息,例如,感谢您题为“…”的条目,或者该条目的一部分已发送到您的电子邮件地址。。。。我真的希望避免添加所有的值来获取参数,以便在转发后能够使用信息


没有前锋还有别的路吗!要防止浏览器在用户单击“刷新”按钮后再次提交数据?

您可以设置一个包含已发布数据哈希的会话变量,并在每次加载页面时进行检查。如果哈希相同,则表示数据已提交:

<?php
session_start(); //Start the session

$dataHash = md5($_POST['name'].$_POST['comment'].$_POST['whatever']); //Get a hash of the submitted data

if(isset($_SESSION['gbHash']) && $_SESSION['gbHash'] == $dataHash) { //Check if the data has been submitted before
    //Do not save the data/show a warning message
} else {
    //Save the data/show a thank you message
}


$_SESSION['gbHash'] = $dataHash;
?>

也许您可以设置一个会话变量,其中包含发布的数据的散列,并在每次加载页面时对其进行检查。如果哈希相同,则表示数据已提交:

<?php
session_start(); //Start the session

$dataHash = md5($_POST['name'].$_POST['comment'].$_POST['whatever']); //Get a hash of the submitted data

if(isset($_SESSION['gbHash']) && $_SESSION['gbHash'] == $dataHash) { //Check if the data has been submitted before
    //Do not save the data/show a warning message
} else {
    //Save the data/show a thank you message
}


$_SESSION['gbHash'] = $dataHash;
?>

例如,在执行POST操作后,使用附加到重定向位置的自定义消息重定向用户

header("location: http://www.website.com/thankyou.php?msg=email_sent");

然后切换GET参数以显示相应的消息类型。
或用户AJAX发布:

例如,在执行POST操作后,使用附加到重定向位置的自定义消息重定向用户

header("location: http://www.website.com/thankyou.php?msg=email_sent");

然后切换GET参数以显示相应的消息类型。 或用户AJAX发布:

没有前锋还有别的路吗!将浏览器从 在用户单击刷新后再次提交数据 纽扣

是的-Ajax-您仍然可以显示所有成功/失败消息,甚至验证

请阅读以下内容-

例如:

var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;  
//alert (dataString);return false;  
$.ajax({  
  type: "POST",  
  url: "bin/process.php",  
  data: dataString,  
  success: function() {  
    $('#contact_form').html("<div id='message'></div>");  
    $('#message').html("<h2>Contact Form Submitted!</h2>")  
    .append("<p>We will be in touch soon.</p>")  
    .hide()  
    .fadeIn(1500, function() {  
      $('#message').append("<img id='checkmark' src='images/check.png' />");  
    });  
  }  
});  
return false;  
希望这有帮助

没有前锋还有别的路吗!将浏览器从 在用户单击刷新后再次提交数据 纽扣

是的-Ajax-您仍然可以显示所有成功/失败消息,甚至验证

请阅读以下内容-

例如:

var dataString = 'name='+ name + '&email=' + email + '&phone=' + phone;  
//alert (dataString);return false;  
$.ajax({  
  type: "POST",  
  url: "bin/process.php",  
  data: dataString,  
  success: function() {  
    $('#contact_form').html("<div id='message'></div>");  
    $('#message').html("<h2>Contact Form Submitted!</h2>")  
    .append("<p>We will be in touch soon.</p>")  
    .hide()  
    .fadeIn(1500, function() {  
      $('#message').append("<img id='checkmark' src='images/check.png' />");  
    });  
  }  
});  
return false;  

希望这有帮助。

我不这么认为。这是一种浏览器行为,我认为无法修改。但是,你可以做的是显示你想在重定向页面中显示的信息,我不这么认为。这是一种浏览器行为,我认为无法修改。但是,你可以做的是显示你想在重定向页面中显示的信息,这非常聪明!为了更方便地检查是否提交了相同的数据,我使用了$dataHash=md5infrade,,$\u POST;要包含所有的$\u POST变量。如果您使用,那么更好的选择可能是使用md5json_encode$\u POST捕获所有数据进行哈希。非常聪明!为了更方便地检查是否提交了相同的数据,我使用了$dataHash=md5infrade,,$\u POST;包含所有$\u POST变量。如果使用,则更好的选择可能是使用md5json_encode$\u POST捕获所有数据以进行哈希。