我目前正在为一个学校项目编制一个网站,我必须在其中组织每日时间表/报告。
以下情况: 我在PHP中插入以下内容:
$sqlinserttb = "INSERT INTO tagesberichte (`TbID`, `Tagesberichte`, `Datum`) VALUES ('DEFAULT', '".$tagesbericht."', '".$datum."');";
如果提交已被点击,则会将其插入。 问题是当我按F5或手动刷新浏览器时,页面会再次使用最后使用的输入插入它。
我错过了什么?
答案 0 :(得分:0)
从您解释的用例中,我了解到您有一个自我提交表单(提交到同一页面并处理请求)。您可以将请求变量存储在php sessions中,然后检查传入的请求数据与会话中的传入请求数据(如果会话存在)。如果相同,则显示错误消息,否则执行插入操作,然后使用您的请求数据设置会话。
答案 1 :(得分:0)
如果刷新URL,所有相应的数据将被发送到用户自己发布的php脚本。要处理它,你可以: 1.使用post方法将结果发送到服务器。它不会排除刷新页面的情况,但大多数浏览器会询问用户“你真的想要将所有数据重新发送到服务器吗?” 2.在php脚本继续输入页面后使用重定向。在这种情况下,浏览器将不会重新发送数据。但是,用户仍然可以返回到previos页面并再次重新发送数据。 你还可以提供某种'meta http-equiv =“Cache-Control”...'变量来使页面过期
答案 2 :(得分:0)
插入完成后使用header("location: <path to your self-submitting form>");
,这样就会显示一个新的表单,刷新不会导致再次提交。