Проверка на наличие субдомена.

Статус
В этой теме нельзя размещать новые ответы.

SND

Мой дом здесь!
Регистрация
11 Авг 2007
Сообщения
298
Реакции
412
Здравствуйте. Как мне сделать проверку наличия субдомена на определенном сайте?

Например, есть сайт site.ru
И есть субдомены на этом сайте sub1.site.ru, subtest.site.ru и т.д.

Как лучше написать скрип, который выполняет функции проверки наличия субдомена, который я ввожу.
Например, есть текст бокс, и кнопочка проверить. А когда человек вводит субдомен, и нажимает кнопочку, сражу же ему выдается результат.
 
Проверять путем отправки запроса на него - не разумно, потому просто создай базу в которой сохраняй инфу о созданных поддоменах, и потом проверяй по этой базе.
 
Можно относительно просто проверить, используя gethostbyname(). Если возвращает айпи, значит, сабдомен существует.
 
pashkin, эта функция должна быть доступна для пользователей. Чтобы они могли проверить наличие свободного поддомена.

vovaNux, дело в том, что если посылаешь запрос на субдомен subnety.site.ru, а его нет, то site.ru автоматически заменяет его www, и адрес становиться Для просмотра ссылки Войди или Зарегистрируйся
ИМХО оно будет всегда возвращать айпи.
 
Конечно всегда будет возвращать ИП.

Я же говорю, храни инфу о всех поддоменах в БД, и когда клиент заказывает, сделай проверку по БД.
 
pashkin, фишка в том, что это не мой сервис. А на нем нету проверки свободного поддомена. А базу я нигде не могу взять. И доступа к БД нету.
 
Попробуй Curl -ом считать введенный адрес поддомена и результат пропарсить. Для этого выяви основные отличия у несуществующих страниц(обычно сервер возвращает или редиректит на одну и ту же страницу) и обычных страниц.
 
  • Нравится
Реакции: SND
pashkin, эта функция должна быть доступна для пользователей. Чтобы они могли проверить наличие свободного поддомена.

vovaNux, дело в том, что если посылаешь запрос на субдомен subnety.site.ru, а его нет, то site.ru автоматически заменяет его www, и адрес становиться Для просмотра ссылки Войди или Зарегистрируйся
ИМХО оно будет всегда возвращать айпи.

если "подставляет www" по похоже всетаки у тебя редирект идет :)
я думаю что у тебя там идет * A в днс... и как следствие какой бы ты не запросил домен будет один и тотже ip...
ну а вот если его нет в базе, то тогда переадресация на морду... если поумному сделано то переадресация идет 302 в хеадере...
в общем пока не вижу конкретики могу тока дать тебе кусок из одного моего парсера
по хорошему скорее всего в твоем случае можно существенно сократить объем трафика и упростить, скрипт не качая собственно тело... но зато этот код рабочий, и снят с рабочего проекта.. я только поудалял немного лишнего :) если заработает - тогда можно и упрощать :)
PHP:
function bot1($url)
	{
	$user_agent="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
	// получим контент
	$ch = curl_init();    // initialize curl handle
	curl_setopt($ch, CURLOPT_URL, $url); // set url to post to
	curl_setopt($ch, CURLOPT_HEADER, TRUE);
	curl_setopt($ch, CURLOPT_FAILONERROR, 1);              // Fail on errors
	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); // return into a variable
	curl_setopt($ch, CURLOPT_TIMEOUT, 15); // times out after 15s
	curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
	$document = curl_exec($ch);
	curl_close($ch);
	// ******************************************************************
	// извлечем HTTP_HEAD
	// ******************************************************************
	list($http_head,$document)=explode('<',$document,2);
	$document='<'.$document;
	// ******************
	if (strstr($http_head,'HTTP/1.1 3') AND $n<=3)
		{
тут идет код если переадресация, т.е. если нет домена
		}
        else
                 {
ну а тут если есть :)
                 }
	}
 
  • Нравится
Реакции: SND
Mendel, супер. Большое спасибо.
Тему можно закрывать!
 
Mendel, супер. Большое спасибо.
Тему можно закрывать!

вообще если заработало то добавь CURLOPT_NOBODY
и удали
PHP:
    // ******************************************************************
    // извлечем HTTP_HEAD
    // ******************************************************************
    list($http_head,$document)=explode('<',$document,2);
    $document='<'.$document;
    // ******************
ибо тебе не нужно само тело, тебе только хеадеры нужны...
просто нет времени проверять на работоспособность, поэтому в первом варианте написал тот код в котором я уверен а не тот который правильный :)
скорость увеличешь и трафик уменьшишь в разы.
Когда проверишь тогда действительно закрывать )))
 
  • Нравится
Реакции: SND
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху