killer8080
27.12.2013 - 13:08
paul85
тут пассивная XSS
Цитата (paul85 @ 26.12.2013 - 21:42) |
$this->smarty->assign('request', $_GET['partnumber']); |
Цитата |
Под класс уже память выделена. |
Этот класс используется только в начале пути, при первом запуске сайта, при авторизации на прямую-через форму или куки. Все остальное - запрос в очень легкую таблицу бан/не бан, письма есть/писем нет.
Цитата |
Нет ни одного плюса кроме эфемерного "нельзя поменять". |
Я уже написал про ее видимость. Нет ни одного плюса, как то странно звучит.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
27.12.2013 - 13:12
Цитата (ABC @ 27.12.2013 - 09:09) |
Я уже написал про ее видимость. Нет ни одного плюса, как то странно звучит. |
Трактовка видимости глобальной константы как ее плюса - вот это странно, как по мне.
Цитата |
Это какое-то золотое правило, о котором я не слышал? |
ну не знаю, как у вас у меня вынужденный logout это крайне редкое и вынужденное событие, поэтому чего ему там еще можно показать? Ну можно что-то типа 404 страницы завернуть ну а для чего?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
glock18
27.12.2013 - 13:24
Цитата (ABC @ 27.12.2013 - 09:13) |
ну не знаю, как у вас у меня вынужденный logout это крайне редкое и вынужденное событие, поэтому чего ему там еще можно показать? Ну можно что-то типа 404 страницы завернуть ну а для чего? |
ммм, ну представьте себе ситуацию, что царь всея сайта админ/менеджер что-то сделал со страницей, настроил уникальный контент для зарегистрированных пользователей, и гостям хочет показывать другой контент. Для того, чтобы проверить это, он, конечно, по-вашему, может разлогиниться, затем дойти до нужной ему страницы с главной (вы, конечно, просто адрес скопируете, за что вам бонусный балл), увидеть что все ок, затем опять залогиниться, чтобы войти в админку.
Повторить нужное кол-во раз для каждой страницы или каждого изменения )) Очень, я думаю, он этому обрадуется.
Здорово, что у вас есть свой взгляд. Очень нездорово, что вы свой подход к разработке считаете конечной инстанцией, и совершенно не хотите слышать доводы "против". Любой довод "против" для таких, как вы - это фича, и совершенно нормальное "ограничение движка", с которыми нужно не просто мириться, но и считать их совершенно нормальными вещами.
Почему так?
Для админов можно просто сделать кнопочку, зайти под обычным смертным.
Цитата |
Очень нездорово, что вы свой подход к разработке считаете конечной инстанцией, и совершенно не хотите слышать доводы "против". Любой довод "против" для таких, как вы - это фича, и совершенно нормальное "ограничение движка", с которыми нужно не просто мириться, но и считать их совершенно нормальными вещами.
Почему так? |
Да я вообще не такой. Я благодаря "вам", на этом форуме в смысле форумчанам всему можно сказать научился и учусь.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Цитата |
Например контроллер AJAX у меня может вообще ничего не наследовать, если там, например, только JSON. И тогда как я пойму залогинен пользователь или нет? Если создавать экземпляр каждый раз, то можно рано или поздно начать создавать по несколько одинаковых объектов, что и вовсе ИМХО недопустимо. Городить singletone? Звучит тоже неубедительно...
|
Проверятее через класс автоидентификации,залогинен пользователь или нет.
Разделяем логику если мы не хотим чтобы AjaxController наследовал общии метода от BaseController
BaseController extends AbstractController
SearchController extends BaseController {}
AjaxController extends AbstractController {}
Цитата |
Зачем создавать класс, который будет вращаться вокруг проверки единственной переменной???
В чем такая вот выгода? В двух словах можно или если мне повеет, то осознание придет ко мне годами позже? |
В этом классe Вы реализуете методы проверок,а так же заполнения сессии.
В лучшем случаи заполнения модели Users
Модель Users никак не относится к авторизации.
Цитата |
Код 302, 301 это вообще-то относиться к HttpResponse нежели к ошибкам |
В идеале так и должно быть.
В Вашем проекте сейчас код слитный с процедурным подходом.
Без использования интерфейсов,абстрактных классов.
Вы не видите преимущества,в идеале Вы бы запихнули бы все в один файл или же использовали бы функции и процедуры.
В ООП много спорных реализаций,но это лишь на архитектурном уровне.
В Вашем примере это просто не понимания и не применение паттернов.
Вам нужно учиться проектировать архитектуру и научиться отделать то что будет меняться а что нет.
Разбивая все задачи на более маленькие,там самым создавая не зависимую систему.
Концепции и проектирование архитектуры тоже самая в любых проектов в любом языке (ООП) в том же java/C языках.
bestxp
27.12.2013 - 15:19
Цитата |
Вам нужно учиться проектировать архитектуру и научиться отделать то что будет меняться а что нет. Разбивая все задачи на более маленькие,там самым создавая не зависимую систему. |
Ну это точно не ко мне, проектировать научен уже достаточно давно
ps
любой говнокод если захотеть можно отрефакторить, будь там процедурный подход или какой либо другой, другой вопрос цена это ( время и количество новых фич которые можно сделать за это время )
Сталкивался с такой штукой, главное не увлекаться делать всё сразу круто xD
bestxp
27.12.2013 - 15:44
Цитата (MiksIr @ 27.12.2013 - 15:30) |
Цитата (bestxp @ 27.12.2013 - 15:19) | любой говнокод если захотеть можно отрефакторить, будь там процедурный подход или какой либо другой, другой вопрос цена это ( время и количество новых фич которые можно сделать за это время ) |
А рефакторинг не имеет отношения к новым фичам. Более того, если принимать рефакторинг, как мини изменения - то не каждый говнокод можно отрефакторить - там может быть такая сцепка, что одно обязательно потянет другое и т.п. Уже проще переписывать будет.
|
Это называется ацикличная зависимость, и когда ты запустил свой проект и перешел точку не возврата
glock18
27.12.2013 - 15:45
Цитата (bestxp @ 27.12.2013 - 11:44) |
Это называется ацикличная зависимость, и когда ты запустил свой проект и перешел точку не возврата |
И что, такой проект можно отрефакторить?
bestxp
27.12.2013 - 16:59
такого нельзя допускать , а не то что рефакторить
если менеджер или директор не дает на это время, гнать в шею таких
а объяснить это очень даже легко
glock18
27.12.2013 - 17:07
bestxp
Ну, вы сказали
Цитата (bestxp @ 27.12.2013 - 11:19) |
любой говнокод если захотеть можно отрефакторить |
Выходит, что так называемая ацикличная зависимость уже/еще не говнокод? Ябыназвал это говноподходом, но не вижу, почему она не говнокод. Речь ведь не о том, можно допускать это или нет. Кто-то кроме вас уже допустил, и не спросил разрешения
bestxp
27.12.2013 - 17:13
Даже ту зависимость можно разгрести, и мне приходилось разгребать, не переписывая с 0
но в итоге пройдя несколько шагов рефакторинга, это стало выглядлеть как заного написанное.
шаги простые на самом деле, даже у Фаулера в его "Рефакторинге" это прекрасно описано
только вот у многих так что "чукча не читатель, чукча писатель"
лучше скопипастить или наговнокодить, и потом еще раз, чем отрефакторить
paul85
27.12.2013 - 20:15
Цитата |
В Вашем примере это просто не понимания и не применение паттернов. |
Паттерны... Они имеют очень расплывчатое описание. Вот например:
class foo
{
public function getlocation()
{
echo "Location is foo";
}
}
class bar
{
public function getlocation()
{
echo "Location is bar";
}
}
class qwerty
{
static public function getinstance()
{
if($_SESSION['SomeVar']==1)
return new foo();
else
return new bar();
}
}
$obj = qwerty::getinstance();
$obj->getlocation;
Чего это за паттерн? Я точного описания не нашел... или это не паттерн? По крайне мере похож на фабрику... Можно в качестве шаблона наследовать интерфейс. Но нафига он нужен, если разработчик один и не страдая склерозом в состоянии упомнить 2-3 обязательных к реализации метода.
Цитата |
Разделяем логику если мы не хотим чтобы AjaxController наследовал общии метода от BaseController |
И так тоже пробовал. Грабли обнаружил когда контроллеру AJAX резко в одном из методов понадобился объект Smarty. А тот был, выражаясь данной терминологией, в BaseController'е. Поскольку AJAX наследовал Core, то соответствующего объекта там не было.
Оу, большое спасибо! Хотя современные браузеры такие вещи ловят, но заэкранировать совершенно не лишнее!
P.s. Посоветуйте книжку по паттернам. Желательно с примерами на PHP.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.