Я хочу, чтобы все IP-адреса принадлежали домену, например google.com, я недавно посмотрел на это, https://github.com/ip2location/ip2location-cakephp. Итак, что я собираюсь сделать, это нравится это:
<?php
// clientIp() will iterate from 1.1.1.1 to 255.255.255.255
App::uses('IP2LocationCore', 'IP2Location.Model');
$IP2Location = new IP2LocationCore();
$record = $IP2Location->get($this->request->clientIp());
if(strcmp($record->domainName, 'google.com')) {
// log the ip to a text file
}
?>
У меня вопрос: возможно ли это решение? И все же лучше, чем это?
Я не очень разбираюсь в PHP, поэтому учтите это в моем ответе!
Похоже, что ip2location берет IP-адрес и определяет его местоположение. Это делается (я думаю) путем компиляции информации из разных источников данных.
Однако вам нужно начать с IP-адреса, и он даст вам обратный домен, связанный с этим. Это может отличаться от адреса прямого просмотра.
Например, у меня есть имя хоста vm.example.com, которое я использую для указания на сеанс удаленного рабочего стола в Azure. Если вы выполните обратный поиск по этому адресу, вы не получите никакой информации о моем домене, вы получите домен Azure, потому что именно здесь регистрируется обратное.
и, насколько мне известно, до тех пор, пока не включена передача зон, невозможно получить все имена хостов в домене. По крайней мере, без увеличения всего домена.
Есть ли конкретная причина, по которой вы хотите это сделать?
Попробуйте использовать функцию PHP gethostbynamel.
<?php
$hosts = gethostbynamel('google.com');
print_r($hosts);
?>
Это, например, вернет:
Array
(
[0] => 173.194.113.35
[1] => 173.194.113.41
[2] => 173.194.113.46
[3] => 173.194.113.34
[4] => 173.194.113.40
[5] => 173.194.113.39
[6] => 173.194.113.33
[7] => 173.194.113.37
[8] => 173.194.113.32
[9] => 173.194.113.38
[10] => 173.194.113.36
)