Статьи

Валідація, форматування і перевірка домену по WHOIS за допомогою php

Для одного зі своїх проектів мені треба було виконувати валідацію домену з подальшою перевіркою по WHOIS, але була ще одна тонкість - треба було визначати ще доменну зону, в разі однієї доменної зони - звертатися до одного провайдера WHOIS, у випадку з іншого - до іншого ( мова йде про Байнет)

Для одного зі своїх проектів мені треба було виконувати валідацію домену з подальшою перевіркою по WHOIS, але була ще одна тонкість - треба було визначати ще доменну зону, в разі однієї доменної зони - звертатися до одного провайдера WHOIS, у випадку з іншого - до іншого ( мова йде про Байнет).

Сервіси які я вирішив використовувати для виконання перевірки доменів:

  • cctld.by для білоруських доменів
  • freewhois.us для всіх інших доменів

Рішення потрібно було на php і звичайно ж, не без регулярних виразів.

Писати будемо відразу тестовий скрипт.

На першому етапі давайте визначимося, що це буде функція, а передавати ми будемо параметр «domain».

<? Php $ domain = trim ($ _ GET [ 'domain']); if (isset ($ domain)) {. . . }?>

На другому кроці додаємо функцію, яка буде відповідати за виконання всіх перевірок з переданим в запиті доменом:

<? Php $ domain = domainCheck (trim ($ _ GET [ 'domain'])); if (isset ($ domain)) {function domainCheck ($ domain) {$ detect_zone = preg_match ( "/.+ \. (\ w {2,5}) /", $ domain, $ zoneMatch); $ Validate_domain = preg_match ( "/ ([a-z0-9 \ -] + \. [Az] {2,6}) $ / i", strtolower ($ domain), $ match); }}?>

Змінна $ detect_zone відповідає за визначення доменної зони (прим .: BY або всі інші) для того, щоб правильно визначити оператора WHOIS до якого ми надалі будемо звертатися.

$ Validate_domain - виконує перевірку і віддає нам домен другого рівня навіть в тому випадку, якщо ви захочете виконати перевірку доменів третього рівня (саб-доменів) або вище. Це потрібно для того, щоб коректно відправити whois запит. Така практика стосовно не у всіх випадках, тому як, домен можна реєструвати наприклад третього рівня - site.co.uk, але в моєму випадку такий підхід підходив якнайкраще.

Далі, ми будемо використовувати php cURL для відправки запитів і регулярні вирази для отримання потрібної інформації з відповідей:

<? Php $ domain = domainCheck (trim ($ _ GET [ 'domain'])); if (isset ($ domain)) {function domainCheck ($ domain) {$ detect_zone = preg_match ( "/.+ \. (\ w {2,5}) /", $ domain, $ zoneMatch); $ Validate_domain = preg_match ( "/ ([a-z0-9 \ -] + \. [Az] {2,6}) $ / i", strtolower ($ domain), $ match); if ($ zoneMatch [1] == 'by' || $ zoneMatch == 'бел') {$ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, "http://cctld.by/check/?domain=". $ match [1]); curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); $ Lookup = curl_exec ($ ch); curl_close ($ ch); $ Get_mail = preg_match ( "/ (\ D + [- a-z0-9] + \ @. +? \. \ W {2,5}) /", $ lookup, $ emailMatch); $ Phone_match = preg_match ( "/ \> (\ + \ d {12}) /", $ lookup, $ phoneMatch); $ Data = $ emailMatch [1]. ";". $ PhoneMatch [1]; } Else {$ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, "http://www.freewhois.us/index.php?query=". $ match [1]. "& submit = Whois"); curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); $ Lookup = curl_exec ($ ch); curl_close ($ ch); $ Get_mail = preg_match ( "/ ([- a-z0-9] + \ @. +? \. \ W {2,5}) /", $ lookup, $ emailMatch); $ Phone_match = preg_match ( "/.+ (\ + \ d {3} \. \ D +) /", $ lookup, $ phoneMatch); $ Data = $ emailMatch [1]. ";". $ PhoneMatch [1]; } $ Error = 'none'; if ($ emailMatch [1] && $ phoneMatch [1]) {return $ data; } Else {return $ error; }}}}?>

Використовуємо просте умова, яке при визначенні доменній зоні буде виконувати потрібний нам сценарій.

У разі, якщо наш домен збігається з .BY або .БЕЛ, значить ми будемо звертатися до cctld.by, в інших випадках відповідно - буде використовуватися другий сервіс.

$ Get_mail = preg_match ( "/ (\ D + [- a-z0-9] + \ @. +? \. \ W {2,5}) /", $ lookup, $ emailMatch);

Змінна $ get_mail допомагає нам отримати електронну адресу власника домену, а змінна $ phone_match - забирає в свою чергу номер телефону. Так як розмітка сторінки в операторів whois відрізняється, регулярні вирази підлаштовуються індивідуально.

$ Phone_match = preg_match ( "/ \> (\ + \ d {12}) /", $ lookup, $ phoneMatch);

У разі, якщо домену немає або якоїсь інформації бракує - створюємо змінну $ error і віддаємо її.

$ Validate_domain = preg_match ( "/ ([a-z0-9 \ -] + \. [Az] {2,6}) $ / i", strtolower ($ domain), $ match);

При виконанні перевірки регулярним виразом, нам важливо, щоб домен був з маленької літери, для цього використовуємо функцію strtolower (), тому як перевірка whois у багатьох сервісів виконується тільки з доменами в нижньому регістрі.

Може бути цікаво:

Lt;?
By/check/?
Php?
PhoneMatch [1]; } $ Error = 'none'; if ($ emailMatch [1] && $ phoneMatch [1]) {return $ data; } Else {return $ error; }}}}?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал

Как оформить диск малыш от рождения до года из фото и видео
Оформить диск "Малыш от рождения до года" из фото и видео можно совершенно разными способами! Кто-то для достижения данной цели идет на шоу-таланты, кто-то пользуется услугами профессионалов, а кто-то