试图反馈页面

时间:2016-12-05 21:40:54

标签: php html mysql

我正在制作反馈页面,但它产生了一些错误。 我不明白出了什么问题。请帮我弄清楚我做错了什么。 当我提交表单时,错误消失并产生正确的结果,但是当我刷新页面时,它再次产生相同的错误

<?php
$name = $_POST['name'];       // error undefined index name
$suggestion = $_POST['suggest'];  // error undefined index suggest
$opinion = $_POST['opinion']; // error undefined index opinion
$submit = $_POST['submit']; // error undefined index submit

if(isset($submit)){
    $sql= mysqli_query($con,"insert into feedback (name,suggestion,opinion) values ('$name','$suggestion','$opinion')");
    if($sql==true){?>
        <div class="alert alert-info">
       Thankyou for your suggestions. we will notify the admins.
</div>
<?php
    }

}


?>
<body>
<div class="feedback">

<form action="feedback.php" method="post"> 
<h1> Help us improve our website</h1>
<h2>Please drop your suggestion below</h2>

  <div class="form-group">
    <label >Your Name:</label>
    <input type="text" class="form-control" name="name" required>
  </div>
  <div class="form-group">
    <label for="comment">Your suggestion</label>
  <textarea class="form-control" name="suggest" rows="5" id="comment" required ></textarea>
  </div>
    <p>Were you satisfy with this website?</p>
   <label class="checkbox-inline">
      <input type="checkbox" name="opinion"value="1"> yes
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" name="opinion" value="2"> no
    </label>
    <label class="checkbox-inline">
      <input type="checkbox" name="opinion" value="3"> may be
    </label>
    <br /><br />
  <button type="submit" name="submit" class="btn btn-primary">Submit</button>

</form>


</div>
</body>

3 个答案:

答案 0 :(得分:0)

最初渲染页面时,它无法找到$ _POST数组的索引(即值)(名称,建议等)。这是因为在您提交表单之前没有$ _POST数据。提交表单时,$ _POST包含数据,包括那些索引,因此它能够成功呈现页面。

您应该检查变量是否已设置。这些方面的东西会做到这一点:

if (isset($_POST["name"]) {
    $name = $_POST["name"];
}

您可以为每个变量执行此操作。

我还建议在提交条件中包含该内容,因为只有在提交表单时才应检查该数据。

此外,您应该考虑使用预准备语句或输入清理,因为您正在使用mysqli查询设置SQL注入。

答案 1 :(得分:-1)

这是因为通过 post 方法传递的参数仅与特定页面请求相关。当您刷新页面时,浏览器通常会询问您是否要再次发送表单,否则请求将在没有其他数据的情况下发送。

答案 2 :(得分:-1)

您的问题正是错误所指出的,当您首次加载页面时,您的$ _POST数组为空,并且当您对表单进行POSTED时它不为空(因此您不会收到错误)。

替换你的变量声明如下,以确保在$ _POST数组为空时正确声明它们:

$name = isset($_POST['name']) ? $_POST['name'] : "";      
$suggestion = isset($_POST['suggest']) ? $_POST['suggest'] : ""; 
$opinion = isset($_POST['opinion']) ? $_POST['opinion'] : ""; 
$submit = isset($_POST['submit']) ? $_POST['submit'] : "";

if(isset($submit) && $submit != ""){
  // your insert code here
}