Проверка в форме PHP и сохранение в файл

   if($_POST){$errors = array();//start validation
if(empty($_POST['email'])){
$errors['email1'] = "Your Email Cannot be empty";
}

if (!filter_var(['email'], FILTER_VALIDATE_EMAIL)){
$errors['email2'] = "Email not valid!";
}if(empty($_POST['phone'])){
$errors['phone1'] = "Your Number Cannot be empty";
}
if(strlen($_POST['phone']) < 8){
$errors['phone2'] = "Your Phone Number must be at least 8 characters long";
}

if(strlen($_POST['phone']) > 8){
$errors['phone3'] = "Your Phone Number must be not more than 8 characters long";
}

//check errors
if(count($errors) == 0)
{
//redirect to home page
header("Location: index.php");
exit();
}
}

Это мой код, который необходимо проверить. Проверка работает нормально, но здесь есть проблема.

<div class="form-group">
<label for="name">Email</label>
<input type="email" class ="form-control" name="email" id="email" placeholder="Enter Email">
<p><?php if(isset($errors['email1'])) echo $errors['email1'];?></p>
<p><?php if(isset($errors['email2'])) echo $errors['email12'];?></p>
</div>

<div class="form-group">
<label for="phone">Phone Number</label>
<input type="text" class ="form-control" name="phone" id="phone" placeholder="Enter Phone Number">
<p><?php if(isset($errors['phone1'])) echo $errors['phone1'];?></p>
<p><?php if(isset($errors['phone2'])) echo $errors['phone2'];?></p>
<p><?php if(isset($errors['phone3'])) echo $errors['phone3'];?></p>
</div>

У меня есть форма для сохранения в файл. Входные данные будут проверены, и сообщения об ошибках будут отображены, но форма с неправильными входными данными все равно будет сохранена в файл. Любая помощь будет оценена спасибо.

<?php
if(isset($_POST['email'])  && isset($_POST['phone'])  && isset($_POST['enquiry'])){

$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];

$file = "form.txt";$save = "Email: ".$email."\n".
"Phone: ".$phone."\n".
"Comment: ".$enquiry."\n";

file_put_contents($file,$save, FILE_APPEND);
}
?>

-2

Решение

Исходя из вашего комментария, вы хотите, чтобы ТОЛЬКО ДЕЙСТВИТЕЛЬНЫЕ данные поступали в файл.

Но ваша проверка PHP ищет, установлены ли ЛЮБЫЕ значения, здесь:

if(isset($_POST['email'])  && isset($_POST['phone'])  && isset($_POST['enquiry'])) {

Если вы измените это, чтобы убедиться, что присутствуют ТОЛЬКО действительные данные, то все будет в порядке. Добавление простого && count($errors) == 0 мог бы это сделать (если я понимаю структуру ваших файлов).

Так что просто замените эту строку выше на это:

if(isset($_POST['email'])  && isset($_POST['phone'])  && isset($_POST['enquiry']) && count($errors) == 0) {

Итак, ваш файл будет выглядеть примерно так:

    ....PHP code above here....

//check errors
if(count($errors) == 0)
{
if(isset($_POST['email'])  && isset($_POST['phone'])  && isset($_POST['enquiry'])){

$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];

$file = "form.txt";

$save = "Email: ".$email."\n".
"Phone: ".$phone."\n".
"Comment: ".$enquiry."\n";

file_put_contents($file,$save, FILE_APPEND);
}

//redirect to home page
header("Location: index.php");
exit();
} // end count($errors) == 0 check
} // end if($_POST) check
?>

<div class="form-group">
<label for="name">Email</label>
<input type="email" class ="form-control" name="email" id="email" placeholder="Enter Email">
<p><?php if(isset($errors['email1'])) echo $errors['email1'];?></p>
<p><?php if(isset($errors['email2'])) echo $errors['email12'];?></p>
</div>

....HTML code continues here....
0

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

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

По вопросам рекламы [email protected]