0

这是代码。我正在尝试为用户创建一个表单,以填写他们将在网站的 index.php 表单上宣传的产品。此页面将从元标记定义中每分钟刷新一次(如果您有实时验证和更新的解决方案,我将非常感激)。主要问题是无论何时发布表单,它都会在每次页面刷新后不断插入 MySQL 数据库,这就是我试图阻止的。谢谢,任何其他建议都将受到高度欢迎

 <html>

 <body>

 <form action='' method='POST' name=''>

 Name: <input type='text' name='name' value='' />

 Price: <input type='text' name='price' value='' />

 <input type='submit' name='submit' value='validate' />
 </form>

 <?php

 if (isset($_POST['submit'])){

 $name=$_POST['name'];
 $price=$_POST['price'];

 $sql="INSERT INTO tbl VALUES('','"$name"','"$price"')";

 // and so on
 }

 ?>


 </form>

 </body>
 </html>
4

2 回答 2

0

这可以通过会话或通过检查数据库中的重复条目来完成,但是,正如评论部分所述,重定向到另一个页面的解决方案可以作为快速修复服务,例如,如果查询成功

 $sql="INSERT INTO tbl VALUES('','"$name"','"$price"')";

 if($sql){
     header('Location: foo.php'); 
 }

并且,foo.php您可以编写以下内容

if($_SERVER['HTTP_REFERER']){
  $page = $_SERVER['HTTP_REFERER'];
  header("Location: $page");
  exit();
}

即使$_SERVER变量不是 100% 可靠,在这种方法中,每次在您的数据库中提交数据时,它都会重定向到另一个页面,因此它会按照您的意愿工作。

于 2013-07-14T12:04:02.953 回答
0

它的发生是因为一旦$_POST['submit']提交然后每次刷新if (isset($_POST['submit']) 后将返回 true 并在每分钟后插入数据,因为您正在从元刷新该页面。

  1. 要么不使用该刷新,要么,
  2. header('Location: index.php');在之前添加?>
于 2013-07-14T12:15:58.300 回答