- 1
defined( '_VALID_MOS' ) or die( 'Пошел на хуй отсюдова ...' );
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+178.4
defined( '_VALID_MOS' ) or die( 'Пошел на хуй отсюдова ...' );
залез поправить шаблон и офигел, интересно как мог офигеть пользователь сайта
guest 12.03.2009 03:54 # 0
guest 12.03.2009 13:59 # +2
это пять))
guest 12.03.2009 14:02 # −4
Для таких случаев необходимо делать объекты типа exception, которые бы ловили все такие несанкционированные попытки доступа и централизованно редиректили на соответствующую форму. Бросьте читать учебники, где написаны решения с помощью die.
guest 12.03.2009 17:24 # +2
[quote=cheef]
Для таких случаев необходимо делать объекты типа exception
[/quote]
Думаешь в том коде вообще объекты есть? :)
guest 12.03.2009 23:42 # +6
ой, какие эксепшины
давай еще 20 строчек не нужного кода писать в каждом файле, чтоб просто запретить прямой доступ
поисковики там не лазят, а те кто залез пускай видят, в 99.8% это не обычный юзер
guest 12.03.2009 23:53 # +7
> делать объекты
вот именно из-за такого рассуждения и появляются километровые классы только чтоб перевести метку времени mysql в метку времени по европейскому стандарту, вместо 2 строчек
ей богу смешно, обьекты ))
guest 13.03.2009 18:34 # −2
без комментариев)))
хочу посмотреть на ваши скрипты в 1000 строчек - сразу размещайте их здесь, не стесняйтесь =)
guest 14.03.2009 19:56 # +5
говнокодом в этом случае как раз будет исключение, так как оно там нафиг не нужно, это либо нужно будет юзать require ибо писать в каждом файле)) твой "объект", что в любом случае уже говнокод и копипаст MVC архитектуре + еще ни о каком KISS принципе не может идти речи, к скрипту нет доступа прямого, все запросы идут через главный контроллер, нехрен по дирам лазить _куцхацкеры_, остальные скрипты подгружаются фабрикой
вот лучше вместо того чтобы тролить написал бы пример твоего чудо объекта и сразу бы объяснил как ты его будешь грузить в скрипт, если это require сразу и выкладывай сюда, посмеемся вместе))
guest 16.03.2009 01:10 # +3
Joomla 1.x
работал немного, сразу переменные в глаза бросаются =)
guest 16.03.2009 18:52 # −3
2xengin
Вы сами то читали, что написали?
В данном случае речь идёт об (программном) асбстрагировании метода показа ошибок, с сохранением пользовательской юзабилити в тоже время. В качестве реализации я предложил выделить объект - и это прекрасно работает. Но использование die в любом случае - плохой стиль.
guest 18.03.2009 00:38 # 0
2cheef
Я прекрасно понимаю что пишу))
Это вы видимо не совсем понимаете в каком контексте этот код используется, поэтому пишите ахинею.
В данном случае код используется правильно, так как все запросы идут через главный! index(контроллер) в корне. НО к скриптам которые подгружает фабрика не должно быть прямого доступа т.е. если пользователь обратится site.ru/module/name.php скрипт не должен исполнится поэтому вначале файла идет проверка константы _VALID_MOS которая определена только! в главном контроллере index.php в корне.
Проще говоря весь движок работает через index.php
Вот теперь объясните мне как вы запретите доступ к файлу site.ru/module/name.php ? Вам придется использовать require чтобы подключить обработчик запросов, либо копипастить код в каждый файл либо вынести каталог за дерево которое доступно из веб.
вариант 1,2 - в этом контексте уже говнокод
вариант 3 - не всегда доступен
guest 18.03.2009 00:43 # 0
2cheef
ну так наведите пример, неординарного решения :) быть может его начнут использовать
Чтобы когда я к примеру обратился по адресу site.ru/module/name.php т.е. к файлу он не исполнился и в тоже время чтобы не копипастить и не инклудить код в каждый файл.
guest 18.03.2009 21:13 # +6
Это скриптоложество, вот такое безобразие - site.ru/module/name.php
Точка доступа должна быть одна, и, кроме того, расположена в document root, в отличие от других скриптов, которые лежат вне её.
Все полезные запросы проходят через скрипт index.php, в котором инициализируется диспатчер, и распознаётся вызываемый урл. В соответствии ему инициализируется нужный контроллер и вызывается его метод.
Объект Exception досрочно завершает работу контроллера,вызывая установленный метод главного контроллера.. Это так сложно?
P.S. я не стану не правее если меня и дальше минусовть
guest 18.03.2009 22:57 # +3
2xengine,
Мне кажется, упоминание MVC совместно с "site.ru/module/name.php" - это кощунство.
идею фронтконтроллера вы вроде как объяснили, только не назвали. Фронтконтроллер грузит все объекты, есть autoload, в zf некоторые используют require_once. вот вы и подгрузили все объекты (а не в каждом файле)
с джумлой я дела не имел, но мне почему-то не кажется она супер совершенной системой. к тому же цмс
посмотрите на нормальные фреймворки, тот же symfony - есть там эксепшены. и в cakephp, и codeigniter, и в kohana
guest 19.03.2009 17:11 # 0
например http://govnokod.ru/741#comment2066
guest 19.03.2009 19:18 # 0
2недоТролль
Я с symfony работаю)) и с CodeIgniter тоже)) достаточно давно)) но это ведь не мешает мне знать строения других систем? :) и как раз в CI используется проверка константы, если вы не в курсе)) то в каждом файле есть if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Потому что папка system иногда лежит в публичном доступе.
Symfony рассчитан на VPS и даже в офф документации написано что папки со скриптами должны лежать за! деревом, а из паблика только главный контроллер доступен и все!
Тут речь совсем не об этом читайте комментарии лучше.
2cheef
Зачем вы мне строение рассказываете autoload-ов и т.д., если вам задал обычный вопрос совсем о другом?
- Есть к примеру шаблон который должен подгрузиться только через обработчик шаблона, и он лежит в папке public_html/template/menu.php
Вот придет _кулхацкер_ он не будет набирать site.ru/index.php?tratata=tratata а с ходу начнет лазит по дирам и открывать ваши скрипты site.ru/template/menu.php site.ru/template/header.php
и они будут исполняться если нет никакого блокиратора.
> Объект Exception досрочно завершает работу контроллера,вызывая установленный метод главного контроллера<
и опять эта ахинея, вы можете понять что ваш кон
guest 19.03.2009 19:28 # −1
*вы можете понять что ваш контроллер даже не исполниться так как он даже вызван не будет))
Тут ООП не повсеместно используется это старая Joomla!
Вы сначала скачайте посмотрите версию 1.0.x тогда будете писать о каких то эксепшинах, и нужны ли они там вообще.
> P.S. я не стану не правее если меня и дальше минусовть<
Минисую не я, да и вообще если бы это было настолько важно, можно и скрипт написать и запустить из tor-a, только кому это надо;)
guest 20.03.2009 01:41 # −3
Причём тут Joomla? =)
Я вам пишу как это делается по-людски, а вы мне пишете, что Joomla так не умеет. Лично я обсуждаю представленный кусок php кода, а вы? =)
guest 20.03.2009 19:53 # +1
Я тоже обсуждаю этот кусок кода, только я на него смотрю как использованный именно! в этом контексте.
Т.е. запрет на прямой доступ к файлу если к нему обратиться напрямую, не через контроллеры типа site.ru/index.php?mod=menu, а напрямую site.ru/template/menu.php
Вот я уже 3 раз задаю вопрос а вы мне так и не ответили, как вы будете запрещать прямой доступ к файлу? Учитывая что все скрипты лежат в паблик директории а не за деревом хоста.
guest 21.03.2009 23:26 # 0
guest 22.03.2009 01:55 # +1
2 xengine
то, что все скрипты лежат в паблик директори - это проблема как раз таки джумлы. и всё. они не должны там лежать, так что это замечание не относится к обсуждаемому куску кода
guest 23.03.2009 15:40 # −2
> Прямой доступ к файлу запрещается с помощью .htaccess
ну .. ну .. понадейся на хостера а потом без штанов ходи, особенно если это совдеповский хостер .. уж больно у нас любят ведение бизнеса по типу "если какие то проблемы лучше на дно уйти, а наши обязательства пускай клиенты сами решают"
я к тому что были прецеденты в похожей ситуации, поэтому я говорю что о секьюрити нужно думать в первую очередь разработчику
> это проблема как раз таки джумлы
согласен, но речь не об этом
я считаю что данное определение !не говкод! как заявил cheff со своим "обьектом" ))
ладно, тема себя исчерпала ... уходя, ухожу
guest 28.03.2009 08:04 # +7
без лишних иклюдов, ебатни и москоёпства.
И чё было огород городить?
guest 15.04.2009 14:51 # +1
[/quote]
а где exit или die после header()
guest 16.04.2009 14:38 # 0
Ну звиняйте, забыл написать, но суть не в этом, я хотел показать как проще всего определить обращаются к файлу напрямую, или через инклюд, а что вставлять между {} die header exit exception etc. это уже личное дело каждого;)