php проверка номера телефона на валидность
Валидация полей формы на PHP
Привет, друг. Помимо того, что можно делать проверки полей формы на JavaScript, необходимо так же делать валидацию на стороне сервера и сейчас мы с вами рассмотрим пример валидации на PHP. Проверять будет такие поля, как номер телефона, email, IP адрес, адрес сайта и др. Всего полей будет 7.
Принцип действия такой: Мы делаем проверку для поля через специальные условия и если данные, введенные в это поле не проходят валидацию то под этим полем будем выводить сообщение об ошибке. И так под каждым полем. В случае, когда будут провалидированы все поля, мы отправляем форму с ее очисткой и выводим сообщение об успешной отправке. Саму форму можно посмотреть на демо странице:
Форму я сделал на Bootstrap и выглядит она так:
С 1 по 7 стр. | Функция очистки данных |
С 9 по 15 стр. | Принимаем данные из формы прогоняя их через функцию |
17 стр. | Регулярное выражение для номера телефона в формате РФ |
19 стр. | Регулярное выражение для имени (только рус.) |
20 стр. | Определяем переменную, как массив ошибок |
21 стр. | Специальный флаг. Присвоим ему значение — 0 |
23 стр. | Проверка, если данные пришли методом POST |
С 24 по 27 стр. | Проверка на соответствие регулярному выражению ($name) |
С 28 по 31 стр. | Если поле пустое или больше 10 символов — выводим ошибку |
С 32 по 35 стр. | Фильтр проверки данных на целое число и длину строки | 36 стр. | Проверка поля на пустоту (в коде повторяется) |
С 40 по 43 стр. | Проверка на соответствие регулярному выражению ($phone) |
С 48 по 51 стр. | Фильтр валидации Email |
С 56 по 59 стр. | Фильтр валидации IP |
С 64 по 67 стр. | Фильтр валидации URL |
С 76 по 78 стр. | Если валидация пройдена |
Если валидация всех полей будет пройдена, об этом нам скажет специальный флаг, которому мы в начале установили ноль, то перезагрузим страницу с очисткой формы и добавим к адресу GET-параметр mes и присвоим ему значение success. То есть если 0 — валидация пройдена, если 1 — есть ошибки. И в самом конце с 80 по 82 стр. проверяем, если такой параметр существует, то выводим сообщение об успешной отправке данных. Это один из примеров валидации на PHP и он не единственный верный, но как рабочий вариант вполне пригоден для использования. Через JS и Ajax валидация будет немного по-другому реализована, но общий принцип останется таким же.
Надеюсь, что теперь у вас не возникнет трудностей с валидацией форм на PHP. Пишите ваши комментрии по данной теме.
Читайте также:
День добрый!
А как сделать отправку на сервер кода каждой нажатой клавиши, сразу после её нажатия. Обработка будет проходить на сервере.
Через JS получить код клавиш и отправить методом Ajax.
Валидация телефонов
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Поиск по базе номеров телефонов
Есть база номеров телефонов, нужно узнать владельца каждого номера телефона через Facebook (если он.
Валидация в админке
Вопрос простой: Нужна ли вообще валидация полей форм в админке? с одной стороны логика.
Валидация строки
Подскажите почему при валидации строки при вводе 0, он определяет её как буквенную а не численную.
Валидация Email
Ребят помогите пожалуйста. При регистрации хочу чтобы обязательно вводились email адреса таким.
Lazy_Den, Спасибо огромное)) но вот как сделать чтобы не было ограничения по вводу цифр? имеется ввиду что от 11 до 20) можно так? если да то как, напишите пожалуйста?
Добавлено через 1 минуту
Lazy_Den, кстати, ваша валидация не действует почему((
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Валидация телефона
Скажите илз как програмно определить правелен ли номер телефона! Ну код телефона можно из GeoIP.
Валидация формы
Здравствуйте. Как сделать чтобы атрибуты html 5 например, такие как «минимальное количество.
Валидация ссылок
Здравствуйте! Помогите мне пожалуйста. Как обезопасить сайт при вставке ссылки, ну, допустим в.
Проверка данных регулярными выражениями в PHP
Содержание:
Сборник основных шаблонов регулярных выражений на PHP для проверки данных.
Проверка набора из латинских букв и цифр
Регулярное выражение для проверки набора только из латинских букв и цифр:
Если необходимо добавить в набор некоторые символы:
Проверка на кириллицу и цифры
Регулярное выражение для проверки набора только из букв кириллицы и цифр:
Проверка на число
Регулярное выражение для проверки данных на целое число:
Регулярное выражение для проверки данных на тип Float (числа с плавающей точкой):
Проверка логина
Регулярное выражение для проверки логина. Разрешено использовать только латинские буквы, цифры, тире и знак подчёркивания. Длина логина от 2 до 20 символов (включительно):
Проверка Email
Регулярное выражение для проверки Email:
Проверка номера телефона
Регулярное выражение для проверки номера телефона:
Проверка даты по формату
Формат MySQL YYYY-MM-DD :
Проверка md5-хэша
Регулярное выражение для проверки на корректность md5-хэша:
Проверка IP адресов
Регулярное выражение для проверки IPv4 адреса:
Проверка IPv6 адреса:
Проверка доменного имени
Регулярное выражение для проверки на корректность доменного имени сайта:
Подтверждение номера телефона по SMS
Широкое распространение на сайтах коммерческой тематики получили формы обратной связи типа «Заказать звонок». Пользователю сайта предлагается форма с полями: имя и телефон. Заполнив данные, пользователь ждет звонка на указанный номер телефона. А что если пользователь указал не свой телефон?
Или другая ситуация: пользователь сайта забыл свой пароль от учетной записи и в качестве альтернативы желает получить новый пароль на свой номер телефона (указанный в учетной записи). Естественно, он должен знать свой номер телефона и иметь его под рукой, так как SMS придет лишь на прикрепленный телефон.
Подобных ситуаций в современных интернет-реалиях множество, если вы администратор сайта, имеющий дело с учетными записями пользователей, Вам наверняка будет полезной такая функция как подтверждение номера (валидация) мобильного телефона по SMS.
Верификация телефона по SMS
Проверить принадлежность номера телефона пользователю достаточно просто: на номер телефона высылается одноразовый код в SMS сообщении с последующим подтверждением кода на сайте.
Форма для подтверждения телефона по SMS (которую мы сегодня сделаем собственноручно) выглядит примерно следующим образом:
Форма для верификации телефона по одноразовому SMS
Принцип работы
Данный скрипт не является «готовым продуктом», он лишь иллюстрирует механизм верификации телефона по SMS и потребует от Вас его адаптации под конкретные нужды.
Использование SMS шлюза
После регистрации, в личном кабинете в меню найдите «Программистам», в этой вкладке найдете Ваш api_id. Он вам понадобится далее.
HTML форма валидации телефона
Создадим HTML форму для валидации телефона пользователя: модальное окно, поля для ввода и проверки данных (примерный вид как на скрине выше). Для этого создадим файл index.php c содержимым:
В этом файле обратим внимание на последние строчки, где указывается маска для ввода телефона. Для Украины: +38 (099) 999-99-99 для России: +7 (999) 999-99-99
И создадим файл со стилями CSS под названием «style.css» (положим его рядом с index.php)
Обработчик подтверждения номера телефона по SMS вынесем в отдельный файл «act.php«. Его содержимое:
В обработчике формы обратите внимание на конфигурацию параметров в первых строках: необходимо указать:
В коде обработчика, в случае успешной валидации телефона, изменяете код под свои нужды.
Специализируюсь на безопасности сайтов: защищаю сайты от атак и взломов, занимаюсь лечением вирусов на сайтах и профилактикой.
Наверняка у Вас есть вопросы, просьбы или пожелания. Не стесняйтесь спросить, я отвечаю всегда быстро.
Регулярное выражение для получения номера телефона
Номер может принимать вид не только как написано выше, но и есть варианты
Как составить регулярное выражение, чтобы вытягивался только номер, а остальное не учитывалось. В идеале нужно приводить номер к единообразию но пока это не выйдет. Обрезкой не выйдет т.к. начало номера может быть разное (окончание по знаку Отслеживать
3 ответа 3
Вам следует разделить вытаскивание номера и его форматирование. Конечно, всё можно сделать и одной регуляркой, но это решение не будет выглядеть чисто.
Теперь этот номер надо отформатировать. Обычно номера телефонов приводят к числовому значению, поэтому лучше всего просто удалить лишние символы из номера с помощью функции str_replace() :
Если будете помещать номер телефона в базу данных, выбирайте какое-нибудь текстовое поле, иначе те номера, что начинаются с нуля, как верно подметил @Miron, в дальнейшем могут быть некорректно обработаны. Старайтесь работать с номером телефона как со строкой, а не как с числом.
Чтобы приводить номер к единому образу следует пользоваться библиотеками для форматирования. Например, популярной библиотекой libphonenumber :
Предлагаю автору вопроса, все же для начала привести базу номеров телефонов к единому виду, чтобы не хранить в БД некорректные номера. Если номера телефонов могут быть из разных стран, нужно обязательно хранить код страны отдельно от самого номера и кода оператора/города. Иначе могут возникнуть проблемы.
Никогда не храните номера телефонов, в виде числа. Связано это с тем, что если номер телефона будет начинаться с нуля(ей) при приведении его к типу int вы навсегда потеряете ведущие нули. Номера телефонов нужно хранить исключительно в виде строки (string).