ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

24.03.2009, 21:53
|
|
Познающий
Регистрация: 14.04.2008
Сообщений: 78
Провел на форуме: 41875
Репутация:
4
|
|
Whois. Ответ сервера
Добрый день,
Урывок рабочего кода:
PHP код:
$fp = fsockopen($whois, 43);
fputs($fp, "$domain\r\n");
$str = "";
while(!feof($fp))
{
$str .= fgets($fp,128);
$buffer = fgets($fp, 1024);
[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, проверка доменов.
|
|
|

24.03.2009, 22:10
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
Провел на форуме: 2127116
Репутация:
383
|
|
Для начала осмотреть каким образом отдает результат команда whois
Затем немного подумав добавить < /br>
А только после этого понять ,что в первом случае в цикле выводит построчно результат чтения, а во втором он что должен вывести?
|
|
|

24.03.2009, 22:10
|
|
Познавший АНТИЧАТ
Регистрация: 01.05.2006
Сообщений: 1,021
Провел на форуме: 3424739
Репутация:
921
|
|
подозреваю по поводу первого, что....
PHP код:
$fp = fsockopen($whois, 43);
fputs($fp, "$domain\r\n");
$str = "";
while(!feof($fp))
{
$str .= fgets($fp,128);
$buffer = fgets($fp, 1024);
$buffer = str_replace("\r\n", "<br>", $buffer);
[B]echo "{$buffer}";[/B]
}
fclose($fp);
|
|
|

24.03.2009, 23:36
|
|
Познающий
Регистрация: 14.04.2008
Сообщений: 78
Провел на форуме: 41875
Репутация:
4
|
|
Да, я нашел. Спасибо. Это правильно.
Остается вопрос номер II.
Я повторю смысл.
Whois, проверка домена
Добрый день,
Урывок чернового варианта:
PHP код:
$fp = fsockopen($whois, 43);
fputs($fp, "$domain\r\n");
$str = "";
while(!feof($fp))
{
$str .= fgets($fp,128);
$buffer = fgets($fp, 1024);
[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/>";
}
ответ сервера на выводится?
|
|
|

24.03.2009, 23:37
|
|
Познающий
Регистрация: 14.04.2008
Сообщений: 78
Провел на форуме: 41875
Репутация:
4
|
|
Сообщение от neval
А только после этого понять ,что в первом случае в цикле выводит построчно результат чтения, а во втором он что должен вывести?
Как же? Я записал в буфер строку ответа.
|
|
|

25.03.2009, 00:43
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
Провел на форуме: 2127116
Репутация:
383
|
|
Сообщение от dimash
Как же? Я записал в буфер строку ответа.
У тебя в цикле в переменную $buffer заносятся строки, полученые fgets
Соответственно, по завершению цикла в переменной $buffer будет последнее полученое значение. В твоем случае это пустая строка.
Исправь
PHP код:
while(!feof($fp))
{
$str .= fgets($fp,128);
$buffer = fgets($fp, 1024);
[B]echo "{$buffer}";[/B]
}
на
PHP код:
while(!feof($fp))
{
$str .= fgets($fp,128);
$buffer[] = fgets($fp, 1024);
print_r($buffer);
}
и ты увидишь в чем твоя ошибка
Последний раз редактировалось neval; 25.03.2009 в 00:47..
|
|
|

25.03.2009, 01:08
|
|
Познающий
Регистрация: 14.04.2008
Сообщений: 78
Провел на форуме: 41875
Репутация:
4
|
|
решил строкой,спасибо.
|
|
|

25.03.2009, 01:12
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
Провел на форуме: 2127116
Репутация:
383
|
|
Наверное лучше было бы через массив и foreach
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|