Whois. Ответ сервера

Discussion in 'PHP' started by dimash, 24 Mar 2009.

  1. dimash

    dimash Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    Добрый день,
    Урывок рабочего кода:
    PHP:
    $fp fsockopen($whois43);

      
    fputs($fp"$domain\r\n");

      
    $str "";

      while(!
    feof($fp))

      {

        
    $str .= fgets($fp,128);
        
    $buffer fgets($fp1024);
        [
    B]echo "{$buffer}";[/B]

      }

      
    fclose($fp);
    Вопрос №1.
    Почему, если я снимаю строку кода echo "{$buffer}"; с предыдущего кода и встравляю ее в продолжение далее:
    PHP:
    // если в ответе имеется фраза-отказ, домен не

      // зарегистрирован, если такой фразы нет -

      // следовательно домен зарегистрирован

      
    if(!preg_match("/".$not_found_string."/is"$str)) {
        echo 
    "Домен зайнятий";
       [
    B}print $buffer;[/B]
          }
      else {
        echo 
    "Домен вільний <br/>";
        }[/
    SIZE]
    то ответ на выводится?

    Вопрос №2.
    Я получаю ответ сервера в виде строки
    Как ее сделать более читабильной. Хотя бы пока речь не идет о полной информации, а только о ентерах, например посмотрите "http://imena.ua/whois.php?domain=domenforum.com.ua".

    Whois, проверка доменов.
     
  2. neval

    neval Elder - Старейшина

    Joined:
    13 Dec 2006
    Messages:
    457
    Likes Received:
    116
    Reputations:
    23
    Для начала осмотреть каким образом отдает результат команда whois
    Затем немного подумав добавить < /br>
    А только после этого понять ,что в первом случае в цикле выводит построчно результат чтения, а во втором он что должен вывести?
     
  3. Sharky

    Sharky Elder - Старейшина

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    подозреваю по поводу первого, что....
    PHP:
    $fp fsockopen($whois43); 

      
    fputs($fp"$domain\r\n"); 

      
    $str ""

      while(!
    feof($fp)) 

      { 

        
    $str .= fgets($fp,128); 
        
    $buffer fgets($fp1024); 
        
    $buffer str_replace("\r\n""<br>"$buffer);
        [
    B]echo "{$buffer}";[/B

      } 

      
    fclose($fp);  
     
  4. dimash

    dimash Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    Да, я нашел. Спасибо. Это правильно.
    Остается вопрос номер II.
    Я повторю смысл.
    Whois, проверка домена
    Добрый день,
    Урывок чернового варианта:
    PHP:
    $fp fsockopen($whois43);

      
    fputs($fp"$domain\r\n");

      
    $str "";

      while(!
    feof($fp))

      {

        
    $str .= fgets($fp,128);
        
    $buffer fgets($fp1024);
        [
    B]echo "{$buffer}";[/B]

      }

      
    fclose($fp);
    Вопрос. Почему, если я снимаю строку echo "{$buffer}"; и встравляю в продолжение, за циклом:
    PHP:
      if(!preg_match("/".$not_found_string."/is"$str)) {
        echo 
    "Домен зайнятий";
       [
    B}print $buffer;[/B]
          }
      else {
        echo 
    "Домен вільний <br/>";
        }
    ответ сервера на выводится?
     
  5. dimash

    dimash Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    Как же? Я записал в буфер строку ответа.
     
  6. neval

    neval Elder - Старейшина

    Joined:
    13 Dec 2006
    Messages:
    457
    Likes Received:
    116
    Reputations:
    23
    У тебя в цикле в переменную $buffer заносятся строки, полученые fgets
    Соответственно, по завершению цикла в переменной $buffer будет последнее полученое значение. В твоем случае это пустая строка.

    Исправь

    PHP:
    while(!feof($fp))

      {

        
    $str .= fgets($fp,128);
        
    $buffer fgets($fp1024);
        [
    B]echo "{$buffer}";[/B]

      } 
    на

    PHP:
    while(!feof($fp))

      {

        
    $str .= fgets($fp,128);
        
    $buffer[] = fgets($fp1024);
        
    print_r($buffer);

      } 
    и ты увидишь в чем твоя ошибка
     
    #6 neval, 24 Mar 2009
    Last edited: 24 Mar 2009
  7. dimash

    dimash Elder - Старейшина

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    решил строкой,спасибо.
     
  8. neval

    neval Elder - Старейшина

    Joined:
    13 Dec 2006
    Messages:
    457
    Likes Received:
    116
    Reputations:
    23
    Наверное лучше было бы через массив и foreach