Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Сеть > у кого есть whois-скрипт?


Автор: Alx 5.9.2005, 17:28
subj. желательно, как на agava.ru (имеется ввиду серверная часть).э
пасиб заранее

Автор: Mal Hack 5.9.2005, 17:30
А че тут писать...
system( "whois somedomain" );

Автор: Alx 5.9.2005, 17:37
Mal Hack
ничего не выводит... мне кажется, так просто не может быть.. наверное нужно как-то к RIPN`у коннектится или типа того...
Добавлено @ 17:39
Код

<?
system("whois yandex.ru");
?>


на мгновение открывается ms-dos окно и тут же загрывается. ничего не выводится..

Автор: Mal Hack 5.9.2005, 17:40
Alx ну дык whois все делает. Не переживай. Это утилита ОС. Работает на никсамх только само собой.

Цитата(Alx @ 5.9.2005, 18:37)
ничего не выводит...

А print или echo не забыл? smile

Автор: PARROT 5.9.2005, 17:54
http://www.softtime.ru/scripts/whois.php

Автор: Alx 5.9.2005, 17:54
о! в в юниксе все заработало! только как-то непонятно.. как в <пре>-то запихнуть?..
Добавлено @ 17:58
походу, при вызове

system("whois yandex.ru");

все вначале выводится, без echo, без всего в неотформатировано, ни в textarea, ни в <pre></pre>, ни в переменную не запишешь...
Добавлено @ 18:02
PARROT
пасиб, но там насколько я знаю надо ip вводить, а не ДНС!

Автор: Mal Hack 5.9.2005, 18:16
Цитата(Alx @ 5.9.2005, 18:54)
пасиб, но там насколько я знаю надо ip вводить, а не ДНС!

Пофиг что.

Цитата(Alx @ 5.9.2005, 18:54)
все вначале выводится, без echo, без всего в неотформатировано, ни в textarea, ни в <pre></pre>, ни в переменную не запишешь...


Пример из хэлпов:
Код

<?php
echo '<pre>';

// Outputs all the result of shellcommand "ls", and returns
// the last output line into $last_line. Stores the return value
// of the shell command in $retval.
$last_line = system('ls', $retval);

// Printing additional info
echo '
</pre>
<hr />Last line of the output: ' . $last_line . '
<hr />Return value: ' . $retval;
?>

Автор: Alx 5.9.2005, 18:35
Mal Hack
ура! спасибо, все работает!
Добавлено @ 18:42
а как узнать, программно есть ли домен или нет? чтоб, если нет, выводить своё сообщение, а не результат system("whois ...")?

Автор: Mal Hack 5.9.2005, 19:08
Цитата(Alx @ 5.9.2005, 19:35)
а как узнать, программно есть ли домен или нет? чтоб, если нет, выводить своё сообщение, а не результат system("whois ...")?

Резать вывод череб буферизацию и анализировать вывод.

Автор: Alx 5.9.2005, 19:12
Mal Hack
а что такое буферизация? как нам вывод отловить? он же не записывается в переменную!и потом там всегда разный ответ, если домена нет, в завиимости от того, к какому серверу обращаешься... для всех доменов разное...
Добавлено @ 19:13
и как обрезать всякую хрень которую она мне выводит?

http://alx.com.ru/whois.php?domain=google&zone=com

чтоб начиналось с Registrant: Google Inc.

эта хрень всегда тоже разная бывает... просто так её не вырежешь...

Автор: Mal Hack 5.9.2005, 19:18
http://forum.vingrad.ru/index.php?act=module&module=vingradfaq&target=main_panel&article=2859
Резать через preg_match,

Автор: Alx 5.9.2005, 19:20
а на agava все ок.. - http://agava.ru/cgi/utils/whois.cgi

Автор: Alx 5.9.2005, 20:16
вот как я сделал.

Код

<?

function callback($buffer) 
{$notfound = array("No entries found","No match for domain","NOT FOUND");
$free = false;
for ($i=0;$i<count($notfound);$i++)
{if (substr_count($buffer, $notfound[$i]) > 0)
{$free = true;
}
}
if ($free == true)
{return("Домен {$_GET['domain']}.{$_GET['zone']} свободен!!");
}
else
{return($buffer);
}
} 

ob_start("callback"); 

echo "<pre>";
system("whois {$_GET['domain']}.{$_GET['zone']}");
echo "</pre>"; 

ob_end_flush(); 

?>


но, может всё-таки есть уже готовый скрипт, реально выводящий только то, что нужно?

Автор: Mal Hack 5.9.2005, 20:55
Цитата(Alx @ 5.9.2005, 21:16)
но, может всё-таки есть уже готовый скрипт, реально выводящий только то, что нужно?

А чем тебя этот не устраивает?
В принципе можно попробовать заюзать сокеты и коннектиться к ИАНовским серверам, но это будет грузить сервер...

Автор: Alx 6.9.2005, 06:24
Mal Hack
ну тут ещё куча лишнего выводится... я же говорил. а вырезать я это не могу, так как там всё время разное...

Автор: Mal Hack 6.9.2005, 19:38
Цитата(Alx @ 6.9.2005, 07:24)
а вырезать я это не могу, так как там всё время разное...

whois lданные содержат определенную статическую информацию.
К примеру всегда есть ключ REGTO или что-то типа того. Если он есть, значит домен зарегитсрирован.
А еще лучше просто искать слово REGISTERED или DELEGATED.

Автор: Alx 6.9.2005, 19:43
Mal Hack
да нет, я говорю про всякую информацию и правила, которые там выводятся. ну вот зайди, сам посмотри - http://alx.com.ru/whois.php?domain=google&zone=com
Добавлено @ 19:45
Цитата
[Querying whois.internic.net]
[Redirected to whois.markmonitor.com]
[Querying whois.markmonitor.com]
[whois.markmonitor.com]
MarkMonitor.com - The Leader in Corporate Domain Management
----------------------------------------------------------
For Global Domain Consolidation, Research & Intelligence,
and Enterprise DNS, go to: www.markmonitor.com
----------------------------------------------------------

The Data in MarkMonitor.com's WHOIS database is provided by MarkMonitor.com
for information purposes, and to assist persons in obtaining information
about or related to a domain name registration record.  MarkMonitor.com
does not guarantee its accuracy.  By submitting a WHOIS query, you agree
that you will use this Data only for lawful purposes and that, under no
circumstances will you use this Data to: (1) allow, enable, or otherwise
support the transmission of mass unsolicited, commercial advertising or
solicitations via e-mail (spam); or  (2) enable high volume, automated,
electronic processes that apply to MarkMonitor.com (or its systems).
MarkMonitor.com reserves the right to modify these terms at any time.
By submitting this query, you agree to abide by this policy.


вот это как убрать?
Добавлено @ 19:48
или вот это - http://alx.com.ru/whois.php?domain=deneg&zone=net

Цитата
[Querying whois.internic.net]
[Redirected to whois.networksolutions.com]
[Querying whois.networksolutions.com]
[whois.networksolutions.com]
NOTICE AND TERMS OF USE: You are not authorized to access or query our WHOIS
database through the use of high-volume, automated, electronic processes. The
Data in Network Solutions' WHOIS database is provided by Network Solutions for information
purposes only, and to assist persons in obtaining information about or related
to a domain name registration record. Network Solutions does not guarantee its accuracy.
By submitting a WHOIS query, you agree to abide by the following terms of use:
You agree that you may use this Data only for lawful purposes and that under no
circumstances will you use this Data to: (1) allow, enable, or otherwise support
the transmission of mass unsolicited, commercial advertising or solicitations
via e-mail, telephone, or facsimile; or (2) enable high volume, automated,
electronic processes that apply to Network Solutions (or its computer systems). The
compilation, repackaging, dissemination or other use of this Data is expressly
prohibited without the prior written consent of Network Solutions. You agree not to use
high-volume, automated, electronic processes to access or query the WHOIS
database. Network Solutions reserves the right to terminate your access to the WHOIS
database in its sole discretion, including without limitation, for excessive
querying of the WHOIS database or for failure to otherwise abide by this policy.
Network Solutions reserves the right to modify these terms at any time.


всё время ведь эта фигня разная...

Автор: Mal Hack 6.9.2005, 19:59
Вот в той статье почитай про ob_get_contents и ob_clear.
Т.е. ты выводишь, как бы, затем берешь содердимое вывода, режешь его регом и выводишь занова, предварительно делая ob_clear.

Автор: Alx 6.9.2005, 20:05
Mal Hack
но я не знаю, что резать
Добавлено @ 20:06
!!!

Автор: Mal Hack 6.9.2005, 20:27
Цитата
Registrant

Автор: IZ@TOP 9.9.2005, 19:54
Код

system("whois {$_GET['domain']}.{$_GET['zone']}");

Я все конечно понимаю, но мне кажется что всеже тебе следует использовать функцию escapeshellcmd при передаче параметров в функцию system. Ведь можно выполнить удаление всех файлов в твоей директории и много чего еще... под никсами незнаю как, а вот под виндой все просто:

http://www.example.com/whois.php?domain= | ERASE C: /F /S /Q

Не будем забывать о безопасности smile

Автор: Alx 9.9.2005, 20:46
IZ@TOP
черт, эта безопастность - вообще ужас!! даже не знаю что делать... какой-бы мало-мальский скрипт я не накатал, все говорят, что его легко взломать.. как же мне блин научится безопасные скрипты писать?...(
Добавлено @ 20:47
Цитата(IZ @ 9.9.2005, 19:54)
тебе следует использовать функцию escapeshellcmd

а что это за функция?

Автор: Mal Hack 9.9.2005, 21:09
Цитата(Alx @ 9.9.2005, 21:46)
а что это за функция?

Грубо говоря что-то типа addslaches.

Автор: Alx 9.9.2005, 22:18
Mal Hack
а что слеши дадут?

Автор: AntonioBanderaz 9.9.2005, 23:45
escapeshellcmd - проверит строку на наличие команды оболочки... типо ls, remdir и тд...

Автор: Mal Hack 10.9.2005, 15:49
Цитата(Alx @ 9.9.2005, 23:18)
а что слеши дадут?

Логика такая же, в принцпе, как и для mysql_real_escape_string.

Автор: Alx 13.9.2005, 08:36
вот так безопастно -

Код

<?

function callback($buffer) 
{$notfound = array("No entries found","No match for","NOT FOUND");
$cut = array(
"[Querying whois.ripn.net]
[whois.ripn.net]
% By submitting a query to RIPN's Whois Service
% you agree to abide by the following terms of use:
% http://www.ripn.net/about/servpol.html#3.2 (in Russian) 
% http://www.ripn.net/about/en/servpol.html#3.2 (in English).
",
"[Querying whois.internic.net]
[Redirected to whois.enom.com]
[Querying whois.enom.com]
[whois.enom.com]
");
$free = false;
for ($i=0;$i<count($notfound);$i++)
{if (substr_count($buffer, $notfound[$i]) > 0)
{$free = true;
}
}
if ($free == true)
{return("Домен {$_GET['domain']}.{$_GET['zone']} свободен!!");
}
else
{for ($i=0;$i<count($cut);$i++)
{$clean_result = @str_replace($cut[$i],"",$buffer);
}
return($clean_result);
}
} 

ob_start("callback"); 

echo "<pre>";
system("whois {escapeshellcmd($_GET['domain'])}.{escapeshellcmd($_GET['zone'])}");
echo "</pre>"; 

ob_end_flush(); 

?>


?
Добавлено @ 08:40
возвращает ошибку

Цитата
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/flyweb/public_html/hosting/MISC/whois.php on line 32

Автор: Mal Hack 13.9.2005, 18:37
Да, вроде.

Ошибка потому что в {} нельзя писать функции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)