将数据插入数据库一次,而不是多次

时间:2014-04-16 11:15:37

标签: php

这是我制作评论系统的方式,

这就是我使用标题来重新加载"该页面只在将信息放入数据库时​​。

当我将信息发送到数据库并单击f5然后再次将其丢入数据库。就像它是垃圾邮件一样。

if ($stmt = $this->mysqli->prepare('INSERT INTO fms_kommentarforum (getid, brugerid, kommentar) VALUES (?, ?, ?)')) { 
$stmt->bind_param('sss', $getid, $brugerid, $kommentar);
$getid = $_GET['id']; 
$brugerid = $_SESSION["id"];
$kommentar = $_POST["beskedinfo"];
$stmt->execute();

   //reload the page again
   ob_start();
   header("Location: http://www.blabla.dk/forum/" . $_GET["id"] . "/" . $_GET["url"] . "/");
   ob_end_flush();

$stmt->close();
}

添加网址,看起来像这里的一些;的 blabla.com/forum/1/test --- AE-OE-AA-AA /# 当我将信息发送到数据库一次时

我希望#在它出现时不会出现#。

并以我写的形式 action ="#"

2 个答案:

答案 0 :(得分:0)

您可以使用303 HTTP状态代码将客户重定向到同一个uri。

http://en.wikipedia.org/wiki/HTTP_303

所以客户端可以在不再发送帖子请求的情况下点击F5。

header("HTTP/1.1 303 See Other");
header("Location: http://example/post");

答案 1 :(得分:0)

我已经看到的一个技巧基本上是为GET / POST数据添加一个随机数,并在进行更新时记住它们。如果您使用之前看到的随机数获得第二次更新请求,则表示它来自F5并跳过此更新。

编辑:请参阅:例如:this SO questionthis web-page