• Безопасная аутентификая пользователей без сессий?

    ThunderCat
    @ThunderCat
    Александр,
    за исключением того, что токен могут увести.
    Еще раз - ВСЕ могут увести, все к чему может дотянуться яваскрипт (а он может дотянуться практически до всего что можно отправить в качестве ключа серверу) может быть скомпрометировано на стороне клиента. Это не ваша проблема, и это не проблема сервиса, по крайней мере если сервис обезопасил приложение от внешних вредоносных скриптов ЧЕРЕЗ САЙТ. Ничего не гарантирует защиты пользователя от действия третьих лиц, например левых плагинов в браузере, вирусов, подсмотренных паролей в браузере, просто тупо бумажки с логином и паролем на столе... Но все это не проблемы безопасности сервиса, это персональная защита данных, которую должен обеспечить пользователь самостоятельно. Все проблемы которые вы себе придумали (и в частности короткие сессии, которые кроме того что регулируются программно, еще и могут быть дублированы каким-то ключом в куках, как сделано на многих сайтах, где есть галочка "запомнить меня") в основном к вам как к разработчику никак не относятся.
  • Как сделать хлебные крошки на всех страницах кроме главной?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Юрий, спасибо, у меня своих поиграться 8 штук. Думаю предыдущий мой коммент вам подойдет как решение.
  • Как сделать хлебные крошки на всех страницах кроме главной?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Юрий, сложно работать с говносистемой.... Тогда просто проверяйте $_SERVER['REQUEST_URI'] на значения "" и "/".
  • Как сделать хлебные крошки на всех страницах кроме главной?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Юрий, ну вот и сравнивайте с null, или оно у вас везде выдает нулл? Учтите, что туда попадает конторллер не в самом начале, а только после срабатываения роутера и диспатчера (ну, если таковые есть вообще).
  • Безопасная аутентификая пользователей без сессий?

    ThunderCat
    @ThunderCat
    Александр, Прежде чем искать решение несуществующей проблемы, возможно стоит изучить в чем может быть проблема (и есть ли она вообще). А искать решение для проблемы которую озвучил ваш "очень крутой друг хакер из старшего класса", даже не разобравшись в вопросе, как минимум не зрело и не профессионально. Ну или к вопросу добавьте аргументацию - хочу сменить это на вот это, по тому что гладиолус...
  • Как сделать хлебные крошки на всех страницах кроме главной?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Юрий,
    Вывод только в каталоге (отслеживание по контролеру)
    <?php if(MG::get('controller')=="controllers_catalog"): ?>
    Этот текст будет выводиться на всех страницах каталога
    <?php endif; ?>

    Что мешает сделать var_dump(MG::get('controller')) на главной и проверять потом на соответствие этому значению?
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Сергей,
    подумайте, почему энтерпрайз до сих пор хардкодит в БД?
    По тому что это в большинстве случаев не так? Я как бы работал с несколькими конторами, поддерживающими весьма крупные проекты, в том числе на оракле + ява, и на С++ + МССкуль, никто уже давно не хранит код в процедурах. Во первых неудобно, во вторых сейчас многие системы имеют не одно хранилище, что делает размазывание кода еще больше при хранении кода в бд. Пару хранимок вполне нормально, там где критично быстродействие. Остальное в коде.

    есть приложения которые ПОЛНОСТЬЮ находятся в БД, а клиентское приложение наподобие браузера (тонкий клиент) в нем вообще никакой логики нет, кроме как XML в UI переводить.
    Есть, и тут имеет смысл хранить все в одном месте. Как бы логично. Но опять же, это не тот случай что у ТС.

    код пишут программисты БД и они вовсе не DBA
    Как ни странно, обычно это именно одно и то же, хотя конечно есть чисто программисты SQL, но в большинстве случаев все они стараются получить и ДБА сертификат. На моей памяти чисто прогеров эскуеля я не встречал, возможно это чисто местная специфика.

    В моей практике в 2 проектах было решено "хранить в процедурах". В первом случае - МССКУЛ (2005 год), от которого в итоге отказались в пользу мускуля, и все написанные процедуры пошли по бороде, и в итоге все легло в код. Второй - ЦРМ (2012), до сих пор жива, правда обслуживают ее ребята которые каждый раз при запрашиваемых изменениях от руководства вспоминают добрым словом нашего архитектора приложения. В общем - не удобно это, иногда оправдано, но поддержка в разы сложнее и геморнее.
  • Как загрузить файл и записать его имя в бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    viktorross,
    почему-то после удаления user_id из бд
    ээ, зачем? Просто можно было поставить его необязательным.
    скажите что в этих глобалах такого?
    Ничего в них, просто чистая/хорошая функция должна выдавать всегда одинаковый результат при любых входных параметрах, а когда она использует кучу глобальных переменных результат слабо предсказуем. Вроде я сказал что читать по этому поводу.
    И какую проверку сделать формам и как правильно?
    Валидация в php тема обширная, есть как нативные средства, так и более навороченные библиотеки.

    если так и оставлять дальше, что будет?
    Ничего не будет, прост со временем будет все сложнее все это обслуживать. Технический долг, легаси и вот это все...

    но id все равно не записывает никак,
    Так он туда не попадает, вам же уже объяснили, переменная $id НЕ ВИДНА ВНУТРИ ФУНКЦИИ. Если хотите чтобы она была видна - либо до использования добавьте ее в $this->id например, или же передайте ее в аргумент функции.
  • Не отображается изображения сгенерированный DOMPDF?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Во-первых - не надо писать дополнения в ОТВЕТ, напишите его отредактировав ВОПРОС
    Во-вторых
    В исходном варианте все отображается
    не понятно, что значит исходный вариант? Значит оно у вас работало? В чем разница с "неисходным" вариантом?
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Сергей Некий, Если честно - вообще не понимаю - о чем спор? 2 хранимки на проект где они реально нужны - без вопросов. Все остальное легко покрывается логикой ОРМ или запросами из репозиториев, буде таковые нужны в чистом виде и орм не справляется. Изначально вопрос стоял - "хранить все запросы в виде сторед или вынести в код?". Ответ - хранить в коде, так как не нужно каждый раз лезть в 2 места если логика меняется, не размазывается поведение на 2 аппликации, и все легко отслеживается в вершн контроле. Я по тому и писал что запросы покрывают 99% логики общения с бд. Сложные вещи, требующие логики в бд встречаются крайне редко, даже в крупных проектах.
  • Стоит ли хранить зашифрованные данные пользователя в Local/Session Storage на клиенте?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Денис,
    Опыт же приходит на основе проб и ошибок. Вы все делаете правильно?
    Нет конечно, просто подозреваю что у меня опыта немного больше, по этому с моей точки зрения ваше решение выглядит как плохо проанализированное, с замахом на оптимизацию и так хорошо работающего кода.

    Как по-Вашему сделать анализ если нет результата?
    Анализ он не всегда на основе результата, иногда просто логически надо подойти. Например подумать, "а как вася будет распоряжаться данными на локальной машине?" Основной принцип разработки в модели взаимодействия с клиентом - клиент всегда хитрая жопа, ищущая как вас... обмануть. И код соответственно пишется исходя из этого подхода.
  • Стоит ли хранить зашифрованные данные пользователя в Local/Session Storage на клиенте?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Денис, Во-первых - пожалуйста.
    Во-вторых - это была какография - намеренное искажение слова с целью эмоциональной окраски.
    В-третьих - вопросы преждевременной оптимизации уже оптимальных процессов и хранения данных, к модификации которых пользователь не должен иметь доступа на клиенте - это базовые вещи, хорошо что вы задумываетесь и спрашиваете хотя бы перед практической реализацией таких сомнительных практик, немного хуже что пока не умеете проводить самостоятельный анализ, но это уже больше с опытом приходит...
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Решение такой задачи проще вынести в хранимку и уже там ставить проверки и циклы, что не особо - то и трудно.
    Все что не особо то и трудно - легко пишется запросами без хранимок и не сильно при этом проседает. И все это в 99% в хранимках не нуждается. А все что реально сложно - не каждому по силам написать. Иначе профессия ДБА уже давно спукнулась бы. Молчу что есть специфичные вещи а-ля оракл и прочие экзотические вундервафли, где сложность такой задачи совсем другая, ибо специфику надо знать.
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Alex Wells,
    мы говорим о модели данных
    Кто это "мы" и где вы это прочитали? Разговор идет о MVC, именно в том что касается паттерна и роли Model в нем.

    Обычной тупой сущности.
    "Это дубли у нас п-п-ростые"(с). Все, что вы себе напридумывали - сугубо ваше личное дело, "модель это класс" - распространенное заблуждение, увы, часто реализуемое на практике.
  • Что такое DOM и как его понять?

    ThunderCat
    @ThunderCat Куратор тега HTML
    george_izot1, то есть по буквам оно у вас расшифровывается как "представление HTML-документа в виде дерева тегов"? Ну ок.
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Сергей Некий,
    Процедуры не только более быстры, но и более гибки.
    Чтобы продать что-нибудь ненужное, надо сначала купить что-нибудь ненужное, а у нас денег нет! (с) Это я к тому что чтобы процедура была реально гибкой и быстрой, нужно иметь нехилый скилл в чистом SQL и достаточно глубокие знания конкретной БД, чем не каждый ДБА может похвастаться. В случае переноса логики в код даже средний программист легко напишет логику выборки на ОРМ. То есть вместо 2 спецов с квалификацией выше среднего + средний, нужен один средний. Причем как для разработки, так и для поддержки.
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Олег, Мы такую много где видим, суть в том что для проекта в 3 странички и 2 таблички оно канает, но как только появляется хоть какая-то существенная внутренняя логика весь профит от простоты такого подхода теряется.
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Alex Wells,
    Модель вообще не должна быть никакой оберткой
    У вас какое-то усеченное понимание модели. Модель это не класс, модель это сущность. Модель может содержать достаточно много классов, в частности репозиторий - как часть модели.
    читать например тут
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Олег,
    При этом модель не тупая обертка над таблицей, а более интеллектуальная вещь.
    Сильно зависит. При несложной логике модели вполне себе может быть тупая обертка, ака AR.
  • Где вы храните запросы к базе в коде или используйте хранимые процедуры?

    ThunderCat
    @ThunderCat Куратор тега PHP
    Vitaliy K,
    В процедурах удобство в том, что не загромождается код проекта,
    угу, все загромождается в базе, в которой разберется только хороший ДБА. И если придется что-то менять - без отдельного спеца вообще не обойтись. Мочу о том что в итоге код все равно придется переписывать. Только теперь понадобится не один спец, а два. Ну и "загромождается" - слишком громко сказано, все достаточно хорошо структурируется на уровне репозитория и орм.