15 Май 2008

Простой 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&#91;'domain'&#93;)) // если мы ввели не домен, то удаляем http://www.
	{
	$_GET&#91;'domain'&#93;=str_replace("http://www.","",$_GET&#91;'domain'&#93;);
	$_GET&#91;'domain'&#93;=str_replace("https://www.","",$_GET&#91;'domain'&#93;);
	}
// вывод формы
echo '<form name="domaincheck" action="whois.php" method="get">';
echo '<input type="text" name="domain" size="50" value="';
 if (isset($_GET&#91;'domain'&#93;))
	echo $_GET&#91;'domain'&#93;;
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 />";
	  }
	}
}
?>

У нас 7 комментариев на запись “Простой whois на PHP”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 15.05.2008, Serega said:

    и как шустро оно работает?

  2. 2 On 15.05.2008, scorpio said:

    от сервера зависит

  3. 3 On 21.04.2009, cooler said:

    имхо, этот скрипт просто огромную дырку делает в безопасности, тогда уж поставить не просто обрезание http[s]*://
    а проверять чтобы вообще ничего кроме цифробукв и точек не было в переменной передаваемой на exec

  4. 4 On 21.04.2009, scorpio said:

    cooler, задача была не писать полноценный сервис, а именно whois, что и сделано.

  5. 5 On 29.09.2009, KuLiBiN said:

    Спасибо, очень полезная штука.

  6. 6 On 25.08.2011, Viktor said:

    А не подскажите скрипт без использования exec?

  7. 7 On 25.08.2011, scorpio said:

    Виктор, вот тут есть пример http://www.internoetics.com/2010/01/12/simple-whois-php-script/
    на сокетах. скрипт пожключается к whois-серверам, отправляет имя домена и ожидает в ответ информацию о домене

Оставить комментарий