Четверг, 10.07.2025, 00:29
Приветствую Вас Гражданское лицо | RSS
[SEARCH_TITLE]
[SEARCH_FORM]
Главная | Каталог статей | Регистрация | Вход
TMS
Форма входа
Сайт переехал на новый адрес:
//alexcoder.ucoz.ru
На данном адресе новые материалы выкладываться не будут
Также по новому адресу доступен оффлайн архив материалов
Меню сайта

Категории раздела
Программирование [10]
Компъютеры [2]
WEB [2]
Веб-сервисы
Игры [2]
ОС [6]

Поиск

Облако тегов

Наш опрос
Оцените мой сайт
Всего ответов: 22

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Также использую Google Analystic

Мини-чат

KASPERSKY
Новости вирусоной активности

Реклама
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • Главная » Статьи » Компъютеры » Программирование

    Простая админская веб-панель
    Итак.
    Мы напишем систему удалённого управления системой (при помощи PHP). Предполагается, что есть админ-суперпользователь (в раскладе, где я планирую юзать систему - именно так).

    В системе должны быть : возможность юзать консольные команды, подключть плагин (типа макроса или подобный), и т.д.
    Неплохо было бы оформить всё Ajax-ом, но пока лень.

    Хранить пароль админа будем в PHP файле :

    Code

    <?php
      $myName="5214343";
      $cookieValue="hrff ffhdjd";
      $adminName="afcjefghb";
      $adminPass="r--089696439utj uj;'glpjn";
    ?>

    т.к. в MySQL уязвимостей много. Да и напрягать слона из-за моськи не рекомендую.

    Пишем код. Хранение данных об авторизованности - как угодно, у мну в куках, но планирую исправить smile а то сессии без дела.

    Сперва будем поключать приведённый выше конфиг, в конце - design.php

    Code

    <html>
      <head>
      <?php echo $my_headers; ?>
      <style type="text/css">
      #logo{
      height:300px;
      }
      #menu{
      width:150px;
      }
      #copyrights
      {
      height:50px;
      }
      </style>
      </head>
      <body>
      <table width="100%">
      <tr><td <?php if($showAdminPanel){ echo "colspan=\"2\""; } ?> id="logo">Óäàëåííîå óïðâëåíèå ñèñòåìîé</td></tr>
      <tr>
      <?php if($showAdminPanel==true){?>
      <a href="index.php?action=plugins-list">Ñïèñîê óñòàíîâëåííûõ ïëàãèíîâ</a>
      <hr>
      <form action="index.php">
      <input type="hidden" name="action" value="exec-comand" />
      Âûïîëíèòü êîìàíäó :

      <input type="text" name="command" />

      <input type="submit" value="OK" />
      </form>
      <?php } ?>
      <td id="content"><?php echo $content; ?></td>
      </tr>
      <tr>
      <td id="copyrights">
      </td>
      </tr>
      </table>
      </body>
    </html>

    Сразу поясню :
    $my_header-дополнительные теги в head, $content - так ясно, $showAdminPanel - отобразить ли админ-панель

    Пишем основы.
    При наличии кука о авторизованности - пустим в админку,
    если нет :
    проверим, заполнял ли юзер форму (по наличию в $_POST логина)
    Если логин там - проверим его и вернем в начало с сообщением,
    если не заполнял - заставим smile

    Админка $action (типа быть или не быть) из $_GET или $_POST.
    Пока будут обрабатываться 4 варианта :


    • exec-command -выполнить консольную прогу и выдаст результат
    • exec-plugin - выполнит плагин (т.е. php - файл из папки /plugins)
    • plugins-list - список плагинов

    Вот код index.php

    Code

    <?php
      include "./settings.php";

      if($_COOKIE["autorizedFor$myName"]=="$cookieValue")
      {
      $action=$_GET['action'];

      $showAdminPanel=true;

      if(!$action)
      {$action=$_POST['action'];}

      switch($action)
      {
      case "exec-comand": {
      $comand=$_GET['command'];
      print_r($_GET);
      $res=`$comand`;
      $content="Результат выполненния команды $command : <div class=\"commandRes\">$res</div>";
      }
      break;
      case "exec-plugin": {
      $plugin=trim($_GET['plugin']);
      if(!strstr($plugin,'.'))
      {
      include "./plugins/$plugin.php";
      }
      }
      break;
      case "plugins-list": {
      $arr=scandir("./plugins");
      $content="Найдены следующие плагины :";
      foreach($arr as $value)
      {
      if(strstr($value,'.php')){
      $plugin_name=str_replace('.php','',$value);
      $content.="<a href=\"index.php?action=exec-plugin&plugin=$value\" class=\"pluginLink\">$value</a>";
      }
      }
      }
      break;
      }
      }
      else
      {
      if(!$_POST['login'])
      {
      $content="Вам необходимо войти в систему" .
      "<form action=\"index.php\" method=\"post\">" .
      "<table>".
      "<tr><td>Логин</td><td><input id=\"login\" name=\"login\" /></td></tr>".
      "<tr><td>Пароль</td><td><input id=\"password\" name=\"password\" type=\"password\" /></td></tr></table>".
      "<button value=\"OK\">OK</button>";
      }
      else
      {
      if(($_POST['login']==$adminName)&&($_POST['password']==$adminPass))
      {
      $my_headers="<meta http-equiv=\"Refresh\" content=\"0; url=index.php\">";
      $content="Вы успешно вошли в систему. Через несколько секунд будет проведена переадресация";
      setCookie("autorizedFor$myName",$cookieValue,time()+3600);
      }
      else{
      $my_headers="<meta http-equiv=\"Refresh\" content=\"0; url=index.php\">";
      $content="Вы ввели неверные данные. Через несколько секунд будет проведена переадресация";
      }
      }
      }

      include "design.php";
    ?>

    P.S. в плагинах рекомендую проверять $showAdminPanel, т.к. в противном случае, доступ к тому что творит план можно будет получить, просто открыв сам файл плагина

    Категория: Программирование | Добавил: alexKniaz (18.02.2010)
    Просмотров: 798 | Комментарии: 2 | Теги: удалённое администрирование, PHP | Рейтинг: 0.0/0
    Всего комментариев: 2
    2 Katherine  
    0
    BION I'm ipmressed! Cool post!

    1 alexKniaz  
    0
    было бы неплохо прикрутить выполнение последовательностей команд (типа bash - файлов) а также ведение логов команд, но пока нет никса под рукой для экспериментов с 1-м а второе и так не составит мне (и, надеюсь читателю) проблем

    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]

    Copyright MyCorp © 2025
    Конструктор сайтовuCoz