Простой 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 />";
}
}
}
?>