- Whois, как получить данные IP-адреса и домена в PHP
- Информация о IP
- Результат:
- Информация о домене
- Результат:
- Сервис для проверки IP и доменов
- How to get the current domain name using PHP
- Take your skills to the next level ⚡️
- About
- Search
- Tags
- Как в PHP получить URL? Получение текущей ссылки в PHP. Переменная $_SERVER
- Получение ссылки текущей страницы в PHP
- Получение полного URL в PHP
- Получение URL в PHP без GET-параметров
- Получение только параметров GET
Whois, как получить данные IP-адреса и домена в PHP
Несколько примеров как в PHP получить информацию о домене и IP-адресе.
Информация о IP
Получить информацию об IP-адресе можно с помощью сервиса WHOIS REST API, отправив запрос на http://rest.db.ripe.net/search?query-string= xxx.xxx.xxx.xxx
Ответ будет в формате XML.
$ip = '213.180.193.1'; $xml = simplexml_load_string(file_get_contents('http://rest.db.ripe.net/search?query-string=' . $ip)); $array = json_decode(json_encode($xml), TRUE); $data = array(); foreach ($array['objects'] as $row) < foreach ($row as $row2) < foreach ($row2['attributes'] as $row3) < foreach ($row3 as $row4) < $data[$row4['@attributes']['name']][] = $row4['@attributes']['value']; >> > > print_r($data);
Результат:
Array( [inetnum] => Array( [0] => 213.180.193.0 - 213.180.193.255 ) [netname] => Array( [0] => YANDEX-213-180-193 ) [status] => Array( [0] => ASSIGNED PA ) [country] => Array( [0] => RU ) [descr] => Array( [0] => Yandex enterprise network [1] => Yandex enterprise network ) [admin-c] => Array( [0] => YNDX1-RIPE [1] => PGR777-RIPE ) [tech-c] => Array( [0] => YNDX1-RIPE [1] => EM3673-RIPE [2] => AUR2-RIPE ) [remarks] => Array( [0] => INFRA-AW [1] => trouble: ------------------------------------------------------ [2] => trouble: Points of contact for Yandex LLC Network Operations [3] => trouble: ------------------------------------------------------ [4] => trouble: Routing and peering issues: noc@yandex.net [5] => trouble: SPAM issues: abuse@yandex.ru [6] => trouble: Network security issues: abuse@yandex.ru [7] => trouble: Mail issues: postmaster@yandex.ru [8] => trouble: General information: info@yandex.ru [9] => trouble: ------------------------------------------------------ ) [mnt-by] => Array( [0] => YANDEX-MNT [1] => YANDEX-MNT [2] => YANDEX-MNT ) [created] => Array( [0] => 2011-08-30T09:34:57Z [1] => 2002-06-07T05:35:50Z [2] => 2012-02-09T15:59:56Z ) [last-modified] => Array( [0] => 2014-03-26T08:38:45Z [1] => 2018-08-03T07:15:46Z [2] => 2012-02-09T15:59:56Z ) [source] => Array( [0] => RIPE [1] => RIPE [2] => RIPE ) [role] => Array( [0] => Yandex LLC Network Operations ) [address] => Array( [0] => Yandex LLC [1] => 16, Leo Tolstoy St. [2] => 119021 [3] => Moscow [4] => Russian Federation ) [phone] => Array( [0] => +7 495 739 7000 ) [fax-no] => Array( [0] => +7 495 739 7070 ) [nic-hdl] => Array( [0] => YNDX1-RIPE ) [abuse-mailbox] => Array( [0] => abuse@yandex.ru ) [route] => Array( [0] => 213.180.193.0/24 ) [origin] => Array( [0] => AS13238 ) )
Информация о домене
С доменами сложнее, т.к. нужно отправлять TCP запрос (43-й порт) на WHIOS-сервер в зависимости от зоны домена, полный список whois-серверов.
Основные зоны
Зона | Сервер |
---|---|
.ru, .su, .рф | whois.tcinet.ru |
.com, .net | whois.verisign-grs.net |
.org | whois.pir.org |
$server = 'whois.tcinet.ru'; $host = 'yandex.ru'; $socket = fsockopen($server, 43); if ($socket) < fputs($socket, $host . PHP_EOL); $text = ''; while (!feof($socket)) < $text .= fgets($socket, 128); >fclose($socket); echo $text; >
Результат:
% By submitting a query to RIPN's Whois Service % you agree to abide by the following terms of use: % http://www.ripn.net/about/servpol.html#3.2 (in Russian) % http://www.ripn.net/about/en/servpol.html#3.2 (in English). domain: YANDEX.RU nserver: ns1.yandex.ru. 213.180.193.1, 2a02:6b8::1 nserver: ns2.yandex.ru. 93.158.134.1, 2a02:6b8:0:1::1 nserver: ns9.z5h64q92x9.net. state: REGISTERED, DELEGATED, VERIFIED org: YANDEX, LLC. registrar: RU-CENTER-RU admin-contact: https://www.nic.ru/whois created: 1997-09-23T09:45:07Z paid-till: 2019-09-30T21:00:00Z free-date: 2019-11-01 source: TCI Last updated on 2019-04-10T13:26:32Z
Сервис для проверки IP и доменов
Есть хороший API сервис «ip-api», возвращает информацию о домене, IP-адресе + геолакацию. Не требует регистрации и ключей, ограничение 150 запросов в минуту с одного IP-адреса, но не для коммерческого использования.
$host = 'yandex.ru'; $json = file_get_contents('http://ip-api.com/json/' . $host . '?lang=ru'); $array = json_decode($json, TRUE); print_r($array);
Array ( [as] => AS13238 YANDEX LLC [city] => Москва [country] => Россия [countryCode] => RU [isp] => Yandex enterprise network [lat] => 55.734 [lon] => 37.5883 [org] => Yandex LLC [query] => 5.255.255.80 [region] => MOW [regionName] => Москва [status] => success [timezone] => Europe/Moscow [zip] => )
How to get the current domain name using PHP
The $_SERVER array is a global variable that contains server and header information.
To get the domain name where you run PHP code, you need to access the SERVER_NAME or HTTP_HOST index from the $_SERVER array.
Suppose your website has the URL of https://example.com/post/1 . Here’s how you get the domain name:
If you are using Apache server 2, you need to configure the directive UseCanonicalName to On and set the ServerName .
Otherwise, the ServerName value reflects the hostname supplied by the client, which can be spoofed.
Aside from the SERVER_NAME index, you can also get the domain name using HTTP_HOST like this:
The difference is that HTTP_HOST is controlled from the browser, while SERVER_NAME is controlled from the server.
If you need the domain name for business logic, you should use SERVER_NAME because it is more secure.
Finally, you can combine SERVER_NAME with HTTPS and REQUEST_URI indices to get your website’s complete URL.
See the code example below:
Now you’ve learned how to get the domain name of your website using PHP. Nice!
Take your skills to the next level ⚡️
I’m sending out an occasional email with the latest tutorials on programming, web development, and statistics. Drop your email in the box below and I’ll send new stuff straight into your inbox!
About
Hello! This website is dedicated to help you learn tech and data science skills with its step-by-step, beginner-friendly tutorials.
Learn statistics, JavaScript and other programming languages using clear examples written for people.
Search
Type the keyword below and hit enter
Tags
Click to see all tutorials tagged with:
Как в PHP получить URL? Получение текущей ссылки в PHP. Переменная $_SERVER
В этой статье будет рассказано о том, как в языке программирования PHP получить адрес текущей страницы. Также вы узнаете о работе переменной $_SERVER.
Первое, о чём следует сказать, — зачем вообще получать ссылки (urls) в PHP? На практике варианты могут различаться. Представьте, что у нас для разных разделов применяется один и тот же шаблон. И возникает потребность в том, чтобы вывести (либо не вывести — зависит от ситуации) какой-нибудь специальный блок, причём в других разделах вывод этого блока не нужен.
В большинстве случаев мы пожелаем выполнить поставленную задачу по условию. То есть сделаем условие, в котором будем выполнять проверку того либо иного раздела. Можно сказать, что с точки зрения архитектуры данное решение не является оптимальным. Но на практике нам нередко достаются уже реализованные проекты, с которыми необходимо что-то решать с учётом уже имеющейся архитектуры.
Но давайте не будем много говорить, а лучше приступим к решению поставленной задачи — получению ссылки в PHP.
Получение ссылки текущей страницы в PHP
Для получения данных нужно обратиться к глобальной переменной в PHP, которая называется $_SERVER. Переменная $_SERVER представляет собой массив, содержащий много полезной информации. На практике $_SERVER может получать любые данные о текущем URL: — доменное имя; — название скрипта; — параметры URL.
По сути, в глобальном массиве $_SERVER хранятся и заголовки, и пути, и местоположения скриптов. Если вас интересует сразу вся информация, хранимая в массиве $_SERVER, воспользуйтесь следующим кодом на PHP. Он выведет всё, что хранится, сделав это в читабельном виде:
Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид: http://localhost/php-lessons/url/?name=anna&city=Valencia. Тестирование в данном примере осуществляется на локальном сервере. Если надо тестировать код на реальном веб-сайте, доступном в интернете, достаточно вместо localhost прописать имя сайта (домен) — тот же otus.ru.
Что же мы увидим в подопытном url? Нас могут интересовать следующие данные: — адрес веб-страницы без GET-параметров; — URL с GET-параметрами; — непосредственно GET-параметры без текущей ссылки (адреса веб-страницы).
Лучше всего разобраться с каждым из случаев по отдельности — так будет гораздо понятнее.
Получение полного URL в PHP
Для получения полного URL вместе с имеющимися GET-параметрами, пригодится следующий код:
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo $url;Что здесь что? В первую очередь, осуществляется проверка, какой именно протокол передачи данных задействуется: https или http. В случае, если значение $_SERVER[‘HTTPS’] не является пустым, речь идёт о протоколе https, в обратном случае — http.
На втором этапе выполняется присоединение двоеточия и двух слэшев, имени домена и остальной части URL.
Итог выполнения кода будет следующим:
Если протокол получать не требуется, код на PHP можно немного сократить:
Смотрим на результат и видим, что протокол отсутствует:
Получение URL в PHP без GET-параметров
Иногда эти параметры, передаваемые в качестве части ссылки, нас не интересуют, то есть требуется получить адрес без них. Мы говорим о следующих параметрах: name=anna&city=Valencia.
В действительности их можно отсечь, используя функцию explode в PHP, разбивающую строку по разделителю. Не стоит объяснять, что ссылка представляет собой строку, а параметры GET начинают прописываться после «?». В результате вопросительный знак и станет разделителем, а функция explode сделает из строки массив с 2-мя элементами. Первый элемент станет содержать искомую ссылку без GET-параметров, так как эти самые параметры останутся во втором элементе.
Код на PHP с использованием переменной $_SERVER будет выглядеть так:
Получение только параметров GET
Эта операция тем более не вызывает сложностей. В данном случае код с использованием переменной $_SERVER будет выглядеть следующим образом:
С помощью этого кода получим:
Это всё. Надеемся, что теперь вы знаете, как происходит получение PHP ссылки и как работает глобальная переменная $_SERVER. Если же интересуют более продвинутые знания, записывайтесь на курсы OTUS!