Простой whois на PHP
posted in PHP |PHP дает нам возможность запускать команды операционной системы, используя например функцию exec(). Попробуем ее, написав простой whois сервис. Whois — это *nix комманда, которая показывает информацию о домене. Также мы можем проверить, свободен домен или нет. Удостовертесь, что ваш провайер включил exec(). Обычно эта функция запрещена ( находится в параметре disable_functions в php.ini). Также попробуйте, работает ли whois нормально на вашем сервере. Я пробовал скрипт на Apache 2, PHP 5, Linux Fedora 8 и все было ОК.
Итак, создадим форму с полем для ввода домена.
Конечно, нам необходимо проверить корректно ли введенное значение, иначе злоумышленники смогут передать и выполнить на сервере команду, которая навредит нашей ОС.
Также для начала проверим, включена ли функция exec().
<? if (isset($_GET['domain'])) // если мы ввели не домен, то удаляем http://www. { $_GET['domain']=str_replace("http://www.","",$_GET['domain']); $_GET['domain']=str_replace("https://www.","",$_GET['domain']); } // вывод формы echo '<form name="domaincheck" action="whois.php" method="get">'; echo '<input type="text" name="domain" size="50" value="'; if (isset($_GET['domain'])) echo $_GET['domain']; echo '"> <input type="submit" value="Check"> </form><br /><br />'; // exec() включена? if (!function_exists("exec")) { echo "ERROR: exec() недоступна!"; } else { if (!isset($_GET['domain'])) { echo "ERROR: домен не задан"; } else { if (!eregi("^[a-z0-9.-]*$",$_GET['domain'])) { // простая проверка домена: только буквы, цифры и символы ".", "-" echo "ERROR: неверно задан домен!"; } else { exec("whois ".$_GET['domain'],$output,$return_var); // запускаем комманду whois foreach ($output as $line) // выводим каждую строку if (!eregi("^\[.*\]$",$line)) // исключаем строки на подобие "[Redirecting hostname]" echo $line."<br />"; } } } ?>