1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

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

Тема в разделе "Web Coding", создана пользователем SND, 29 фев 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. SND

    SND

    Регистр.:
    11 авг 2007
    Сообщения:
    298
    Симпатии:
    410
    Здравствуйте. Как мне сделать проверку наличия субдомена на определенном сайте?

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

    Как лучше написать скрип, который выполняет функции проверки наличия субдомена, который я ввожу.
    Например, есть текст бокс, и кнопочка проверить. А когда человек вводит субдомен, и нажимает кнопочку, сражу же ему выдается результат.
     
  2. pashkin

    pashkin Постоялец

    Регистр.:
    16 фев 2007
    Сообщения:
    57
    Симпатии:
    2
    Проверять путем отправки запроса на него - не разумно, потому просто создай базу в которой сохраняй инфу о созданных поддоменах, и потом проверяй по этой базе.
     
  3. vovaNux

    vovaNux Постоялец

    Регистр.:
    10 апр 2007
    Сообщения:
    125
    Симпатии:
    16
    Можно относительно просто проверить, используя gethostbyname(). Если возвращает айпи, значит, сабдомен существует.
     
  4. SND

    SND

    Регистр.:
    11 авг 2007
    Сообщения:
    298
    Симпатии:
    410
    pashkin, эта функция должна быть доступна для пользователей. Чтобы они могли проверить наличие свободного поддомена.

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

    pashkin Постоялец

    Регистр.:
    16 фев 2007
    Сообщения:
    57
    Симпатии:
    2
    Конечно всегда будет возвращать ИП.

    Я же говорю, храни инфу о всех поддоменах в БД, и когда клиент заказывает, сделай проверку по БД.
     
  6. SND

    SND

    Регистр.:
    11 авг 2007
    Сообщения:
    298
    Симпатии:
    410
    pashkin, фишка в том, что это не мой сервис. А на нем нету проверки свободного поддомена. А базу я нигде не могу взять. И доступа к БД нету.
     
  7. aleksandr1277

    aleksandr1277 Писатель

    Регистр.:
    30 авг 2007
    Сообщения:
    3
    Симпатии:
    1
    Попробуй Curl -ом считать введенный адрес поддомена и результат пропарсить. Для этого выяви основные отличия у несуществующих страниц(обычно сервер возвращает или редиректит на одну и ту же страницу) и обычных страниц.
     
    SND нравится это.
  8. Mendel

    Mendel

    Регистр.:
    27 янв 2008
    Сообщения:
    217
    Симпатии:
    64
    если "подставляет 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($chCURLOPT_URL$url); // set url to post to
        
    curl_setopt($chCURLOPT_HEADERTRUE);
        
    curl_setopt($chCURLOPT_FAILONERROR1);              // Fail on errors
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1); // return into a variable
        
    curl_setopt($chCURLOPT_TIMEOUT15); // times out after 15s
        
    curl_setopt($chCURLOPT_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 нравится это.
  9. SND

    SND

    Регистр.:
    11 авг 2007
    Сообщения:
    298
    Симпатии:
    410
    Mendel, супер. Большое спасибо.
    Тему можно закрывать!
     
  10. Mendel

    Mendel

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