简体   繁体   English

错误消息未以php形式显示

[英]Error message not displayed in php form

If user leaves anything blank, my error messages do not display. 如果用户将任何内容留空,则不会显示我的错误消息。 It simply takes me to my action page where the input is blank. 它只是将我带到输入空白的操作页面。 Why don't my errors display? 为什么我的错误不显示? Thanks. 谢谢。

<p><span class="error">* required field.</span></p>
<form name="form2" method="post" action="favorites.php"> 
Name: <input type="text" name="name" value="<?php echo $name;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
Favorite Season:
<input type="radio" name="season" value="winter">Winter
<input type="radio" name="season" value="spring">Spring
<input type="radio" name="season" value="summer" checked>Summer
<input type="radio" name="season" value="fall">Fall
<span class="error">* <?php echo $seasonErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>

Your name is: <?php echo $_POST["name"]; ?><br>
Your favorite season is: <?php echo $_POST["season"]; ?><br>
<?php
$nameErr =  $seasonErr = "";
$name =  $season  = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}

if (empty($_POST["season"])) {
$seasonErr = "Season is required";
} else {
$season = test_input($_POST["season"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

The reason being is, that you have your PHP below your form. 原因是,您的PHP位于表格下方。 Place it above your HTML form. 将其放在HTML表单上方。

Sidenote: This answers the question and does not cover the fact that you should be getting undefined index notices on initial page load, depending on how your server's error reporting level is setup. 旁注:这回答了这个问题,但并未涵盖您在初始页面加载时应该获得未定义索引通知的事实,具体取决于服务器错误报告级别的设置方式。

<?php
$nameErr =  $seasonErr = "";
$name =  $season  = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}

if (empty($_POST["season"])) {
$seasonErr = "Season is required";
} else {
$season = test_input($_POST["season"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

<p><span class="error">* required field.</span></p>
<form name="form2" method="post" action="favorites.php"> 
Name: <input type="text" name="name" value="<?php echo $name;?>">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
Favorite Season:
<input type="radio" name="season" value="winter">Winter
<input type="radio" name="season" value="spring">Spring
<input type="radio" name="season" value="summer" checked>Summer
<input type="radio" name="season" value="fall">Fall
<span class="error">* <?php echo $seasonErr;?></span>
<br><br>
<input type="submit" name="submit" value="Submit">
</form>

Your name is: <?php echo $_POST["name"]; ?><br>
Your favorite season is: <?php echo $_POST["season"]; ?><br>

  • So, it's best to check if anything is set/not empty. 因此,最好检查是否设置了任何内容/不为空。

References: 参考文献:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM