php - 如果页面刷新如何取消保存

标签 php html mysql

我在这里得到一个代码,如果我刷新页面它会自动保存数据....任何人都可以帮助我它只会在单击提交按钮时保存。

当前代码:

<?php 
ob_start();
?>
<html>
<head>
<title>test</title>
</head>
<body>
<?php
include('include/connect.php');

$query = mysql_query("SELECT DISTINCT count(batchcode) as batchcode1 FROM batchcodes");
while( $rows = mysql_fetch_array($query)) {
    $code=$rows['batchcode1'];
}

if(isset($_POST['save'])){
    $var = $code+1;
    $sql = mysql_query("INSERT INTO batchcodes(batchcode) VALUES (". $var .")");
}
?>
<form method="post" action="index.php" >
<input type="text" value="batch<?php echo $var; ?>" />
<input type="submit" name="save">
</form>
</body>
</html>

最佳答案

您显示的代码来自您的“处理”页面。该页面处理帖子,它检查是否有参数“保存”,如果有,则保存。

如果用户刷新该页面,他再次访问该页面,再次发送一个“保存”参数,所以 INSERT 完成了两次。

为避免这种情况,您应该使用 POST-REDIRECT-GET model ,您的处理页面在其中获取数据,保存数据,然后将用户重定向到仅显示数据的“GET”页面(无发布,无插入)。如果用户随后点击刷新,他只会刷新“GET”页面。

当然,用户始终可以继续使用“后退”按钮转到实际的插入页面。他的浏览器会警告他“您正在重新提交表单数据……”,但如果他愿意,他可以这样做。如果你真的想处理这个问题,你可以使用 session key :在你的表单上有一个额外字段“submitID”,并且在 INSERT 上,首先检查该 ID 是否已经被“使用”。您需要在某处添加一个额外的表/列“submitID”,以确保表单只能提交一次。

关于php - 如果页面刷新如何取消保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378025/

相关文章:

php - 如何使用 actionscript 和 javascript 在客户端获取文件大小?

PHP 使用以下命令替换文本文件中的字符串

php - MySQLi 获取错误

Javascript/PHP/Jquery - 自动填充和数据加密

php - mysql pdo 连接没有关闭?

javascript - 使用来自 PHP 的查询填充 HTML 元素

javascript - 从动态下拉列表中获取选定值(由 javascript 生成的 ID 选项)

javascript - 使用 HTML DOM .createElement()、.setAttributeNode() 和 .appendChild() 方法时遇到困难

html - div到float left的右边,让它出现在下面

php - fatal error : Call to a member function prepare() on a non-object,调用prepare语句的对象不为null