2012-01-01 5 views
18

Если у меня есть домен, такой как www.example.com, и я хочу проверить, доступен ли он с помощью записей DNS (не whois) ...проверить, доступен ли домен или нет с помощью PHP?

Возможно ли это сделать с помощью PHP?

+4

Если на «доступен», вы имеете в виду для покупки или регистрации, вы не можете определить это надежно с помощью DNS. Например, 'moose9moose2.ph' доступен, но имеет запись A. Хотя 'ph.moose9moose2' не имеет записей DNS, но недоступен для регистрации. Вы можете попытаться добавить правила, чтобы охватить все возможные случаи, но вы, вероятно, никогда не закончите. –

+1

@David, Правильно, но если dns недостаточно, что бы вы рекомендовали вместо этого? – David19801

+1

См. Вопрос, который вы дублировали: Whois. – KingCrunch

ответ

29

Вы можете использовать checkdnsrr или gethostbyname:

Документация:

http://www.php.net/checkdnsrr

http://www.php.net/gethostbyname

Пример checkdnsrr:

<?php 
if (checkdnsrr('example.com.', 'ANY')) { 
    echo "DNS Record found"; 
} 
else { 
    echo "NO DNS Record found"; 
} 
?> 

Пример gethostbyname:

<?php 
$domain = 'example.com'; 
if (gethostbyname($domain) != $domain) { 
    echo "DNS Record found"; 
} 
else { 
    echo "NO DNS Record found"; 
} 
?> 
+1

Это показывает как найдено для всего ... example - if (checkdnsrr ('examjhkasdjkhbasdle.com', 'ANY')) { echo "DNS Record found"; } else { echo "NO DNS Record found"; } – David19801

+0

вот второй пример использования gethostbyname: favo

+8

Решение: для проверки checkdnsrr вы должны добавить период после имени домена, например: checkdnsrr ('example.com.', "ANY") – David19801

0

я должен пойти на этот пакет Domain-Availability Он поддерживает множество доменов верхнего уровня и записывается в объектно-ориентированном образом ,

1

Это зависит от того, что вы подразумеваете под «доступным». Если вы имеете в виду доступность для регистрации, невозможно определить только на основе информации DNS. Должна использоваться система whois. Простым способом тестирования является использование неиспользуемого имени домена и установка серверов имен на что-то недействительное. DNS не будет доступен, но домен по-прежнему недоступен для регистрации. Я просто проверил предложения checkdnsrr(), gethostbyname() и dns_get_record(). Все показывают, что DNS не возвращается для домена, который не может быть зарегистрирован.

Следующий вопрос предлагает еще некоторые детали: Checking if a domain name is registered

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