Делаем рекламу на MFS \”По стандартам программирования\”

В общем многие наверное знают что MFS – очень дырявый и плохо написанный скрипт, и это мы будем исправлять. Начнём с рекламыДля начала нам надо открыть файл advertise.php (В MFS 2.2) и после include(\’header.php\’); добавляем

    
#От прямого вызова константа
define ("SCRIN" , true);

Что мы этим делаем? Этим кодом мы объявляем константу, далее мы будем использовать её для проверки прямой у нас вызов файла или нет.

Далее мы ищем такую штуку


if($adv=='run') include('addrunblock.php');
if($adv=='spam') include('addspam.php');


И начинаем всё заменять
Для начала пишем

switch ($adv){

И далее заменяем строчки такого вида

if($adv=='run') include('addrunblock.php');


На такого вида

case 'run' : include('adv/addrunblock.php'); break;


Обязательно указываем что файл в папке adv
Так проделываем со всеми подключателями страниц, кроме того, где dyn.
В конце этого всего мы пишем

default : include('adv/adv.php'); break;
}


У меня на этом этапе получилось такое

switch($adv)
{
    case('dyn'): include('adv.php'); break;
        case('cat'):  include('addcatads.php'); break;
        case('frame'): include('addframeads.php'); break;
    case('dynb'): include('advb.php'); break;
    case('stat'):include('addstatlink.php'); break;
    case('banner'): include('addbanner.php'); break;
    case('minibanner'):  include('addminibanner.php'); break;
    case('chat'): include('addchatads.php'); break;
        case('dyn_mini'): include('adv_mini.php'); break;
    case('psevdo'): include('addpsevdo.php'); break;
    case('text'): include('addtextads.php'); break;
    case('top'):  include('addtoblock.php'); break;
        case('mail'):  include('addmails.php'); break;
        case('auto'):  include('advauto.php'); break;
        case('ygolok'):  include('addygolok.php'); break;
        case('serp'):  include('addserp.php'); break;
        case('massmails'):  include('addspam.php'); break;
        case('topbanner'): include('addtopbanner.php'); break;
    default: include('adv.php'); break;
}

После этого мы открываем каждый файл, для которого это делали и в самом начале каждого файла прописываем

if (! defined ( 'SCRIN' )) {
    die ( "Прямой вызов файла запрещён" );
}

Далее создаём папку adv и начинаем по очереди перемещать эти файлы в папку. Все файлы – файлы, которые мы редактировали кроме advertise.php

Что мы так сделали? Первое – это сделали подключатель разных видов рекламы через switch – что правильнее, чем говнокод, которые был ранее. Кроме этого мы сделали защиту от прямого вызова, что тоже является хорошей манерой.

В итоге у меня получилось что-то такое

Статью подготовил Scrin, все спасибо в репу или на кошелёк(в предыдущей статье он есть fellow )

0

Понравилась статья? Поделись в соц. сетях:

Похожие новости

Комментарии

  1. Цитата: ZICKFREED
    Честно говоря статья ниочём


    Опять всё не нравится. Артём вчера до <? дое*ался, а тебе мего исправление корявой штуки не нравится. Так кстати правильнее fellow

    Цитата: ZICKFREED
    Вот это уже что-то! Спасибо!


    плюсиков не вижу lol

    0
  2. решил блеснуть знаниями конструкции Switch\\Case???
    браво!

    а конст.SCRIN причем здесь? Если бы я открыл гавнокод и встретил такие названия переменных и констант, сжег бы в печи автора и код.

    0
  3. смысл защищать форму заказа от прямого инклуда???!!!
    от прямого инклуда я бы защитил например конфиг, файл функций(особенно из-за использования в них global)

    0
  4. Цитата: Forceman
    решил блеснуть знаниями конструкции Switch\\Case???
    браво!


    А то, серавно нечего делать да и на шопе новостей и так нет

    Цитата: Forceman
    а конст.SCRIN причем здесь? Если бы я открыл гавнокод и встретил такие названия переменных и констант, сжег бы в печи автора и код.


    для особо тугих написан коммент #От прямого вызова константа

    Цитата: ZICKFREED
    смысл защищать форму заказа от прямого инклуда???!!!


    Так правильно, артём придёт тебе лекцию прочитает wink

    Цитата: ZICKFREED
    от прямого инклуда я бы защитил например конфиг, файл функций(особенно из-за использования в них global)


    И ничего этого у тебя я не видел

    Цитата: zhenikdst
    Ништяк, сейчас плюсану, хоть кто то новость добавил.


    Это и была основная идея, главное не о чём писать а для чего. моя цель на сегодня достигнута wink

    0
  5. Цитата: VELIK505
    Если честно это гавно код. Пора переходить на контроллеры уже.


    Кому что wink Пока для буксов и так будет нормально, в скрипте ещё везде используются такие констуркции типа if ($a!='')

    0
  6. ZICKFREED, Прямой вызов файла из адресной строки, может повлечь за собой раскрытие путей. Любые файлы, которые подключаются в ходе работы скрипта, должны быть защищены. Можно таким способом, о котором написал Влад, а можно все инклюдируемые файлы поместить в отдельную директорию, в которую запретить доступ через http (через .htaccess).

    Вообще можно обойтись без if'ов, case'ов… Вот пример…

    0
  7. Цитата: ZICKFREED
    смысл защищать форму заказа от прямого инклуда???!!!


    это не от инклюда, а от прямого вызова. Если вызвать напрямую – скрипт начнём показывать кучу ошибок, а это уже потенциальная уязвимость

    0
  8. Цитата: Артём
    Прямой вызов файла из адресной строки, может повлечь за собой раскрытие путей.


    В том то всё и дело, если нормальный прогер делает свой движок, то как бы не вызывался файл всегда вылезет дефолтная страница, а лучше всего это создать тело и внутри него делать функционал

    0
  9. Forceman & ZICKFREED
    С*ка, с*ка так дружили!!

    Да наааах надо)) lol я не плюса ни минуса не поставил, ибо нейтрален.

    Если честно это гавно код. Пора переходить на контроллеры уже.


    Если я тебя понял, ты советуешь ему на контроллеры, модели и вьюхи (MVC) перевести букс))) Чума, но до этого дело дойдет как минимум года через 2, если вобще дойдет)

    это не от инклюда, а от прямого вызова. Если вызвать напрямую – скрипт начнём показывать кучу ошибок, а это уже потенциальная уязвимость

    Ты чего? Вобщето отображение ошибок вводится только в процессе разработки и отладки, а на Stable режим проекта эту аттрибуту отключают не то что в файле PHP error_reporting, а на сервере даже, тогда ни одной ошибки не увидишь.

    По крайней мере я свой сервер (VPS) так конфигурировал и бед не знал.

    0
  10. коменты не читал

    но VLAF KAK BIL EBLANOM, TAK IM I OSTALSYA

    вот интересно, зачем же константа, если можно файлы попереименовывать??))) или тебе выебнуться хотелось и в популярном мфсе расписаться?

    а в конце статьи убило "перенести все файлы в папку adv"

    и как же будет работать реклама с кодом в статье если файлы будут в отдельной папке?)

    короче ты либо бухой писал статейку, либо ты EBLAN

    0

Добавить комментарий

Авторизация
*
*
Регистрация
*
*
*
Генерация пароля