我有一个网页,其中包含一个使用POST方法的表单并引用它提交的同一页面。我正在使用一个PHP包含文件,其中包含在设置提交值时运行的if语句。但是,由于某种原因,在一次提交之后,每次刷新页面时,都会将表单提交之前提交的数据(在刷新页面之前,浏览器会警告此信息)。是什么导致了这种情况,我可能做错了什么?页面刷新导致表单提交
3
A
回答
1
这是预期的。您应该将表单提交给具有唯一URL的处理程序,无论它是查询字符串还是不同的URI。一种解决方案(许多)是改变你的表单操作:
<form action="?action=submit" method="post">
,然后在PHP脚本处理表单,然后更改上下文回网址没有查询字符串
if (!empty($_POST['action']) && $_POST['action'] == 'submit') {
// do stuff
header('Location: '.$_SERVER['SCRIPT_NAME']);
die();
}
0
我与我的一个网页有同样的问题。 原因是,当浏览器警告你它会再次提交表单时,这意味着当你点击一个提交按钮时,它会变成同样的东西。
我做了2件事情,以避免它,但我相信有很多其他方式。 1.不要让页面在成功提交表单后再次回显表单。 我的是这样的
<?php
if(!isset($_POST['submit'])) {
include(form.php);// you can modify this according to your needs.
} else {
//display your message about what happened with the form.
}
?>
这种做法,你的页面将不会在一,容表单提交然而,这并不能阻止它从提交上刷新。 2.如果表单已提交,则创建一个控制器输入,其中携带一个表示表单已提交的值。例如,把这个到您的形式:
<?=(isset($_POST['submit']))?"" :"<input type-"hidden" name="submit_stat" value="true" />" ; ?>
,当你提交时处理您的表单与你的PHP检查,并作出这样的变量脚本行为:
<?php
if($_POST['submit_stat']==true) {
//do not process the form here.
//stop your script
}
?>
另一个你可以做的事情是将页面重定向到除了处理表单的页面之外的其他页面。我相信这是最安全的。
0
阻止这种情况的另一种方法是将发布数据移至会话,重定向,从会话收集回发并删除会话发布数据。
if(!empty($_POST) && empty($_FILES)){
// move post to session
// redirect to same url (don't forget possible get query)
}else{
// collect post from session
// unset post from session
}
将此设置为默认设置,您不应该对发布数据有任何问题。
只有文件上传有例外。在这种情况下重定向* 后 *后处理manualy。
相关问题
- 1. 表单提交按钮/刷新页面
- 2. 刷新页面提交表单反复
- 3. 刷新表单提交后的页面
- 4. 表单提交无刷新页面
- 5. 表单在页面刷新提交
- 6. 停止表单刷新页面提交
- 7. Ajax表单提交刷新页面
- 8. 提交表单php无刷新页面
- 9. Ajax表单提交刷新页面
- 10. Symfony2表单提交页面刷新
- 11. 提交表单不刷新页面
- 12. PHP - 页面刷新表单提交
- 13. jquery iframe表单提交刷新页面
- 14. 提交表单后刷新页面
- 15. Twitter引导,通过jquerys提交表单submit()只刷新页面
- 16. 提交表单并刷新产品DIV无刷新页面
- 17. print_r导致页面刷新?
- 18. Meteor.call(...)导致刷新页面
- 19. 刷新页面提交
- 20. 刷新页面提交
- 21. 提交后刷新页面
- 22. 提交表格后刷新页面
- 23. Intreceptor刷新表格后,提交页面
- 24. 刷新页面后提交ajax表格
- 25. 单击表单中的按钮会导致页面刷新
- 26. HTML提交表单无刷新页面并显示提示框
- 27. 避免页面刷新时使用jQuery重新提交表单
- 28. 简单的表单提交没有页面刷新问题
- 29. 刷新页面导致重新登录?
- 30. 表单提交元刷新?
显示一些代码,我们只能推测到那时。 – Julio
这是刷新表单提交结果页面时的预期行为。如果你链接到或导航到的网址而不是刷新你将得到没有提交页面。 –
这是您通过** POST **提交表单时的预期行为,然后刷新 – Leonardo