[英]How to make a form submit only on button click not on refresh?
我有一个表单,仅当表单字段更改时,我才应使表单提交(对服务的请求);如果用户刷新页面时字段未更改,则不应再次提交表单。
目的是尽可能减少表单提交的数量,因此,如果用户输入的数据相同并且他刷新,我们不应浪费先前返回的数据并尝试提出新的请求并显示相同的数据。
相反,仅当TEXT(searchdirectory)更改时才应提交。 因此,不会重复请求相同的数据。
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<label>TEXT :</label>
<input type="text" id="search_dir" name="searchdirectory"
value="<?php
if (isset($_POST['searchdirectory']))
{
echo($_POST['searchdirectory']);
}
?>"
/>
<input type="submit" value="Search" name="submit" id="searchB"/>
<?php
if (isset($_POST['submit']))
{
//functions to show results queried from searchdirectory
}
?>
</form>
我想这将是处理浏览器的刷新行为,如果用户刷新页面,有没有办法停止提交表单。 它应该显示相同的数据。
第一次发送表单数据时,请使用重定向。
<?php
if (isset($_POST['submit']))
{
//do function
header("Location: http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
?>
其中"http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']
"http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']
"http://". $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']
-是一个链接,表单提交后用户将被重定向到该链接。
有两种方法。 但是我尝试解决您的目标,而不是您的特定问题:)
2如果表单是登录对话框等,则应使用的另一种方法。将一次性会话密钥添加到表单隐藏字段中,并将相同的密钥存储在服务器上。 现在,如果用户提交表单,请检查键是否匹配。 如果他们确实接受提交,请清除密钥。 如果用户现在再次按下F5,并且您已经删除了键,只需拒绝提交的值即可。
为什么在提交后不清除表单,或者为每个提交请求添加会话
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.