Итак. Мы напишем систему удалённого управления системой (при помощи PHP). Предполагается, что есть админ-суперпользователь (в раскладе, где я планирую юзать систему - именно так). В системе должны быть : возможность юзать консольные команды, подключть плагин (типа макроса или подобный), и т.д. Неплохо было бы оформить всё Ajax-ом, но пока лень. Хранить пароль админа будем в PHP файле : Code <?php $myName="5214343"; $cookieValue="hrff ffhdjd"; $adminName="afcjefghb"; $adminPass="r--089696439utj uj;'glpjn"; ?> т.к. в MySQL уязвимостей много. Да и напрягать слона из-за моськи не рекомендую. Пишем код. Хранение данных об авторизованности - как угодно, у мну в куках, но планирую исправить а то сессии без дела. Сперва будем поключать приведённый выше конфиг, в конце - 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 логина) Если логин там - проверим его и вернем в начало с сообщением, если не заполнял - заставим Админка $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, т.к. в противном случае, доступ к тому что творит план можно будет получить, просто открыв сам файл плагина
|