[шара] Админка для управление сервером Ява (хакерский вариант)
Требуется сервачек для тестов)
Пока бета-версия.
Описание:
Админка написана на php, позволяет управлять чарами, акками и вещами.
Вся админка это 1 файл, в нем конфиг и все нужные модули.
Админка не требует добавления чего-либо в базу, не требует картинок.
Системы защиты пока нет, есть обманный маневр. (в версии 0.2 уже есть защита)
при старте админки показывает левый текст и ссылки, нужно тыкнуть верную, что бы попасть в рабочую область.
Также можно относительно безболезненно сменить название файла админки (изменяем название файла и в конфигах об этом пишем.)
Внимательно прочтите конфиг в самом начале файла.
Beta 0.3
1.Исправил пару важных багов.
2.Немного переработал код.
3.Добавил логирование обращений к скрипту(уверен, что многим функция пригодится)
4.Теперь скрипт полностью совместим с базой сервера la2base interlude платная. (конфиг есть)
5.Возможно работает с русскими никами - нужно тестить. (на локальных тестах, все работает)
6.Возможно что-то еще - раз не помню, значит не важно.
_http://dump.ru/file/3178415
Beta 0.2
Добавил защиту по логину с паролем и IP
_http://dump.ru/file/3160075
Beta 0.1
скачать:
_http://dump.ru/file/3159928
Напиши мне, перетрём =)
PS: дома буду после 5 вечера по МСК.
Главная ошибка одится в полуметре от монитора...
axelll, проделаная работа большая, работает всё что ты написал.
Но я не могу не заметить тот факт что я тоже веб программист, и на что он смотрит когда видит чужие исходнки?
Первым делом на стиль кода.
axelll, не пойми меня не правельно, но почитай
_http://habrahabr.ru/blogs/php/38318/
Кому как не тебе знать о фильтрации данных?
Малоли что выдаст GET, и потом будет куча ошибок.
Поэтому простое и банальное mysql_real_escape_string в MySQL запросах никому не помешает.
DioNiR90: axelll, проделаная работа большая, работает всё что ты написал.
Но я не могу не заметить тот факт что я тоже веб программист, и на что он смотрит когда видит чужие исходнки?
Первым делом на стиль кода.
axelll, не пойми меня не правельно, но почитай
_http://habrahabr.ru/blogs/php/38318/
Кому как не тебе знать о фильтрации данных?
Малоли что выдаст GET, и потом будет куча ошибок.
Поэтому простое и банальное mysql_real_escape_string в MySQL запросах никому не помешает.
я не веб-программист, потому учусь на тех скриптах, что пишу.
по поводу стиля - если смотреть через блокнот - то бардак, если через прогу с которой работаю, все по стилю (ну практически), иначе просто нереально работать.
Фильтрация... пока сбоев не было, сколько тестил. о sql-инъекциях даж не волнуюсь, программа не того типа.
Но освоить mysql_real_escape_string конечно нужно.
а пока следующая версия.
Добавил защиту по ипу и паролю.
_http://dump.ru/file/3160075
Для новичка нормально.
Совет:
Переписать весь код в функции, а лучше в 1 единый класс.
Запускать функции или методы класса через диспетчер.
Разделить HTML от PHP в отдельные файлы.
Использовать типы boolean не как "1", "0", а true, false
Проверять boolean типы с помощью ===
И так далее...
Mangoost: Для новичка нормально.
Совет:
Переписать весь код в функции, а лучше в 1 единый класс.
Запускать функции или методы класса через диспетчер.
Разделить HTML от PHP в отдельные файлы.
Использовать типы boolean не как "1", "0", а true, false
Проверять boolean типы с помощью ===
1. код в функции это следующий этап развития )))
2. пока даж не представляю о чем ты.
3. вся суть админки в том, что это 1 файл.
4. почему именно boolean? какая тут необходимость?
5. см. п.4
boolean типы ты уже с опытом поймёшь для чего они нужны.
Пример:
У тебя есть какая то функция которая возвращает правду или лож.
как ты будет возвращать результат.
1. return false; return true;
2. return '0'; return '1';
3. return 0; return 1;
и проверка результата:
1. if ($result === true) { }, if ($result === false) { }
2. if ($result) { }, if (!$result) { }
3. if ($result == '0') { }, if ($result == '1') { }
Я конечно не сомневаюсь в твоих возможностях и даже поддерживаю так как не всякий разберется в таком количестве условий и обьема кода.
Аш на 1997 строк написал. ![]()
Mangoost: boolean типы ты уже с опытом поймёшь для чего они нужны.
Пример:
У тебя есть какая то функция которая возвращает правду или лож.
как ты будет возвращать результат.
1. return false; return true;
2. return '0'; return '1';
3. return 0; return 1;
и проверка результата:
1. if ($result === true) { }, if ($result === false) { }
2. if ($result) { }, if (!$result) { }
3. if ($result == '0') { }, if ($result == '1') { }
я так понимаю, это ради удобства кодера?
1 и 0 - вполне рабочие варианты.
покажи, как именно можно сделать функцию из какой-либо части моего кода.
Буду учится.
А что тебе мешает проверять это так:
Можно и так:
В ходе работы я не часто втречал чтобы так придерались к переменной используя 3 знака равно.
Я работаю через Notepa++ и многие разработки от разных разработчиков вижу хорошо и читабельном стиле.
От сюда я делаю вывод, что если я вижу не читабельный стиль, это уже не программа виновата в которой программист работает.
Но освоить mysql_real_escape_string конечно нужно.
Дело не в том что есть и чего нет.
Дело в том что может быть.
Пойми одно, малоли что взбредёт пользователю в голову, ты может знаешь или работал с такими людьми которые сами порой не понимают зачем они это делали.
Поэтому чтобы избавить их от всяких проблем и делаются лишние проверки и фильтрации.
Иммено поэтому перед выкладкой в шару, и надо так делать.
Еслиб сделал только для себя то тогда оно и не нужно.
//Диспетчер
function dispatch()
{
$action = (isset($_GET['action']) && trim($_GET['action']) != "")?$_GET['action']:'index';
//Что бы не мешалась
unset ($_GET['action']);
$funtion_name = 'action'.ucfirst($action);
//Проверяем на наличие функции
if (!function_exists($funtion_name))
{
//404
header('HTTP/1.1 404 File Not Found');
exit(' - 404 -');
}
else
//Вызываем функцию и передаем доп. параметры
call_user_func_array($funtion_name, $_GET);
}
//Функции
function actionIndex()
{
echo "Acton Index<br>
Params:<br>";
var_dump(func_get_args());
}
function actionTest($var1)
{
echo "Acton Test<br>
Params:<br>";
echo "var1: ".$var1;
}
//Запускаем диспетчер
dispatch();
Пример самого простого диспетчера
url/index.php?action=index&var1=value1
url/index.php?action=test&var1=value1
DARKDOG: axelll вроде не новенький, а темы не по шаблону создаешь...
да, ошибся.
не вижу, как именно исправить название темы.
L2Forgotten: Хм как им пользоваться ? Открваю большая надпись и всё !!!
прочти внимательнее описание
bigman3000: вместо руских ников "??????"
и ошибка
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ma/domains/ru/public_html/apache.php on line 1950
вот строка if ($clan[clan_name]=='') { $clan[clan_name]="-"; }
и ещё нада левл поднять до 85 а то в адмике можно поднять чару только до 78
1. Русские ники
выложи дамп таблицы characters (лучше в личку).
посмотрим, как именно реализовано.
2. с ошибкой разберусь в след. версии
3. до 85 сделаю в след. версии.
axelll,
По поводу ошибки, проверяй запросы на выполняемость.
Допустим есть код:
У тебя банально видно что если какая то ошибка то у тебя идёт дальнейшая работа с результатом, которого может не быть.
Правельнее записать запрос так:
Как увидел изменения в конце: die('Invalid query: ' . mysql_error());
В случае ошибки выведется сама ошибка а скрипт приостановится.
Тогда не будет подобных ошибок как у тебя.
Русские ники это потому что кодировка в Мускуле кривая, после подключения к мускулу надо выполнять такой запрос:
DioNiR90: axelll,
По поводу ошибки, проверяй запросы на выполняемость.
Допустим есть код:Код$check = mysql_query("SELECT $obj_id_char_conf FROM characters WHERE char_name ='$name'");
У тебя банально видно что если какая то ошибка то у тебя идёт дальнейшая работа с результатом, которого может не быть.
Правельнее записать запрос так:Код$check = mysql_query("SELECT $obj_id_char_conf FROM characters WHERE char_name ='$name'")die('Invalid query: ' . mysql_error());
Как увидел изменения в конце: die('Invalid query: ' . mysql_error());
В случае ошибки выведется сама ошибка а скрипт приостановится.
Тогда не будет подобных ошибок как у тебя.
Русские ники это потому что кодировка в Мускуле кривая, после подключения к мускулу надо выполнять такой запрос:Кодmysql_query("SET NAMES 'cp1251'")die('Invalid query: ' . mysql_error());
да это все понятно. я исправил иначе - сделал проверку перед запросом.
хотя и твой вариант тоже нужен.





