Я новичок в php, и я хотел внедрить некоторую проверку php-формы на сайт, над которым я работал. Ранее я использовал javascript для проверки содержимого формы, но я слышал, что php — лучший способ сделать это.
Я попытался внедрить некоторый php на свой веб-сайт, чтобы поля были проверены, однако я думаю, что должен что-то делать неправильно, так как в настоящее время ничего не работает так, как должно.
Вот код php, с которым я сейчас работаю:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Missing";
}
else {
$name = $_POST["name"];
}
if (empty($_POST["tele"])) {
$teleErr = "Missing";
}
else {
$tele = $_POST["tele"];
}
if (empty($_POST["email"])) {
$emailErr = "Missing";
}
else {
$email = $_POST["email"];
}
if (empty($_POST["party"])) {
$partyErr = "You must select 1";
}
else {
$party = $_POST["party"];
}
if (!isset($_POST["hand"])) {
$handErr = "You must select 1 option";
}
else {
$hand = $_POST["hand"];
}
if (empty($_POST["reservation"])) {
$reservationErr = "Missing";
}
else {
$reservation = $_POST["reservation"];
}
if (empty($_POST["time"])) {
$timeErr = "You must select a time";
}
else {
$time = $_POST["time"];
}
}
?>
Вот HTML-форма, с которой я работаю:
<form method= "POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<p class="ex"><strong>Full Name:</strong>
<br>
<input type="text" name="name" value="<?php echo htmlspecialchars($name);?>">
<span class="error"><?php echo $nameErr;?></span>
<br><br>
<strong>Contact Telephone:</strong>
<br>
<input type="text" name="tele" placeholder="Telephone Number" id="tele""/>
<br><br>
<strong>Contact Email:</strong>
<br>
<input type="text" name="email" placeholder="[email protected]" id="email""/>
<!-- Party requirments -->
<br><br>
<strong>Select Party Size:</strong>
<br>
<select name="party" id="party">
<option value="">Please Select</option>
<option value="5">1 Person (£5)</option>
<option value="10">2 People (£10)</option>
<option value="15">3 People (£15)</option>
<option value="20">4 People (£20)</option>
<option value="25">5 People (£25)</option>
<option value="30">6 People (£30)</option>
<option value="35">7 People (£35)</option>
<option value="40">8 People (£40)</option>
<option value="45">9 People (£45)</option>
<option value="50">10+ People (£50)</option>
</select>
<br><br>
<strong>Dietary Requirements:</strong>
<br>
Vegetarian <input type="checkbox" name="diet[]" value="Vegetarian">
Vegan <input type="checkbox" name="diet[]" value="Vegan">
Peanut Allergy <input type="checkbox" name="diet[]" value="Peanut Allergy">
Gluten Allergy <input type="checkbox" name="diet[]" value="Gluten Allergy">
<br><br>
<strong> VIP Area? </strong>
<br>
Yes (+£5) <input name="hand" id="left" value="5" type="radio">
No <input name="hand" id="right" value="0" checked="" type="radio">
<br><br>
<strong> Reservation Date: </strong>
<br>
<input type="text" name="reservation" placeholder="DD/MM/YYYY" id="reservation">
<br><br>
<strong> Reservation Time </strong>
<br>
<select name="time" id="time" onblur="validateTime(name)">
<option value="">Please Select</option>
<option value="17:00">17:00</option>
<option value="17:30">17:30</option>
<option value="18:00">18:00</option>
<option value="18:30">18:30</option>
<option value="19:00">19:00</option>
<option value="19:30">19:30</option>
<option value="20:00">20:00</option>
<option value="20:30">20:30</option>
<option value="21:00">21:00</option>
<option value="21:30">21:30</option>
<option value="22:00">22:00</option>
</select>
<span id="timeError" class="timeError" style="display: none;">You must select a time for your reservation.</span>
<br><br>
<strong> Any Additional Information: </strong>
<br>
<textarea name="comments" placeholder="Birthday celebration arrangements, etc." rows="10" cols="50"></textarea>
<br><br><br>
<strong> Total booking cost based on party size & VIP selection: £<span id="price">0</span></strong>
<br><br><br>
<input type="submit" id="submit" name="submit" value="Submit">
<input type="reset" value="Reset form">
В идеале я хотел бы, чтобы эта форма проверяла введенные пользователем данные и отображала сообщение об ошибке, если они ввели неверную информацию в поле или оставили поле пустым. Любой, у кого есть какие-либо предложения, чтобы помочь мне достичь этого, пожалуйста, помогите, я усердно работал над этой задачей, но мне не повезло 🙁
Я бы посоветовал использовать ассоциативные массивы для ошибок, прямо сейчас вы генерируете много новых переменных, и это занимает очень много времени, чтобы написать код, который проходит через него эффективно.
Так что вместо $tele = $_POST["tele"];
используйте то есть: $f_err['tele'] = $_POST["tele"];
таким образом, вы можете легко проходить через ошибки, подсчитывать их и отображать в соответствующем поле формы. Откровенно говоря, ваш код прост и не видит никаких проблем с ним.
Можете ли вы объяснить, что не работает, как следует?
Я согласен с LukasS. Единственное, что я могу добавить, — это инициализировать переменные вне операторов if. Это обеспечит правильную настройку объема.