- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
$db = new sql_db($server_db, $user_db, $pass_db, $name_db);
$db->sql_query("SELECT * FROM `".$prefix."_global` WHERE `name`='global';");
$row = $db->sql_fetchrow();
define("LANGUAGE_ADMIN","{$row['language_admin']}");
define("MODUL_HOME_ADMIN","{$row['home_modul_adm']}");
define("THEMA_ADMIN","{$row['thema_admin']}");
require_once ("language/".LANGUAGE_ADMIN."/ind.php");
if(IN_ADMIN){
define("IN_ADMIN", TRUE);
if (!file_exists ("modules/".MODUL_HOME_ADMIN."/index.php"))
die (UNIT_NO_DEFAULT);
if (isset($_GET ['am'])){ $MODULES = $_GET ['am']; }
else { $MODULES = MODUL_HOME_ADMIN; }
if (file_exists ("modules/".$MODULES."/index.php")) {
require ("modules/".$MODULES."/index.php");
}
else{ echo UNIT_IS_NOT_FOUND; }
if (file_exists (Subject_file_path)) {
$TEMPLATES_SITE = file_get_contents(Subject_file_path);
}
else{
echo SUBJECTS_NOT;
}
require(Connect_funct_temp);
echo $COD_TEMP;
if(!check_user($UserID)) logout();
} else { require(Authorisation_file_path); }
Пишу CMS и просто интересно мнение... Код короткий, так как многое через define()
И очень интересно Ваше мнение по нему, зачем define(), чтобы человек первый встречный не наизменял там чего, чтото типа защита от ламера, НО от ЛАМЕРА только) Просто программер так всё поймёт...
Кароче я тут в первые, и поэтому я ХЗ чё вам сказать ещё))
А вот послушать советы буду очень рад! =)
Так и будет
но вообще это нормально -- молодые программисты должны начинать в определенный момент писать свою CMS (свой фреймворк, свою супер-библиотеку, свой STL) а потом выкидывать в помойку.
Так они получают опыт.
тоже, поработав в жабе-ее с тапестри5, и потом волею судеб вернувшись к пхп, стало не хватать тапестри5. перепробовав наиболее популярные фреймворки, мне они не понравились, решил написать свой. Дело оказалось нетривиальным, и не раз пришлось поломать голову над удовлетворительными решениями некоторых задач. Даже пару раз, было, бросал фреймворк, и пару раз переписывал с использованием других идей. В итоге оно таки родилось и показало неплохие результаты, чем доволен до сих пор.
И, извините, из нее не нахожу, чем обрадовать говнокод.ру = )
ибо насколько я понял говнокод либо лечит, либо калечит неисправимых вроде УебКилла
и луре оф каос
через год вы перестанете использовать пхп и займетесь программированием
+ я не предсказываю будущее именно потому там кейворд "возможно"
Забавнее смотреть на людей, которые уходили в java, или .net и пытаются потом принести в PHP collections framework например.
Я не предлагаю тратить человекогод на вылизывание системы, просто думать над архитектурой тоже нужно.
А что такое "класс работы с бд"? Data Access Object?
просто под эфемизмом "класс работы с базой данных" кто-то подразумевает класс абстракции от БД, а кто-то -- ООП обертку типа твоего sql_db (отличный кодстайл, кстати!!)))
В первом случае в нем есть смысл.
Во втором гораздно меньше
ну и конечно точки расширения
и что по-русскому за год в Вас? а по литературе?
минусуй таких, причем смело
а жена не будет плакать? )))))))
LOL
г. Сургут 33 микрарайон! Я от сюда. Номер телефона назвать!? Скажи мне это по телефону! Вы чё реально гоните!
LOL
а впрочем нет, не зря. нахлебаетесь, шишек набьете, тот же бесценный опыт.
хотя, как говорится, умный все же на чужих ошибках учится.
а иначе, как я, превратитесь в компового червя и наживете проблем на свое здоровье. Вам это надо?
сломаетесь
> жене размеется время уделяю
а как сломаетесь, не будет сил
Так что переделывать прийдется многое
>>запросы к БД из функции с бизнес-логикой.
Но оперирует она живыми данными -- в нее вшиты пути к файлам, которые она проверяет, в нее вшит SQL запрос итд.
Тоесть если ты решишь ее протестировать (покрыть ВСЕ возможные случаи) тебе прийдется создавать/удалять файлы, заполнять базу разными данными итд.
Если тебе где-то надо будет сделать такую же логику (но с другими файлами) -- ты скорее всего ее скопипастишь.
Так вот, логика должна быть чистой. Тогда ее легко будет переносить и тестировать.
Чуствую себя Капитаном Очевидность. почитай лучше про юнит-тесты, например) Обычно они сподвигают писать красиво
if(IN_ADMIN){
define("IN_ADMIN", TRUE);
}
И на кой использовать "{$varname}", когда достаточно просто $varname? (5, 6, 7 строки).
Через год сами поймёте, что весь этот кусок — ужас-ужас.
define("LANGUAGE_ADMIN","$row['language_admin']");
это я вас не понял. WTF?
это константа для работы админки, если фальсе то доступа нет...
Ну а в целом?
WTF по поводу того, что если константа уже определена, зачем пытаться её переопределить? А условие if(IN_ADMIN) подразумевает как раз то, что эта константа уже определена.
В целом с моей точки зрения плохо.
У вас уровень ошибок E_ALL стоит или E_NOTICE не выводятся?
Нужно искать и устранять причину ошибок, а не затыкать сообщения о них.
define("ИМЯ","ЗНАЧЕНИЕ"); - На что тут ругатся скажите? На константы? Почему локалка не ругалась? А если у них в php.ini чтото выключенно? И что тогда? Уходить с хостинга? Уж проще заткнуть. Но переппроверив всё сотню раз, под всеми ракурсами и углами.
Вам следует врубить в своем денвере все E_ALL.
Я вообще противник денвера, но это -- холивар
А вообще благодаря поделке котерова на свет родилась целая плеяда php-разработчиков, которые никгда в глаза не видели ни httpd.conf ни php.ini.
И это грустно
самое главное не быть самому таким = )
Вторая причина — то, что прописывается в пару строк в конфигурации при нормальной установке (отдельно веб-сервер, отдельно php, отдельно СУБД) в Денвере часто оборачивается непонятными танцами с бубном, причём прописывание «пары строк в конфигурации» уже перестаёт работать.
Как же изменился этот мир.
денвер автоматизирует работу.
Или вы скажете, что белье надо стирать руками, а не в стиральной машине?
2) Потом можно списать на флешку и год юзать (пока не прийдет время обновить): кстати, как там у денверов с обновлением?
3) Я не против ситуации, когда денвер юзает профи. Я против, когда ребенка сразу сажают на денвер, и он потом не понимает что такое "виртуальный хост".
2. очень неважно, недавно обновили пхп до 5.3, а 4ый все еще "скоро на экранах"
3. здесь полностью согласен.
о ДА ))))
первый шаг сделан....
я видел парней экранирующих абсолютно весь свой код try+пустыми catch(Exception ) или писавших в кажой функции в VB On Error Resume Next - досихпор смешно
агрументировавших - зато не падает нигде
а потом лазят и ищут почему в их переменную cmd1, к примеру, ниче не записалось.
А все потому что он написал c - русскую, привет 1Сникам!,а компилер схавал это как новую переменную
а еще лучше полностью изменить подход, вынести логически связанные части в классы и пользоваться class autoloading в духе Zend Framework. И будет у вас красивый, хорошо структурированный код. А то наклепаете такой ужас, что через месяц откроете для добавления плюшек и сами испугаетесь что-либо менять.
учимся, учимся... книжки, туториалы и чужие ошибки (исходники известных продуктов, фреймворков и цмс)
Сэтим тоже самое думаю будет))
Учусь учусь, и развиваюсь =)
CMS требует опыта и тщательной продумки, а вот по неопытности нагородите чуши, которой пока не видите, и будет у вас все криво и медленно, в конце концов забросите свой проект - потеряете силы, время, а может и веру в себя как программиста
Если вам нужен CMS позарез, возьмите готовую, которую разрабатывал не один программист и длительное время - стало быть, там большинство ошибок и неверных решений поменьше
Наверное, спросите меня, какую цмс взять? порекомендую http://cmsmadesimple.ru как наиболее понятную для пользователя среди самых популярных
1. Это своё, своё ближе к телу.
2. Это коласальный опыт, пусть я выпущу 10-20-30 версий, и каждая всё лучше... лучше... лучше... Так будет приходить опыт и знание... опыт и знание... опыт и знание... опыт и знание...... Я понимаю может странно, я понимаю что может и гавном занимаюсь по началу но я учусь) И спасибо большое тем кто подсказывает)
1. потешить свое самолюбие, мол, я крутой
2. реальные проекты на ней не встанут. А дотянуть до хорошего качества в одиночку вам сил и времени не хватит, она морально устареет к тому времени. надо набирать сообщество, кодеров, тестеров, дизайнеров и маркетологов )
гы)))) именно так и получаются говенные комерческие цмс, которые не нормально проектируются с нуля, а получаются как дописывание/переписывание говна
Я не тешу самолюбие, и делаю её для себя. А вот про проекты Вы зря, встанут, уже есть крупный заказ. И там нужна своя КМС...
1. опыта маловастенько
2. помощи ждать неоткуда, потому что никто в вашей цмс нихера не поймет, им-то свое "ближе к телу"
говорю не просто так, сам однажды напоролся
Дизайнеры есть, помошник программист хороший есть.
Я не тешу самолюбие, и делаю её для себя. А вот про проекты Вы зря, встанут, уже есть крупный заказ. И там нужна своя КМС...
кстати, поставьте там себе на будущее в программу изучения безопасность пхп-скриптов. Причем, не кидайтесь сразу в эту тему, наберитесь опыта в основах
> ...чтобы она была понятна даже тупому существу любопытному
тупое существо неспособно понять, ну скажем, преимущества ООП подхода, MVC-архитектуры и прочего, оно будет кричать "нахера тут так сложно!?", а макаронный говнокод, где свалено все в одну кучу, будет понимать кое-как
> более лаконичная и простая прога зачастую работает более производительней, чем мудреная
конечно, один таракан спрячется быстрее, чем полчище рассуется по углам, то есть, ПРОСТАЯ программа будет работать быстрее сложной, а СЛОЖНАЯ(более функциональная) вряд ли будет быстрее и понятнее хелловорлда.
Хотя, конечно, и простое можно сделать (через ж)сложно
Зачем? Чтоб над проектом работали тупые любопытные?
Как говаривал Эйнштейн, делай как можно проще, но не проще этого. А тупое существо и проще этого запросить может.
вот я как раз о том же. видать меня не поняли.
А еще "рефакторинг" Фаулера, про запахи кода, например про дублирование.
А то чуть-чуть писать научились и уже CMS.
вряд ли получится изобрести действительно что-то революционное
У меня уже готова защита, модули новости, страницы, конфигурации сайта и системы, конфигурации капчи... Есть класс работы с БД, и есть шаблонизатор, да пусть простой, но есть, шаблоны устанавливаются и прочее...
Тут дело в другом, зачем покупать трусы? У папы берите у брата, ведь уже есть готовое? Вы купите так как оно СВОЁ, а своё ближе к телу... Я пишу давненько, ЦМС пишу третий месяц, думаю о безопасности, и думаю о юзабилити, работаю с дизайнерами... Тут самое главное это коласальный опыт, у меня десятки проектов стоят на джумле, на вордпресе, на антисладе.... НО когда своё знаете оно своё как не крути...
К примеру когда я не знал что такое CRM, но написал, пришлось работа, написал взаимодействие с ней, а именно это поиск по критериям множественным... И опятьже нах я брался? НО взялся, написал и опыт получил, теперь знаю как...
Тут Вы понимаете о чём я)
А вообще лучше поглядите на демки Symfony, Ez Components, Doctrine
В приведенном тобой куске 30% копипасты
Если у вас есть ценная мысль,
Пейте чай.
Если после чаепития мысль осталась,
Вероятно, она имеет какую-либо ценность.
Однако,
Если вы выпили чая, а мысль осталась,
Возможно, вы просто не научились пить чай.
а существующее, возможно, тоже гениальное, надо изучать - неважно каким способом добыто
и думать, думать, что же у "всех" лучше, а что хуже
кстати гениальность зачастую гранчит с безумием.
вспомните Энштейна, ну кто бы мог подумать что масса и длина быстро двужущегося тела возрастают, а время замедляется
это ж абсурд и идиотизм с точки зрения житейской логики и ньютоновской механики
просыпаюсь в 3 ночи, жалею, что негде записать. Засыпаю вновь, приходит утро, и понимаю, что хорошо, что не записал ))))
Вообще джумла -- не лучший cms (как и бОльшая часть старых опенсорсных php цмсов).
Если после этого Вы еще не прокляли CMS -- это хороший CMS
диз легко меняется, делаем тему какую хотим.
написал первый модуль к нему - матерился. после 3его перестал. Но стал подумывать о форке
ul li {list-style-type: decimal;}
Усложняем задачу. Хочу сделать из них облако. Как облаго тагов. Мне надо сделать им float left, а вконце вставить распортку (clear:both): мерзко, но по другому это никак не решить.
Ваши действия?
а что мы делаем с sql запросом? копипастим туда?
У нас есть код, который выводит что-то из базы в UL / UL.
Я попросил добавить вконце этого UL див с clear:both.
Вы предлагаете мне написать новый модуль?
Вы сказали что можете полностью поменять дизайн, не трогая PHP код. Как видите -- тут это не реально.
верстун по этому массиву на шаблонизаторе (или на php) итерируется и выводит данные
Потому что потом тяжело будет html поменять.
Я уж не говорю, что это тестировать невозможно.
Как в ASP.NET хотя бы
в модулях аутпут полностью контролируется модулем, тут ты почти один на один с системой, если не считать, что до твоего аутпута еще что то выведут и после него тоже.
:) вот именно
А потом верстальщик должен с этим массивом делать что хочет.
Хоть улом, хоть таблицей хоть черте чем.
Конкретно этот плагин нужно будет переписать, что бы вместо ула вывести таблицу.
Этот плагин -- часть CMSа. Подозреваю что там 80% такого.
Тоесть полная смена дизайна сайта приведет к переписке половины PHP кода.
А если мы захотим сделать два скина (в одном таблица вдругом ул) -- прийдется пилить
я так сейчас навскидку не представляю, но, думаю, переделать не так уж много надо будет. хотя все равно, я не адвокат конкретной цмс, там тож говна хватает
а что бы сделать два скина -- надо сделать два одинаковых плагина с разным echo?
уфф)))
да я понимаю, что не Вы эту CMS писали, просто Вы ее привели в пример и я сразу же нашел в ней говнокод. Тыкнул неглядя
да там еще куча ньюансов. Например, хотим вставить на одну страницу два инстанса одного модуля. Допустим это модуль с кнопкой, при нажатии она изменяет цвет. Так вот, тыкаем в одну кнопку, изменяется цвет в двух.
Приходится городить костыли с сессиями и проч.
еще там есть экшены, которые в отдельных файлах, но как бы тело метода
причем этот метод должен многим функциям передавать параметры $id, $returnid (текущая страница, контейнер), которые сам получает параметр.
ага, я как то при знакомстве разработки затирал значение $id и передавал, потом долго удивлялся, почему не работает
Вообще я представляю идеальный CMS как дерево неких объектов. Каждый модуль может приписать какое-то действие к каждому объекту. Каждый объект так же имеет свой шаблон.
Каждый модуль пишет в дерево результата данные в некотором контракте, а автор шаблона эти контракты знает.
Допустим пользователь заходит по адресу
Система запускает все модули, подписанные (через файл конфигурации) на объект bar в папке foo (подписываться можно по кусочку пути или по типу объекта (каждый объект имеет свой тип) или еще по чему-то -- как в струтсе например): каждый модуль использует этот объкт как ключ.
Например модуль подсчета посетителей записывает, куда зашел пользователь.
А модуль вывода новостей находит подходящую новость, и пишет ее в дерево результата.
Допустим в xml:
Потом запускается шаблон (он может быть привязан через такой же точно файл, или по типу или еще как-то) и преобразует дерево-результат в выходной HTML (или rss или rtf или doc).
Шаблон может быть xslt. А может быть хоть смарти, но тогда дерево-результат это не xml , а массив хешей например.
Ну кроме этого CMSу нужен нормальный фреймворк, что бы не писать свои функции работы с базой, с деревом этим, с логами итд)
ну почти так уже и есть в моем фреймворке, только у меня не модуль, а компонент (тройка Обработчик,необязательный Обьект Данных и один или несколько Видов) - ему из запроса по урлу (в конфиге настроено, как разбирается этот урл) приходят параметры, и вызывается какое-то его событие, где он обновляет свои данные в базе(пока что только СУБД, но можно настроить драйвер и для хмл) и затем говорит что делать дальше - редирект по урлу(на другое событие) или указать Вид, который определит, как будет рендериться его вывод в иерархической структуре компонентов.
но это фреймворк, а нужны термины цмс: там, страницы, стили, темы и т.д. грубо говоря, как должна быть построена "админка" для управления содержанием без необходимости программирования, в стиле point-and-click
1. Функционал
2. Юзабилите
3. Шаблонизатор
4. Установка модулей и шаблонов без проблем. В 1 дейтвии.
5. Полная настройка и управление сайтом и админокй.
6. Безопасность админ панели.
7. Легко верстающие шаблоны....
Не это ли? Это у меня всё есть и сполна намного больше. Но вот ваше мнение, я там далеко не всё перечислил, я просто порой не могу понять, вот тут многие ахуенные программеры. Которые пишут всё но пользуются чужими системами. Почему??? И не понимая что нужно юзеру, за то понимая как должно всё выглядеть. Так? И это так, но что всё же по вашему КМС такое?
> )))
> хочу учится и буду учится
> коласальный
> ???
А ведь в старые добрые времена специально обученные вожатые не допускали того, чтобы каникулярная школота выбиралась за пределы территории лагеря и беспокоила окружающих, эх
мля, фраза из детсада, уж простите. имейте мужество сознаться, что повелись на примитивные выкрики
не вижу смысла тратить силы впустую на разрушение этих иллюзий, лучше эти силы потратить на великие дела = )
ну да ладно, сегодня вы чему-то научились. и не в только в программировании, но и в жизни = )
Что означает строчка в футере сайта этого? А сайт MZZ не пашет. Типа КМС? Поржал бы я с того, что если бы в системе той, попался гавно код. Гавно сайт про гавно код управляется гавно системой. Често пойду ка я помоюсь))))
а вообще, как говорится, в любом святом три килограмма говна
Умник это ИИСУС_ПХП
ИУДА мы те кто делает чтото не так, и при том что всё раблтает, и косяки не значительные.
Спать надо идти, с утра на работу, У нас пол третьего)))
спокойной ночи
{[448] && [189] && [408]} - Думаю бот не поймёт)))
Это говнокод, а не форум для нубов
мы так не любим кодообезьянок, так сократим же их популяцию! = )
Вы уже построили биореактор, кстати?
Возможно, вы таки разницу между codemonkey (быдлокодер) и говнокодером не понимаете. Первые неизлечимы. Поциент - первый.
В любом случае менторство лулзов не приносит и в интернетах полно более благодарных аудиторий для него.
Хотя, взглянув на православное окончание беседы, уже имею другие мысли...
на говнокоде есть куда боле заиндевелые товарищи, которым кроме кремации уже ничто не поможет.
С другой стороны нубов от PHP следует направлять на пхпклуб: там их ждет Фанат и его легендарное http://phpfaq.ru/na_tanke
Оптимизма не разделяю, поциент запросивший code review на ГК, но впавший в амок при виде реактивного говномёта - уже перешел тонкую грань между newb и noob (был зачетный comic strip про это, помнит кто-нибудь?), ∴ в будущем будет расти вширь за счет копипасты ЖПЛного кода; и покрываться волосами, естественно.
(одно сравнение с виошечкой - диагноз)
--Вот из клок?
--Сри о клок
--Сач мач!!
--Хум хау
--Мгимо финишд?
--Киев инъяз
--Дринк?
--аск!
А вообще забавно было бы устроить говнокодовку))))))))
ага, говносимпозиум, где каждый представит свои новые говнодостижения в области говнокода )))))
--КАК ТЫ ДАГАДАЛСЯ???777
правда на реформале и без форума много чего гораздо более простого досихпор не сделано,
да и придуманы коментарии для извлечения еще больших лулзов, а не для холиваров
лучше отдельный раздел
хуле
но иногда на говнокоде такое бывает, что нарошно не придумаешь
«блевал»
Цель поменьше себе выбрал? Вместо убийства - взлом, а вместо веба - локальная сеть? :D
Надо бы вывести аппроксимацию их появления с такими вот эпик-тредами
В какойто по юзабилити.
В какойто по коду.
В какойто по функционалу. У всех так. А так я и не услышал что по вашему CMS ктото орал что там надо фреймворк то сё. А ктонить знает что это:
СИСТЕМА УПРАВЛЕНИЯ САЙТОМ! ЁМАЁ! А значит 1 страница это сайт, второая страница добовляет в ту страницу текст, и это уже CMS, гавно правдо) Но всёже....
Запостил: nethak, 21 Июля 2010
Комментарии (205)
Я херею, а всеволиж спросил совета)))
Разделяю мнение о фроке вебкила (благо нейминг конвеншен схож, и незнания обширны). Хотя может быть это действительно пацан с 33 микрорайона сургута с десятками сайтов на джамуле под управлением icq 448 & 189 & 408.
лур оф хаос - оказасля нубофилом и cms-фагом.
итого ГК тот еще торт )
когда Уебкилл объявил о самоубийстве - я сразу вспомнил, что он пару недель назад обещал зарегатся под другим ником и тогда его перестанут минусовать.
Я ему еще тогда сказал, что мы тебя и под другим ником задетектим - твои глупости за километр слышно.
Будем ждать новых откровений в стиле математика - лженаука, Плутон не планета, а Вайн - не эмулятор )))
The name Wine derives from the recursive acronym Wine Is Not an Emulator. While the name sometimes appears in the forms WINE and wine, the project developers have agreed to standardize on the form Wine.
http://wiki.winehq.org/FAQ?action=recall&rev=217#head-8b4fbbe473bd0d51d936bcf298f5b7f0e8d25f2e
а Плутон в 2006 ученые исключили из списка планет.
но всем пох...
вайн реальне не эмулятор, а реверс-инженирная реализация win32api под никсы, нет?
в винде тоже есть подсистема posix (мааахонькая часть) -- это что, значит что в винде есть эмулятор юниха?
"Wine is not just an emulator" would be a more correct name.
а плутон реальне не планета, так что забей, это была шутка
Сначала Webkill, теперь nethak - закономерность очевидна. Кто следующий? WANddos?
Несмотря на то, что всем похуй на кусок грязного льда, находящийся в неимоверных ебенях - плутосрач был поистине великолепен. Более того, система Плутон-Харон никогда не была планетой (ни массой, ни орбитой не вышла), а МАС всего лишь принял новую классификацию объектов; однако у хомячков, старательно вызубривших 9 названий, сказочно разболелись попки.
Такого я еще не видел.
2) это литералом вшитое имя поля, в котором легко опечататься
3) это eval, потому это плохо.
http://govnokod.ru/3752#comment39715
Т.е. хакер может менять юзер агент хоть при каждом запросе, а вот сотни невиновных пользователей за натом обломаются (делаю такой вывод на основании того, что при очистке кук бан не снимается).
кстати, делаю вывод, что раз символы уже закодированы, то еще раз они не кодируются, а значит, можно получить доступ к любому файлу ))) вот и весь взлом
а что бы за хак мну взяли или могли бы взять за жопу, фигурно(!) выражаясь - не желаю
if(IN_ADMIN){
define("IN_ADMIN", TRUE);
......................
if(!defined("IN_ADMIN")) die("Запрещённое действие!");
Понятно? Тебе о чёмто говорит TRUE FALSE ???
if(!defined("IN_ADMIN")) die("Запрещённое действие!"); - это вообще детский сад, если быть честным. Напишите свой класс авторизации, сделайте его Singelton Pattern-ом и вызывайте его экземпляр везде, где это нужно. А городить глобальные константы.... даже и не знаю, как назвать... отдаёт началом 90х в стилях программирования
а по моему один из способов. у любого способа есть свои плюсы и свои минусы. Плюс этого подхода в том, что он прост и эффективен, а с авторизацией все равно придется писать логику подобно этой, типа <?php $auth=new Auth(); if(!$auth->logged()) $auth->redirectLogin(); ?> причем заметьте, обьем работы больше чем проверить существование константы.
между прочим во фреймворке Kohana (форк CodeIgniter) в каждом файлике встречается вот такое:
<?php defined('SYSPATH') or die('No direct script access.');
/**
* Wrapper for configuration arrays. Multiple configuration readers can be
* attached to allow loading configuration from files, database, etc.
*
* @package Kohana
* @category Configuration
* @author Kohana Team
* @copyright (c) 2009 Kohana Team
* @license http://kohanaphp.com/license
*/
class Kohana_Config {
....
И не надо $auth=new Auth(); Я же не зря упомянул сингл паттерн. Указанной конструкцией Вы каждый раз будите создавать новый экземпляр класса, а это для авторизации не подходит. Хотя, всё зависит от реализации класса. У меня же это выглядит так: if(Current_User::user()->admin); И всё (-: Правда это CI+Doctrine.
а ну да, в данном случае нужно использовать синглтон.
но в пхп он зачастую не нужен, потому что жизненный цикл скрипта очень короткий, как правило, даже без синглтона создастся не более одного экземпляра обьекта, а обеспечить долгую жизнь синглтону кроме как через какой нибудь memcached или подобное не удастся - для разных запросов будут отдельные синглтоны.
так? или я что-то пропустил в пхп-мире?
или у вас сustom session_handler?
(-:
а хорошо известные проекты... тоже пробуют, но редко успешно.
еще хорошо ломают сайты на известных движках, причем если где-то указано, на каком движке сделано. тогда достаточно найти уязвимость в движке - и автоматом можно ломать все сайты на этом движке.
и у него тоже есть недостатки:
апач ищет все конфиги .htaccess во всех папках, обрабатывает, и строит запутанную логику "что где можно?", которая и работает медленно, и создает нагрузку на сервак, и трудно отлаживать такую логику
если пришел урл, который недопустим для пути к папке (к примеру, /l0x/vote?1, или /file/1%2B2.html) он жоско обламывается еще ДО исполнения скрипта
кстати, с рутингами и ЧПУ намного понятнее разработка, чем без них
> это накладывает требование - сервак именно апач
А в том же nginx реврайты уже отменили? Пусть они и не в .htaccess задаются, но тем не менее...
Ахахаха, луре оф хаос тоже начал выделять каменты очередями.
Видите, дети, чем можно заразиться, занимаясь нуболожеством?
а вы против семантики?
дети, не слушайте дядю тролля, он вас плохому научит, будете злобными и пипка не отрастет
О семантической сортировки какашек я не подумал, простите...
утомляете меня своими бессмысленными выкриками, начинаю игнорить....
в любом случае, отключать мозги даж на короткое время опасно, не учиться и не адаптироваться - тоже опасно )
в авторизации ставим define("IN_ADMIN", TRUE); а отсюда убираем
и условие переписать if(defined("IN_ADMIN")) {
потому что вот мсье none указывает, что в оригинале, если IN_ADMIN была определена, то переопределение выдаст ворнинг, а если НЕ была определена, то до определения мы вообще не доберемся
Спасибо за понимание (-:
Когда ты пишешь функцию
function Её имя($Какаянить переменая) {
die('<H1>'.$ЭТА ЖЕ ПЕРЕМЕННАЯ! ТЫ понимаешь почему она .'</H1>');
}
Эта переменная определена ниже? А выше её нет. Неужели не понятно о чём речь?
А то что где же у нас FALSE константы IN_ADMIN так она в другом месте а не тут! Она уже в логике котороая проверяет админов!
$ЭТАЖЕПЕРЕМЕННАЯ - не определена
а если так:
function($var) {
echo($var);
}
она все равно определяется в function($var) еще ДО echo($var);
а у вас наоборот:
if($var==true) {
$var=true;
}
Кстати, это не понятно не только мне, если Вы заметили. Подобные записи, в бытность моего молодого студенчества, преподаватели бы даже не допустили к защите программы. Вам нравится писать _такое_ - пишите, Ваше право, но не называйте меня и всех вокруг глупыми и тупыми, которые не в состоянии оценить всю красоту и гениальность написанного. Это уже психическое расстройство.
И я всё равно не понимаю именно этих двух строк )))-:
if(!defined("IN_ADMIN")) die("Запрещённое действие!"); - это понимаю, хоть и не особо согласен
да понимать тут нечего - это кз в мозгах прогера было, вот и все. сначала, он начал писать ветку, если константа неопределена, но продолжил эту ветку писать, как буд-то она определена. Посмотрел, сам ничего не понял, но, цитирую, "ведь работает как-то!" - то есть стыдно и страшно свое же говно убирать
ну я тоже не любитель УСЛОВНЫХ(то ли она определена, то ли нет) констант, тогда как константа по сущности своей как бог - альфа и омега, едина
1. Она не даёт прямого вызова файла!
2. Проверяет SID пользователя с БД записью того пользователя.
Ёмаё стока вопросов потомучьто вы не видели системы
Иными словами эта строка не вызывает каких-то непоняток, нравится так делать - делайте. Вопрос был только об Истинной Истине.
Последний вопрос: что изменится, если убрать define("IN_ADMIN", TRUE); в этом кусочке кода:
if(IN_ADMIN){
define("IN_ADMIN", TRUE);
.....
}
Это видите? IN_ADMIN От куда оно там не подумали??? ВОТ ОТ СЮДА define("IN_ADMIN", TRUE); Определение константы вот и всё. Ребят если чтото не понимаете, CTR=F пишите мой ник, и читаете всё что я пишу...
Изменится что? Прямой доступ ко всем файлам системы.
Давайте сначала я предложу свой вариант, а потом Вы свой. Так вот: ЕСЛИ константа ИН_АДМИН существует и равна ИСТИНА, то определяем константу ИН_АДМИН как ИСТИНА.
P.S. Рискну предположить, что где-то ещё есть define("IN_ADMIN", TRUE); , иначе бы этот кусок кода if() никогда бы не выполнился.
Еще раз заикнетесь про то, что где то стоит проверка на прямой доступ - заигнорю.
Последний вопрос: что изменится, если убрать define("IN_ADMIN", TRUE); в этом кусочке кода:
Я пишу
ПИЗДЕЦ! ДА как что? if(!defined("IN_ADMIN")) die("Запрещённое действие!");
Это видите? IN_ADMIN От куда оно там не подумали??? ВОТ ОТ СЮДА define("IN_ADMIN", TRUE); Определение константы вот и всё. Ребят если чтото не понимаете, CTR=F пишите мой ник, и читаете всё что я пишу...
Изменится что? Прямой доступ ко всем файлам системы.
Ответить
Я ответил что будет.
это НЕ значит, что вообще НИГДЕ не нужен define
все, пока не усвоите, не продолжаю дискуссию.
смешно, ей богу. 2 строчки, а дискуссия на 100 комментов.
require("../configurations/system/authorisation.data.php");
require("../configurations/system/sql.data.php");
require_once("../configurations/classes/sql.class.php");
require("../configurations/functions/variable.cms.php");
Есть ещё другие файлы? Есть TRUE есть FALSE ну что не ясного? Мне вам что рассказть полностью что к чему и как работает система???
require("../configurations/system/authorisation.data.php");
И ещё множество нюансов!
Простой тест. Что выведут эти два куска кода:
1) if(const){
define("const", true);
echo "bla-bla";
}
2) if(const){
echo "bla-bla";
}
Если Вы этого не видите и не понимаете, то может и не стоит заниматься программированием?? Любой человек разумный бы тупо удалил дефайн в ифе за бессмысленностью и бестолковостью. Жаль, что Вы не понимаете даже того,что пишете. И запомните: константы потому и константы, что они определяются один раз и в одном месте. Обычно в файле конфигурации или инициализации.
1) if(const){ КОНСТАНТА const определена тут поздно тогда когда она либо раньше опреденена, либо будет ошибка.
2) if(const){ Тут всё верно если константа опредеоена до ифа.ю.
Ребят просто я ушёл на отдых, так заипался что туплю на ровном месте.
У меня так и есть, просто какогото хера я её 2 раза определил... И убрал уже, и всё хорошо) Спасибо)
Теперь я доволен окончанием дискуссии (-:
Приятного отдыха! (-:
P.S. сам вот только с моря пришёл (-:
упаси б-г увидеть такое :)
ебать вы олд
--Тут нет Винни, уважаемый, тут живет медведь Вениамин
--Ааа... а передайте ему тогда что заходил Кабан Полтинник
https://pbs.twimg.com/media/F5w1tlUWAAAq7KX?format=jpg&name=900x900
c
Оттого и пишу невпопад.
Я такой же, как вы, уёбок,
Потому не пойти ли вам в зад?
2. Вам уже говорили, что в объявлении константы уберите кавычки и сделайте не "красивый вид", а удобоваримый и которому eval не нужен: define('LANGUAGE_ADMIN', $row['language_admin']);
3. У вас совсем нет единого стиля в коде:
<?
if (isset($_GET ['am'])){ $MODULES = $_GET ['am']; }
else { $MODULES = MODUL_HOME_ADMIN; }
if (file_exists ("modules/".$MODULES."/index.php")) {
require ("modules/".$MODULES."/index.php");
}
?>
почему с одной стороны вы делаете перенос строки до и после фигурных скобок, а другой не делаете? Вам же потом в этом г..не разбираться.
3. Не объявляйте константы как попало (да и переменные не называйте так). Если у вас константы как принято - В ВЕРХНЕМ РЕГИСТРЕ,
4. MODUL_HOME_ADMIN - это что? МОДУЛ_ДОМАШНИЙ_АДМИН? не смешивайте транслит и английский язык.
ебать ты лох