Проверка формы в сообщении об ошибке и успехе отображается одновременно

Я изучаю кодирование и создал простую форму, где сообщения об ошибках
отображается чуть ниже каждого поля ввода. Тем не менее, когда я проверяю форму
сообщение об успехе появляется одновременно с сообщениями об ошибках
отображения, когда все поля введены правильно и сформировать
подтверждено. Не могли бы вы помочь. Спасибо заранее. Вот мой
код.

</php>

$errorMessage = "";
$successMessage = "";
$emailError = "";
$emailconfirmError = "";
$nameError = "";
$messageError = "";
$servicesError = "";


$name = $email = $emailConfirm = $services = $message = "";

$email = isset($_POST['email']) ? $_POST['email'] : '';
$emailConfirm = isset($_POST['emailConfirm']) ? $_POST['emailConfirm'] : '';


if ($_POST) {

if (!$_POST['email']) {

$emailError .="The email is required";

}

if (!$_POST['emailConfirm']) {

$emailconfirmError .="Please confirm your email <br>";

}
if ($_POST['emailConfirm'] && $email != $emailConfirm) {

$emailconfirmError .="The email addresses do not match <br>";
}

if (!$_POST['name']) {

$nameError .="The name field is required <br>";

}

if (!$_POST['services'])  {

$servicesError .="Please select a service required <br>";

}

if (!$_POST['message']) {

$messageError .="The message field is required <br>";

}


if ($_POST['email'] && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {

$emailError .= "The email address is invalid.<br>";

}

if ($name = $email = $emailConfirm = $services = $message != "") {

echo $emailError;
echo $emailconfirmError;
echo $name;
echo $services;
echo $message;

}else {

$emailTo = "kamala_guliyeva@hotmail.com";

$services = $_POST['services'];

$message = $_POST['message'];

$headers = "From: ".$_POST['email'];



if (mail($emailTo, $services, $message, $headers)) {

$successMessage = '<div class="alert alert-success" role="alert">Thank you for your message. We\'ll get back to you ASAP!</div>';


} else {

$errorMessage = '<div class="alert alert-danger" role="alert"><p>Your message couldn\'t be sent - please try again</div>';

}
}
}

и HTML

<div id="quote">
<div class="container">
<h2 class="section-title">Request a Quote</h2>
<hr align="left" width="8%" class="style-one">
<br>
<div><? echo $errorMessage.$successMessage; ?></div>
<form id="quoteForm" method="post">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="email" class="form-control" style="height:60px" id="email" name="email" placeholder="Your email">
<label class="error" id="emailError"><?php echo $emailError; ?></label>
</div>

<div class="form-group">
<input type="email" class="form-control" style="height:60px" id="emailConfirm" name="emailConfirm" placeholder="Re-type your email">
<label class="error" for="e-mailConfirm" id="emailconfirmError"><?php echo $emailconfirmError; ?></label>
</div>

<div class="form-group">
<input type="name" class="form-control" id="name" style="height:60px" name="name" placeholder="Your Name">
<label class="error" for="name" id="nameError"><?php echo $nameError; ?></label>
</div>

</div>

<div class="col-md-6">
<div class="form-group">
<select class="form-control" id="services" name="services" style="height:60px">
<option value="">Select Services</option>
<option value="Installation">Installation</option>
<option value="Repair">Repair</option>
<option value="Service and Maintenance">Service and Maintenance</option>
</select>
<label class="error" for="services" id="servicesError"><?php echo $servicesError; ?></label>
</div>
<div class="form-group">
<textarea class="form-control" id="message" name="message" placeholder="Message" style="height: 163px;" cols="35"></textarea>
<label class="error" for="message" id="messageError"><?php echo $messageError; ?></label>
</div>
</div>
</div>

<div class="form-row text-center">
<div class="col-12">
<button type="submit" style="width:10rem" class="btn quoteButton pt-3 pb-3 text-align-center">Get a Quote</button>
</div>
</div>

</form>

</div>
</div>

0

Решение

У тебя там несколько проблем …

Итак, во-первых, как вы делаете свои чеки.

if(!$_POST) {

недопустимый способ проверить, что сообщение произошло, вам нужно сделать что-то вроде

if(isset($_POST) && !empty($_POST)) {

было бы более уместно, так как вы проверяете, установлен ли массив POST на самом деле, а затем, что он не пустой && operator — оператор короткого замыкания, поэтому, если какое-либо условие не выполнено, проверка не будет выполнена.

Точно так же в ваших сравнениях говорится, что if (! $ _ POST [’email’]) {недопустимо, потому что вы фактически спрашиваете, «является ли часть почтового массива post неверной», где вы должны спрашивать, «если это не пустой и является действующим адресом электронной почты

Вы должны знать о разнице между операторами = == и ===. Вы можете найти больше информации здесь: 3 разных равных

А также функция filter_var здесь: http://php.net/manual/en/function.filter-var.php

if($_POST['email']!=="" && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
//all good
} else {
//set your error message
}

Вы можете использовать регулярные выражения для проверки ‘name’, смотрите preg_match в руководстве http://php.net/manual/en/function.preg-match.php

Помимо всего этого, если вы хотите отслеживать в реальном времени поля, сообщения об ошибках и т. Д., Вам нужно будет рассмотреть возможность включения Javascript и использования AJAX для связи с вашим сценарием, а затем проанализировать ответ обратно в соответствующий раздел. ,

Взгляните на 30-секундный учебник по AJAX Rasmus, который даст вам отправную точку для этого http://rajshekhar.net/blog/archives/85-Rasmus-30-second-AJAX-Tutorial.html

Однако рекомендуется проводить валидацию как на стороне клиента, так и на стороне сервера, надеясь, что это поможет, даже если это не полный ответ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector