(;¬_¬)
и оно останавливается, а он это не замечает
(;¬_¬)
я с таким как-то обжегся
(;¬_¬)
два шторма открыл
(;¬_¬)
в одном включен дебаг был, в другом нет
(;¬_¬)
и приложение подвисает, а я не понимаю почему
(;¬_¬)
а шторм с дебагом брал и останавливался сразу, потому что не было маппинга директорий
Pavel
и заменил на goHome тоже самое
Максим
и заменил на goHome тоже самое
может метод $model->generateTolen() ничего не возвращает?
Pavel
возвращет
Максим
по ходу тут и косяк
Максим
зацикливается функция
Pavel
а что не так?
(;¬_¬)
ты из функции себя вызываешь
Максим
ты в нее заходишь генеришь строку, и возвращаешь не строку, а опять ту же функцию вызываешь, поскольку токен оно сохраняет позже
(;¬_¬)
рекурсия называется
Максим
и у тебя по кругу крутится, до сохранения токена не доходит, благодаря которому возвращается строка, а не вызывается рекурсия
Pavel
понятно то есть мне не нужно вызывать функцию
Pavel
а нужно вызвать Tii::$app->getSecurity
Максим
просто возвращай строку return $randomString;
Максим
не надо проверять ничего
Pavel
не надо проверять ничего
а проверять что бы токены одинаковыми не ыбли
Максим
они не будут одинаковыми, там слишком много вариантов
Максим
вряд ли у тебя миллиарды пользователей, которые каждую секунду по 10 раз пароль восстанавливают
Максим
подлинней строку тогда бери, если боишься дублей
Pavel
нет
Pavel
но ведь лучше всегда проверить
Pavel
нету способа безопасной проверки
Максим
просто возвращай тут строку, а проверку делай в экшене контроллера
Максим
и у тебя наоборот функция работает. у тебя генерится токен, он проверяется на уникальность, если такой есть, то возвращает, а должна быть генерация нового
Pavel
справедливо, еще я заметил у меня почему-то не стоит === null
Максим
ретурны местами поменяй и все будет ок
Pavel
точно вот я имбецил
Максим
если ты правильно пишешь слово "имбецил", то ты точно не имбецил)
Максим
и ставь фигурные скобки всегда, даже если в if else одно действие)
Pavel
все записалось в базу
Pavel
и ставь фигурные скобки всегда, даже если в if else одно действие)
я знаю, эту функцию скопировал откуда-то и не проверил
Максим
а то потом надо будет добавить что то в else перед return, и перестанет правильно работать метод
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
рекурсия называется
Для нее отдельная ошибка, предел вложенных функций или как-то так
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
что-то вроде Fatal error: Maximum function nesting level of '100' reached, aborting!
☕️ 𝕽𝖔𝖈𝖐𝖊𝖙𝕽𝖆𝖈𝖈𝖔𝖔𝖓
а таймаут можно поймать рекурсиво создавая сущности к примеру, когда где-то в afterSave сохраняется текущая AR или AR которая в afterSave сохраняет текущую) как следствие after* и before* зло
Артём
Я только знакомлюсь с yii2 и по этому не уверен косяк это или нет. Но если создать форму ActiveForm с fileinput. Открыть ее в браузере. А после, не перезагружая страницу задать, rules чтобы только картинки можно было загружать [['file'], 'file', 'extensions' => 'jpg']. И Далее выбрать php файл и отправить, тогда файл загрузится без каких либо проблем. А если перезагрузить страницу, то валидация произовидтся только на клиентской стороне
Максим
в экземпляре хранятся рулсы по идее
Артём
а сам 'extensions' => 'jpg' проверяет на сервере файл или он для килиента только?
The Ant
на сервере
The Ant
и на клиенте, если включена клиентская валидация (по умолчанию включена)
Максим
на клиенте она для наглядности и чтобы лишний раз сервак не грузить, основная на сервере. ведь на клиенте можно как угодно JS поменять и отправить что угодно в форме
The Ant
нада смореть что конкретно ты там валидируешь и как правила написаны
The Ant
для картинок отдельный валидатор есть
Артём
с отключенным js так же загружает php-файл
Артём
лол проверьте у себя, а то это ж ппц что будет
The Ant
загрузит он что угодно, вопрос пропустит ли
Максим
с отключенным js так же загружает php-файл
а сохраняет его после валидации?
Артём
ну вот у меня появился файл в папке с картинками 123.php
Максим
код покажи
The Ant
без кода сложно сказать что у тебя не так )
Артём
if($form->load(Yii::$app->request->post()) && $form->validate()) { $name = Html::encode($form->name); $email = Html::encode($form->email); $form->file = UploadedFile::getInstance($form, 'file'); $form->file->saveAs('uploads/'.$form->file->baseName.'.'.$form->file->extension); }
The Ant
файл не валидируется тут
Артём
код не мой, разбираюсь что да как. А так валидация на верху же вроде
The Ant
$form = new Form(); $form->file = UploadedFile::getInstance($form, 'file'); if($form->load(Yii::$app->request->post()) && $form->validate()) { гавно канешь выглядит, но примерно так это и работает. До валидации в форму файл заслать. http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html#wiring-up
Артём
а в случае если файл не пройдет он удалится?
Максим
да, он в tmp хранилище, после завершения работы скрипта удаляется
The Ant
да, он в tmp хранилище, после завершения работы скрипта удаляется
при условии что с ним никаких манипуляций ручных небыло )
The Ant
переименовал там, или время изменил. в таком случае до ручного удаления останется там
Артём
а параметры обычно этим фильтруются Html::encode ? От xss, sql-inj и прочего или другие методы есть?
The Ant
нет
The Ant
если через эктив рекордс сохраняешь то экранируются
The Ant
в ином случае лучше плейсхолдеры использовать
The Ant
The Ant
хатя хз конечно, но спрячешь в контроллере пидерсию ;D
Максим
может лучше в beforeValidate?
The Ant
м.б. )
Kirill
Всем привет
Kirill
Почему транзакция может не открываться?
Kirill
$transaction = Yii::$app->db->beginTransaction(); Yii::$app->db->createCommand('DELETE FROM profiles WHERE id = 1000')->execute(); $transaction->rollBack();