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