А должны быть. Может все таки не включен? Или у нас разные понятия о строгом режиме...
Prizma пишет:
Я хочу, чтобы экземпляр класса Product было невозможно создать, если продукт в базе не найден
1. Если есть класс с доступным конструктором как у вас, возможность создать экземпляр не пропадет.
2. У вас метод issetProduct не статичный, соответственно экземпляр вы создаете в любом случае, лишь с той разницей, что бросаете исключение если продукт не нашелся в БД. Не нужно себя обманывать. Кроме того, Product никак не должен брать на себя за подобную ответственность. Ничего не мешает сделать проверку по идентификатору вне Product и там же определить, надо ли создавать экземпляр.
Думаю, что вы используете не подходящий инструмент.
1. При включении строгого режима получите ошибку из за попытки передать в качестве параметра строку похожую на число для int параметра.
2. Если тип извлекаемых данных имеет значение, установите опции PDO::ATTR_EMULATE_PREPARES и PDO::ATTR_STRINGIFY_FETCHES в false, остальное PHP сделает за вас.
3. Код конечно же ужасен, но видно, чего вы хотите. В принципе LIME сказал чего гуглить. Но сходу все эти солиды и мапперы будет сложно понять. Ниже приведу более простую реализацию, для новичка в таких делах вполне сойдет.
Быть может вам известна ситуация когда ты застрял и не можешь сдвинуться с мертвой точки, такие люди меня поймут.
Известно. Нужно стараться проходить через это самостоятельно, искать ответ во всякой дыре, в подвале, чулане и прочих потемках. Так будет всегда при работе с незнакомыми технологиями, привыкайте.
imedia пишет:
Не могу понять почему выводится только шаблон, и вообще не могу найти инфы чем шаблон от вида отличается, быть может подскажите?
Шаблон это такой же экземпляр Zend\View\Model\ViewModel как и тот, что вы возвращаете из экшена. Только он создается не явно, а самим фреймворком. В контроллере доступен в качестве плагина layout, к которому вы и обращаетесь.
Это своего рода рутовый(root) view, к которому так же не явно как дочерний прицепляется экземпляр того ViewModel, который вы возвращаете из экшена.
Для рутового вью вы задали алиас шаблона layout/layout. Это означает, что в качестве повторяющегося шаблона будет использован тот файл, который соответствует записи layout/layout в конфиге. То есть __DIR__ . '/../view/layout/layout.phtml'.
Теперь, для того, что бы отобразить дочерний шаблон, нужно его отрендерить в родительском шаблоне(в файле, который соответствует layout/layout).
По умолчанию каждый экземпляр ViewModel имеет название content (в фреймворке именуется как captureTo). Используя это название, можно отрендерить соответствующую ViewModel.
Полагаю, что в файле, который является корневым шаблоном, просто не рендерится ViewModel. Напишите echo $this->content; в основом шаблоне.
Если ничего не изменится, то скорее всего armancho7777777 прав, ваш шаблон пуст. Ну или кто то поменял название по умолчанию для ViewModel. На всякий случай можно проверить, выполнив код var_dump($view->captureTo());
В принципе этой информации должно быть достаточно что бы решить проблему.
Более подробно о видах в ZF написано в официальной документации.
Может и сработает, а может и не сработает. Есть sandbox, есть отключенный javascript.
MiksIr пишет:
Или запрет серверу работать с определенным набором user-agent.
Не привык доверять подобным данным...
SAD
Срача тут нет, мы просто беседуем
Но в целом насчет стопа соглашусь, топ уже сильно напоминает кашу и мусолится почти одно и то же, только с разной формулировкой и легкими апдейтами))
Во-первых, то, о чем вы говорите - это clickjacking.
Почему сразу clickjacking и только он? Да, есть такое понятие и в данном контексте текущий вопрос очень напоминает clickjacking из за замазывания UI.
Обычно когда говорят о clickjacking, в качестве примеров обычно выступают просто click-и по ссылочкам, кнопочкам, а-ля лайки.
Хочу сказать, установленный в качестве защиты от CSRF токен в форме, не всегда может защитить. Надеюсь вы понимаете о чем я. Если кратко - то форма есть, токен есть, и дыра есть.
MiksIr пишет:
огромное число способов защит базируется на same origin policy и прочих способах защит
Да никто не спорит Я ведь уже говорил что верятность не такая большая, но тем не менее есть.
Задача атакующего - отправить под логином атакуемого те данные, которые ему выгодны и нужны.
И в чем вы заметили противоречие между моим вопросом и данным утверждением?
Все то же самое, только не автоматически.
MiksIr пишет:
А в случае csrf - атакующему нахрен не нужна форма загруженная с оригинального сайта.
Нет. CSRF не значит "атакующему нахрен не нужна форма".
Видимо просто у вас в подсознании отложился шаблонный вариант CSRF.
Вариантов, увы, вы так и не предложили. Точнее сказали про токены в форме, которые не являются решением проблемы, о которой шла речь. А наличие проблемы - признали
Читал. Кроме сообщений Мелкий - ничего вменяемого там нет.
Ну, я там тоже писал, в основном про гет токен... выходит по вашему мнению - это бред.
Тогда к вам такой вопрос,
Вы залогинены на каком нибудь сайте, там есть страничка, на страничке есть форма, которую видит только залогиненный.
Эта страничка подгружена через айфрейм на другом сайте. Айфрейм переодет, замазан стилями top документа так, что вы не узнаете эту страницу и заполняете форму и начисляете кому то деньги. Браузер старый, не понимает x frame options.
Как, по вашему мнению, можно предотвратить сохранение такой формы?
Хотелось бы получить профессиональный совет, который был бы лучше того, что я предложил. (Добавление)
DeepVarvar пишет:
Так сделай. Аргументируй. Выложи на гитхаб.
У меня на руках 3 проекта)) Как время появится, подумаю что можно сделать что бы улучшить этот вариант. Мыслей много, я не все выложил)) Либо воспользуюсь вариантом MiksIr, который возможно он предложит
Ну ок, у тебя тоже один раз кликнуть надо для получения токена.
Кликнуть куда? Что мешает при не валидном запросе не подставлять токен никуда?
DeepVarvar пишет:
Куку чужого домена браузер не отправит на левый сорц.
На своем сайте ты имеешь доступ только к своим кукам.
Ну да. Видимо я тебя неверно понял. Я вообще то говорил про XSS уязвимость на сайте жертвы а не на левом сайте и то только если нет httponly или есть но браузер допотопный
DeepVarvar пишет:
Или тролль в гостях у жертвы, или жертва потеряла смарт, или...
От этого уже не спасет ни мой реферер, ни твой токен.
Сегодня очень много общественных мест где есть выход в интернет и машины в таких местах зачастую общие. Те же инет клубы.