2010-09-30 3 views
2

I current имеет систему, которая работает следующим образом:PHP - Домен по IP

Вставить IP-адрес, и он отправит IP-адрес на другую страницу .php. Однако, когда я пытаюсь отправить сообщение http://google.com, он не превращает домен в IP.

Как бы я это сделал? Например. когда пользователь вставляет http://google.com или в любой домен, он автоматически разрешит IP.

Я знаю функцию gethostbyadd, я не знаю, как ее структурировать, например. Формы, таблицы, почтовые данные.

Спасибо, если они могут помочь.

+0

Как насчет того, чтобы показать, что у вас есть. –

+0

Вот код: http://pastebin.com/E7s57Eak – Ray

ответ

1

функция, которую вы ищете $x = gethostbyname('stackoverflow.com');

+0

Нет, в основном его форма, когда я вставляю имя домена, она должна автоматически разрешать домен на IP. Это метод почтовых данных. – Ray

+1

Raymond ваш комментарий не имеет смысла. Предложение Aviatrix и другие даны. –

+0

В принципе, когда человек вводит собственный домен или другие доменные имена в поле «хозяин», он должен автоматически разрешить домен в IP. Поэтому им не нужно пинговать, чтобы получить IP. Вот мой код: http://pastebin.com/E7s57Eak – Ray

5

Что вы получили вместе до сих пор? Как он терпит неудачу?

Удивительно, что вы печатаете http://google.com/ и пытаетесь получить IP-адрес от него, и это не удастся, так как URL-адрес содержит информацию о протоколе. Вам нужно передать имя домена и только доменное имя в gethostbyname:

gethostbyname('www.google.com'); // Works 
gethostbyname('http://www.google.com'); // Will not work 

Если у вас есть часть протокола (HTTP: //) в начале, вы можете использовать parse_url:

gethostbyname(parse_url('http://www.google.com', PHP_URL_HOST)); 

Если у вас есть какая-то другая проблема, сообщите нам об этом. Если вы не знаете, с чего начать, я предлагаю начать с чтения на пособия программирования;)

+0

Это не только Google, это зависит от человека, которого он ставит. Мне нужна простая форма, которая автоматически разрешает домен для IP. – Ray

5

Я думаю, что вы ищете gethostbyname:

$ip = gethostbyname('www.google.com'); 

Обратите внимание, убедитесь, что вы раздеть HTTP : // и любые символы пробела/завершающие символы, так как это, вероятно, будет препятствовать точным результатам.

0

В некоторых случаях функция gethostbyname работает медленно или работает некоторое время. Некоторые говорят, что apache нуждается в перезагрузке, чтобы запустить эту функцию.Я не могу подтвердить это, но я хочу дать альтернативный метод, как найти IP по домену с помощью nslookup

function getAddrByHost($host, $timeout = 1) { 
    $query = `nslookup -timeout=$timeout -retry=1 $host`; 
    if(preg_match('/\nAddress: (.*)\n/', $query, $matches)) 
     return trim($matches[1]); 
} 

echo getAddrByHost('example.com'); 

тест скорости, используя XHProf:

попытка 1

gethostbyname 5014593 микросекунд

getAddrByHost 29,656 microsec

попытка 2

gethostbyname 5016678 микросекунд

getAddrByHost 13887 микросекунд

попытка 3

gethostbyname 5014640 микросекунд

getAddrByHost 8297 микросекунд

Вывод: ФУНКЦИИ n gethostbyname выполняется более 5 секунд, что очень долго. Поэтому я советую вам использовать более быструю функцию getAddrByHost

Примечание: PHP использовать этот файл /etc/resolv.conf получить DNS-серверы:

В моем случае я использую BIND (с именем), который работает на хосте 127.0.0.1

# /etc/resolv.conf 
nameserver 127.0.0.1 
nameserver 8.8.8.8 
nameserver 4.4.4.4 
+0

Это ответ низкого качества, который был помечен для удаления. Пожалуйста, добавьте информацию помимо кода, чтобы помочь человеку узнать, как это решение работает, а также будущие посетители этого вопроса. – JNevill

Смежные вопросы