如果提交另一个表单,为什么php在一个表单中输入空值或重复值

时间:2013-12-01 08:39:20

标签: php mysql forms

我遇到了一个奇怪的现象:当我在我的代码中提交表单时,除了执行该表单中的表单之外,它看起来也会触发注释表单。因此,当页面重新加载时,我会收到一些空白评论或重复评论。在我的代码中,我有几个带提交的表单,其中一个是输入注释的表单:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<input type="hidden" name="a" value="<?php echo $_GET['id'] ?>">
<input type="hidden" name="b" value="<?php echo $_SERVER['REMOTE_ADDR'] ?>">
<input type="text" name="c" value="Name"><br>

<textarea name="d">
</textarea>
<input type="submit" />
</form>

你们有没有人能指出我哪里出错了?

根据要求,我在这里发布了整个(更新的)代码:

<h3>Comments</h3>
<!-- <p>Put your comments here: </p> -->

<?php 
//a: commenters
$i  = addslashes($_POST['a']);
$ip = addslashes($_POST['b']);
$a  = addslashes($_POST['c']);
$b  = addslashes($_POST['d']);

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

if(isset($i) & isset($ip) & isset($a) & isset($b))
{
    $connector= new DbConnector();
    $r = mysql_query("SELECT COUNT(*) FROM `databasename`.`ban` WHERE ip=$ip"); //Check if banned
    $r = mysql_fetch_array($r);
    if(!$r[0]) //Phew, not banned
    {  // echo "a: ".$a." b: ".$b." ip: ".$ip." i: ".$i."";
            $Date4=date('Y-m-d H:i:s');
        if(mysql_query("INSERT INTO `databasename`.`Comments` VALUES ('$a', '$b', '$ip', '$Date4')"))
        {
            ?>
            <script type="text/javascript">
                window.location="/index.php?id=".<?php echo $i; ?>;
            </script>
            <?php
        }
        else echo "Error, in mysql query";  
    }
    else echo "Error, You are banned.";
}

}
$x = mysql_query("SELECT * FROM `databasename`.`Comments` ORDER BY i DESC ");
while($r = mysql_fetch_object($x)) echo "<div class='c'>".$r->a."<p>".$r->b."</p> </div>";


?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

    <input type="hidden" name="a" value="<?php echo $_GET['id'] ?>">
    <input type="hidden" name="b" value="<?php echo $_SERVER['REMOTE_ADDR'] ?>">
    <input type="text" name="c" value="Name"><br>

    <textarea name="d">
    </textarea>
    <input type="submit" name="form1"  />
</form>

2 个答案:

答案 0 :(得分:0)

您需要使用isset()

在HTML提交按钮中,您需要为每个表单使用name属性,

<input type="submit" name="form1" />

在PHP中,

 <?php 

    if(isset($_POST['form1']){
          echo $_POST['a'];
    }

 ?>

您的代码,

   <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

   <input type="hidden" name="a" value="<?php echo $_GET['id']; ?>">
   <input type="hidden" name="b" value="<?php echo $_SERVER['REMOTE_ADDR']; ?>">
   <input type="text" name="c" value="Name"><br>

   <textarea name="d"></textarea>
   <input type="submit" name="form1"  />
   </form>

答案 1 :(得分:0)

我会用:

 if(!empty($_POST['form1']){
          echo $_POST['a'];
    }
如果变量是空字符串,false,array(),NULL,“0?,0和未设置的变量”,

empty()将返回true。

了解详情:http://www.virendrachandak.com/techtalk/php-isset-vs-empty-vs-is_null/