在没有多次插入的情况下在php中验证表单

时间:2013-07-14 11:55:28

标签: php html

这是代码。我正在尝试为用户创建一个表单,以填写他们将在网站的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>

2 个答案:

答案 0 :(得分:0)

这可以通过会话或通过检查数据库中的重复条目来完成,但是,如评论部分所述,对另一个页面的重新直接解决方案可以作为快速修复服务器,如果查询成功< / p>

 $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%可靠,但在这种方法中,每次在数据库中提交数据时,它都会重定向到另一个页面,因此它将按您的意愿运行。

答案 1 :(得分:0)

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

  1. 要么不使用刷新,要么
  2. header('Location: index.php');
  3. 之前添加?>