我有一个将文件内容导入mySQL并返回结果的函数。如果我刷新页面并单击“是”,它将再次使用相同内容将输出加倍。
我怎样才能阻止这种情况发生?在这种特殊情况下,地址栏中没有URI,但在其他功能上没有。
答案 0 :(得分:2)
您应该检查数据库中的内容是否存在,如果不存在,请填写它们。否则不要运行该功能。
伪代码:
if !database.containsRecords
fillDatabase()
end
除此之外,在POST请求后重定向始终是一个好习惯。所以你想要:
fillDatabase();
header("Location page.php");
exit();
答案 1 :(得分:1)
在每个页面加载时查询数据库,看看它是否已经填充。如果已填充,则不要再尝试填充它。
答案 2 :(得分:1)
您应该使用POST-redirect-GET pattern。
更新数据库后,将HTTP重定向发送到显示结果的单独页面 刷新浏览器将重新加载该单独的页面。
答案 3 :(得分:0)
我假设您使用POST表单上传文件。 您可以在表单中包含一个带有伪随机唯一ID的隐藏输入字段。 如果用户通过POST重新发送数据,您可以检查是否已处理此请求。 隐藏字段不会保存,因为用户可能会编辑它们,但您可以检测到意外重新提交。