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