Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Whois. Ответ сервера (https://forum.antichat.xyz/showthread.php?t=112838)

dimash 24.03.2009 21:53

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); 

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

// если в ответе имеется фраза-отказ, домен не

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

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

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

то ответ на выводится?

Вопрос №2.
Я получаю ответ сервера в виде строки
Цитата:

% Rights restricted by copyright. % It has been obtained by querying a remote server: % domain: site.net.ua tech-c: TROL-UANIC nserver: ns1.spam.net.ua changed: hostmaster@megapol.net.ua 20081030
Как ее сделать более читабильной. Хотя бы пока речь не идет о полной информации, а только о ентерах, например посмотрите "http://imena.ua/whois.php?domain=domenforum.com.ua".

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

neval 24.03.2009 22:10

Для начала осмотреть каким образом отдает результат команда whois
Затем немного подумав добавить < /br>
А только после этого понять ,что в первом случае в цикле выводит построчно результат чтения, а во втором он что должен вывести?

Sharky 24.03.2009 22:10

подозреваю по поводу первого, что....
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); 


dimash 24.03.2009 23:36

Да, я нашел. Спасибо. Это правильно.
Остается вопрос номер 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/>";
    } 

ответ сервера на выводится?

dimash 24.03.2009 23:37

Цитата:

Сообщение от neval
А только после этого понять ,что в первом случае в цикле выводит построчно результат чтения, а во втором он что должен вывести?

Как же? Я записал в буфер строку ответа.

neval 25.03.2009 00:43

Цитата:

Сообщение от dimash
Как же? Я записал в буфер строку ответа.

У тебя в цикле в переменную $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);

  } 

и ты увидишь в чем твоя ошибка

dimash 25.03.2009 01:08

решил строкой,спасибо.

neval 25.03.2009 01:12

Наверное лучше было бы через массив и foreach


Время: 09:45