PHP刷新,我怎么能阻止前一个函数被再次调用页面刷新


PHP refresh, how can I stop the previous function being called again on page refresh?

我有一个将文件内容导入mySQL并返回结果的函数。如果我刷新页面并单击"yes",它将再次使用相同的内容加倍输出。

我怎样才能阻止这种情况的发生?在这种特殊情况下,地址栏中没有URI,但在其他函数中有。

您应该检查数据库中的内容是否存在,如果不存在,则填充它们。否则不要运行该函数。

psuedo-code:

if !database.containsRecords
  fillDatabase()
end

最重要的是,在POST请求之后进行重定向总是很好的做法。所以你需要:

fillDatabase();
header("Location page.php");
exit();

在每次页面加载时查询数据库,看看它是否已经被填充。如果它已被填充,则不要尝试再次填充。

您应该使用POST-redirect-GET模式。

更新数据库后,发送HTTP重定向到显示结果的单独页面。
刷新浏览器将重新加载该单独的页面。

我假设您使用POST表单来上传文件。您可以在表单中包含一个带有伪随机唯一id的隐藏输入字段。如果用户通过POST重新发送数据,您可以检查是否已经处理了此请求。隐藏字段不会被保存,因为用户可能会编辑它们,但您可以检测到意外的重新提交。