@i_ikigai

Как включить валидацию номера телефона в данном коде?

Не могу понять как интегрировать в код валидацию номера телефона, видел примеры с регулярным выражением но не понимаю как его вставить в данный код, кто то может подсказать как интегрировать это выражение в PHP код?
^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$

<form id ="contact-form" name="contact-form" action="mail.php" method="POST"  onsubmit="return validateForm()">
                    <div class="form-row font-weight-bolder">
                        <div class="col-md-6 md-form">
                            <input type="text" id="name" name="name" class="form-control" required>
                            <label for="name">Имя</label>
                        </div>
                        <div class="col-md-6 md-form">
                            <input type="text" id="phone" name="phone" class="form-control" required>
                            <label for="phone">Телефон</label>
                        </div>
                        <div class="col-md-6 md-form">
                          <input type="text" id="city" name="сity" class="form-control" required>
                          <label for="city">Введите населенный пункт</label>
                        </div>
                         <div class="col-md-6 md-form">
                          <input type="text" id="subject" name="subject" class="form-control" required>
                          <label for="subject">Объект оценки</label>
                        </div>
                        
                        
                    </div>
                    <div class="form-row">
                        <div class="col-md-6 md-form pb-2 font-weight-bolder">
                            <input type="text" id="email" name="email" class="form-control" required>
                            <label for="email">E-mail</label>
                        </div>
                    </div>
                    <div class="md-form amber-textarea active-amber-textarea-2 mt-0">
                        <textarea id="message" name="message" class="md-textarea form-control" rows="3" required></textarea>
                        <label>Напишите адрес и объект оценки</label>
                    </div>
                </form>
                <div class="center-on-small-only">
                  <a class="btn btn-primary" type="submit" onclick="validateForm()">Отправить</a>
                </div> <div class="status" id="status"></div>
            </div>


<?php
$name = $_POST['name'];
$phone = $_POST['phone'];
$city = $_POST['city'];
$subject = $_POST['subject'];
$email = $_POST['email'];
$message = $_POST['message'];
 
header('Content-Type: application/json');
if ($name === ''){
  print json_encode(array('message' => 'Введите имя', 'code' => 0));
  exit();
}
if ($phone === ''){
  print json_encode(array('message' => 'Введите телефон', 'code' => 0));
  exit();
 
}if ($city === ''){
  print json_encode(array('message' => 'Введите населенный пункт', 'code' => 0));
  exit();
}
 
if ($email === ''){
  print json_encode(array('message' => 'Введите почту', 'code' => 0));
  exit();
  }
  else {
  if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
  print json_encode(array('message' => 'Введите верный адрес почты', 'code' => 0));
  exit();
  }
}
if ($subject === ''){
  print json_encode(array('message' => 'Введите объект оценки', 'code' => 0));
  exit();
}
if ($message === ''){
  print json_encode(array('message' => 'Напишите подробный адрес и объект оценки', 'code' => 0));
  exit();
}
$content="Имя заказчика: $name \nТелефон заказчика: $phone \nРасположение заказчика: $city \nEmail заказчика: $email \nСообщение: $message";
$recipient = "mailmail@gmail.com";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $content, $mailheader) or die("Ошибка!");
print json_encode(array('message' => 'Ваше обращение отправлено, наши специалисты с вами свяжутся!', 'code' => 1));
exit();
?>


function validateForm() {
 
    document.getElementById('status').innerHTML = "Отправка...";
    formData = {
        'name'     : $('input[name=name]').val(),
        'phone'    : $('input[name=phone]').val(),
        'city'     : $('input[name=city]').val(),
        'subject'  : $('input[name=subject]').val(),
        'email'    : $('input[name=email]').val(),
        'message'  : $('textarea[name=message]').val()
    };
 
 
   $.ajax({
    url : "mail.php",
    type: "POST",
    data : formData,
    success: function(data, textStatus, jqXHR)
    {
 
        $('#status').text(data.message);
        if (data.code) //If mail was sent successfully, reset the form.
        $('#contact-form').closest('form').find("input[type=text], textarea").val("");
    },
    error: function (jqXHR, textStatus, errorThrown)
    {
        $('#status').text(jqXHR);
    }
});
 
 
 
}
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
@Nujabes37
:DEATH
Вот у тебя есть проверка на пустоту переданного значения теперь просто добавь еще одну.
if ($phone === ''){
  print json_encode(array('message' => 'Введите телефон', 'code' => 0));
  exit();
}

Получится так.
if ($phone === ''){
  print json_encode(array('message' => 'Введите телефон', 'code' => 0));
  exit();
}
if (!preg_match('/^((\+7|7|8)+([0-9]){10})$/', $phone)) {
  print json_encode(array('message' => 'Введенный номер телефона не валидный', 'code' => 0));
  exit();
}

Только это будет работать для российских номеров
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы