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().

PHP:
  1. <?
  2. if (isset($_GET['domain'])) // если мы ввели не домен, то удаляем http://www.
  3.     {
  4.     $_GET['domain']=str_replace("http://www.","",$_GET['domain']);
  5.     $_GET['domain']=str_replace("https://www.","",$_GET['domain']);
  6.     }
  7. // вывод формы
  8. echo '<form name="domaincheck" action="whois.php" method="get">';
  9. echo '<input type="text" name="domain" size="50" value="';
  10.  if (isset($_GET['domain']))
  11.     echo $_GET['domain'];
  12. echo '">
  13. <input type="submit" value="Check">
  14. </form><br /><br />';
  15. // exec() включена?
  16. if (!function_exists("exec")) {
  17.     echo "ERROR: exec() недоступна!";
  18. }
  19. else
  20. {
  21. if (!isset($_GET['domain'])) {
  22.         echo "ERROR: домен не задан";
  23.     }
  24.     else {
  25.       if (!eregi("^[a-z0-9.-]*$",$_GET['domain'])) { // простая проверка домена: только буквы, цифры и символы ".", "-"
  26.         echo "ERROR: неверно задан домен!";
  27.       }
  28.       else {
  29.         exec("whois ".$_GET['domain'],$output,$return_var); // запускаем комманду whois
  30.         foreach ($output as $line) // выводим каждую строку
  31.             if (!eregi("^\[.*\]$",$line)) // исключаем строки на подобие "[Redirecting hostname]"
  32.                  echo $line."<br />";
  33.       }
  34.     }
  35. }
  36. ?>

У нас куча комментариев (2) на запись “Простой whois на PHP”

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

  1. 1 On 15.05.2008, Serega said:

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

  2. 2 On 15.05.2008, scorpio said:

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

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

Вложить деньги, оффшор инвестирование. Только стили музыки mp3 видео кодеки.

265

Здесь покупается высококачественные воздуходувки, дорого Мебель столплит