Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
  • Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Веб [DLE] Продажа регионов WorldGuard

Метки:
Теги Теги
php uuid web
Код ужасен. Инъекции на каждом шагу. В общем, не рекомендовал бы я этот модуль ставить на свой сайт.
 
Я ожидал всякое но не это
Код:
if ($is_logged) {
    /* Админка */
    if($wgr_cfg['admin'] AND (in_array($wgr_cfg['group'], $wgr_cfg['groups']) OR in_array($username, $wgr_cfg['names'])) AND $_POST['token'] == $_SESSION['wg_token_poken'] AND !empty($_POST['token']) AND !empty($_SESSION['wg_token_poken'])){
        /* Добавление региона */
        if(isset($_POST['add_region']) ) {
      
            $picture = $_FILES['picture'];
            $name = $db->safesql($_POST['name']);
            $descr = $db->safesql($_POST['descr']);
            $name_region = $db->safesql($_POST['name_region']);
            $name_world = $db->safesql($_POST['name_world']);
            $price_g = abs($_POST['price_g']);
            $price_r = abs($_POST['price_r']);
            $max_file_size = 6*1024*1024; //Максимальный размер изображения 6 мб
            $stop = '';
            if($picture['size'] > $max_file_size)  {
                $stop .= 'Превышен размер изображения! ';
            }
            if($picture['type'] != 'image/gif' && $picture['type'] != 'image/jpeg' && $picture['type'] != 'image/png' && $picture['type'] != 'image/jpg') {
                $stop .= 'Разрешено загружать только изображения: png, gif, jpg, jpeg! ';
            }
            if(!is_uploaded_file($picture['tmp_name'])){
                $stop .= 'Ошибка загрузки изображения! '; //Изображение не найдено в временной папке. Возможно оно не было загружено
            }
            $sqlRegion = $db->query('SELECT * FROM `wgr_regions` WHERE `region` = "'.$name_region.'" AND `world` = "'.$name_world.'" AND `player` IS NULL');
            if($sqlRegion->num_rows){
                $stop .= 'Такой регион уже есть в продаже! ';
            }
            if($price_g == 0 AND $price_r == 0)  {
                $stop .= 'Должна быть указана, хоть одна цена!';
            }
            if (in_array(strtolower($name_region), $wgr_cfg['banlist'])) {
                $stop .= 'Продажа региона "'.$name_region.'" запрещена!';
            }
            if($wgr_cfg['method'] == 'wgmysql'){
                $sqlWG_world = $db->super_query("SELECT * FROM `{$wgr_cfg['wgmysql']['wg_world']}` WHERE `name` = '{$name_world}'");
                if(!$sqlWG_world['id']){
                    $stop .= 'Мир '.$name_world.' не найден в базе! ';
                }else{
                    $sqlWG_region = $db->super_query("SELECT * FROM `{$wgr_cfg['wgmysql']['wg_region']}` WHERE `id` = '{$name_region}' AND `world_id` = '{$sqlWG_world['id']}'");
                    if(!$sqlWG_region['id']){
                        $stop .= 'Регион '.$name_region.' не найден в мире '.$name_world.'! ';
                    }
                }
            }
            if(empty($stop)){
                $image_name = time().'_'.totranslit($name_region).'.jpg';
                move_uploaded_file($picture['tmp_name'], ROOT_DIR.'/'.$wgr_cfg['path'].'/'.$image_name);
                $db->query("INSERT INTO `wgr_regions` (`region`, `world`, `picture`, `name`, `descr`, `price_g`, `price_r`) VALUES ('{$name_region}', '{$name_world}', '{$image_name}', '{$name}', '{$descr}', '{$price_g}', '{$price_r}')");
                msgexit('Регион успешно добавлен!',true);
            }else{
                msgexit($stop);
            }
        }

Что-б я так жил
Код:
$soldSuccess = false;
        $stop = '';
        $id = abs($_POST['id']);
        $sqlRegion = $db->super_query('SELECT * FROM `wgr_regions` WHERE `id` = "' . $id . '" AND `player` IS NULL AND region IS NOT NULL');
Всем не угодишь.

Код ужасен. Инъекции на каждом шагу. В общем, не рекомендовал бы я этот модуль ставить на свой сайт.
Конкретней. Пока-что, это просто слова.
 
Не настолько. И где Вы там инъекции нашили? В DLE весь код подобным образом выглядит.

@max--2 использовал бы URL картинки без домена сайта (от корня).
PHP:
$tpl->set( '{wgr_url_image}', '/'.$wgr_cfg['path'].'/'.$data['picture'] );
Изначально делал от корня, а потом чет изменил. Завтра гляну.
 
Код ужасен. Инъекции на каждом шагу. В общем, не рекомендовал бы я этот модуль ставить на свой сайт.
Подскажи тогда человеку.А не гнобите,с таким же успехом я и тебя с ДВС усру. Так что пишите по делу а не срите.
Потому что сегодня он где то косякнул а завтра начнёшь косячить ты. Так что не будьте серой массой, выручайте друг друга. Сегодня его выручишь ты своим советом,а завтра глядишь и он тебе поможет.
 
Подскажи тогда человеку.А не гнобите,с таким же успехом я и тебя с ДВС усру. Так что пишите по делу а не срите.
Потому что сегодня он где то косякнул а завтра начнёшь косячить ты. Так что не будьте серой массой, выручайте друг друга. Сегодня его выручишь ты своим советом,а завтра глядишь и он тебе поможет.
Человек больше на тролля похож. Код может и ужасен, но практически на уровне DLE. Инъекций на каждом шагу точно нет.
 
Человек больше на тролля похож. Код может и ужасен, но практически на уровне DLE. Инъекций на каждом шагу точно нет.
Ну так а что мешает писать чистый и понятный код? Слабо понятно.
В некоторых функциях пришедшие POST параметры никак не экранируются и не проверяются на тип/значение. А значит, можно послать в базу что угодно.
Сохранять данные по регионам в кеш дле, чтобы не отправлять запросы каждый раз? Да нет, зачем оно нужно.
В общем так себе, но для рб пойдет.
 
Ну так а что мешает писать чистый и понятный код? Слабо понятно.
В некоторых функциях пришедшие POST параметры никак не экранируются и не проверяются на тип/значение. А значит, можно послать в базу что угодно.
Сохранять данные по регионам в кеш дле, чтобы не отправлять запросы каждый раз? Да нет, зачем оно нужно.
В общем так себе, но для рб пойдет.
А что мешает написать лучше и не обсырать других?
 
Ну так а что мешает писать чистый и понятный код? Слабо понятно.
В некоторых функциях пришедшие POST параметры никак не экранируются и не проверяются на тип/значение. А значит, можно послать в базу что угодно.
Сохранять данные по регионам в кеш дле, чтобы не отправлять запросы каждый раз? Да нет, зачем оно нужно.
В общем так себе, но для рб пойдет.
Покажи хоть один Post, который не экранируется и идет в запросе в базу. С кэшем возиться я вообще не хочу. Модуль запрашивает всего один запрос. Когда в дле, при обычной загрузке страницы их десятки.
 
Ээй ребят, хорош тапками бросаться. Вам и так этот модуль достался задаром.
Просто нужно его доработать. Вместо того чтобы критиковать код, лучше бы помогли исправить ошибки автора. Весь рубаккит был-бы благодарен...
 
Покажи хоть один Post, который не экранируется и идет в запросе в базу. С кэшем возиться я вообще не хочу. Модуль запрашивает всего один запрос. Когда в дле, при обычной загрузке страницы их десятки.
К примеру, удаление региона.
А что мешает написать лучше и не обсырать других?
А что мешает таким умникам не лезть в чужие разговоры?
 
Как поменять стиль продаж? как в изображениях!
 
Последнее редактирование:
К примеру, удаление региона.
Во первых это админка, не думаю, что админ будет сам себе делать инъекцию. Либо давать тем людям, которые будут этим заниматься. Но, это все равно не оправдание. И во вторых, чет я там инъекции не вижу.
Как поменять стиль продаж? как в изображениях!
Все есть в конфиге(20-24 строки). И цвет и стиль.
 
Во первых это админка, не думаю, что админ будет сам себе делать инъекцию. Либо давать тем людям, которые будут этим заниматься. Но, это все равно не оправдание. И во вторых, чет я там инъекции не вижу.

Все есть в конфиге(20-24 строки). И цвет и стиль.

В общем удачи в доработках. Советую где то прислушаться. В целом молодец, буду смотреть на новые.
По поводу - Отображение проданных регионов.
Может добавлять каждый проданный регион в базу. (может я что то не догоняю, конечно, но думаю это не сложно)
 
В общем удачи в доработках. Советую где то прислушаться. В целом молодец, буду смотреть на новые.
По поводу - Отображение проданных регионов.
Может добавлять каждый проданный регион в базу. (может я что то не догоняю, конечно, но думаю это не сложно)
Спасибо. Доработка будет.
 

Поделиться этой страницей

Назад
Верх