@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);
    }
});
 
 
 
}
  • Вопрос задан
  • 78 просмотров
Решения вопроса 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();
}

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

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

Войти через центр авторизации
Похожие вопросы
от 99 000 до 100 000 руб.
R52.RU Нижний Новгород
от 30 000 до 50 000 руб.
Лучшие люди Иваново
от 40 000 до 90 000 руб.
14 окт. 2019, в 18:11
2000 руб./за проект
14 окт. 2019, в 18:10
5000 руб./за проект
14 окт. 2019, в 18:04
3500 руб./за проект