@yii2ru

Страница 1302 из 1721
Виктор
31.05.2018
18:08:53
Даже, только хранение персональной информации обязывает иметь такого специалиста. На деле, на это конечно забивают, в лучшем случае все правильно на бумаге.

Slava
31.05.2018
19:59:52
Что за бред про безопасников)) при чем тут вообще компосер, особенно без лока?)

Roman
31.05.2018
20:21:48
Хочу посмотреть на СБ, которые оттслеживают каждый апдейт серьёзного npm пакета

Эмин
01.06.2018
01:54:15
Про композер без лок файла конечно отдельно улыбнуло. Сразу видно, специалист :)

Google
Eugene
01.06.2018
02:47:39
Ребята, подскажите пожалуйста, почему могут данные исчезать из базы, после того как я их сохранил? Это может быть как то с кодом связанно? Человек сделал запись на несколько дат вперед, а затем, спустя какое то время, этих данных в таблице не стало, осталось только одна из 4 сохраненных. В чем может быть дело?

Сохраняю просто: $model->validate(); $model->save();

при чем это проявляется не постоянно, а через раз, не знаю с чем связанно может быть?

Эмин
01.06.2018
03:50:39
слишком мало информации что бы ответить на ваш вопрос

конечно это может быть связано с кодом

и с самими данными, например не прошла валидация и модель не сохранилась

либо при сохранении упала база

либо у вас какой то крон очистил данные

да что угодно может быть :)

Максим
01.06.2018
04:09:42
У нас целый отдел изучает новые пакеты. Отдел безопасности
Где вы работаете, что так серьезно все поставлено?

Eugene
01.06.2018
04:18:06
да что угодно может быть :)
https://implode.io/zjznHG вот здесь я представил 3 функции которые у меня отвечают за сохранение данных в базу) один основной метод (внизу) и два выше, которые ему с этим помогают

Google
Максим
01.06.2018
04:28:06


Eugene
01.06.2018
04:28:26
А записи фактически в базе появлялись? То есть вы убедились что они есть а потом исчезли? Если какие то кроны, или может событие какое то следить не протухли ли записи и удаляет из
да, появлялись) при чем это срабатывает "иногда" сегодня вот появился, до этого не было такой проблемы несколько дней, перед затишьем еще пару раз проявлялось

данные по сути однородные, но почему то, то работает, то - нет. Мне говорят "исправляй", а я понятия не имею что не так

Грешу на вот эту строчку `$model::deleteAll(["FROM_UNIXTIME(cdate_int, '%Y')" => date("Y", $newsM->cdate_int), "day" => date('j', mktime(0, 0, 0, date('m', $newsM->cdate_int), date('d', $newsM->cdate_int), date('Y', $newsM->cdate_int)))]);"` она должна удалять все данные из таблицы за указанный, год этот делает mktime, но непонятно, как mktime может сделать несколько одинаковых дат, если я убрал и секунду и минуты и часы

Eugene
01.06.2018
04:49:45
В базе есть колонка с номером года?
нет, к сожалению, там только cdate_int где просто хранится время в timestamp

В базе есть колонка с номером года?
если создать такую колонку и использовать её для удаления, то это вероятно решит эту проблему?

Максим
01.06.2018
04:50:27
Как раз не надо такую колонку делать

Eugene
01.06.2018
04:50:34
Хорошо)

есть отдельные колонки для дня и месяца, но они повсюду используются и очень нужны

Максим
01.06.2018
04:51:03
Просто в метод передашь примерно так 2018 => 2018

Первый параметр зачем там нужен? У него ключом является не колонка, а ее значение

Eugene
01.06.2018
04:52:01
Максим
01.06.2018
04:52:51
"FROM_UNIXTIME(cdate_int, '%Y')" => date("Y", $newsM->cdate_int)

Эта часть

Странная конструкция как по мне)

Но по идее она просто года сравнивает, и если они не совпадают, то строки не затрагиваются

Eugene
01.06.2018
04:55:52
Но по идее она просто года сравнивает, и если они не совпадают, то строки не затрагиваются
ну да, в этом идея) мне нужен только конкретный год) это можно как то улучшить? извините за очевидные вопросы, просто мне в голову не приходит что можно тут исправить)

Google
Eugene
01.06.2018
04:59:04
Ну по идее этот запрос и удаляет все, что добавили перед этим. $newsM это что? Откуда берется?
$newsM = News::findOne(["id" => $id]); это запись из другой таблицы, ищет её по id

берет её время и удаляет запись)

А почему из другой таблицы? Интересно как

Максим
01.06.2018
05:00:09
А дату можно без mktime делать, например, date('Y-m-d 00:00:00', time())

А почему из другой таблицы? Интересно как
Так может в $model попадает другая модель, а не та, которую ожидаешь

Eugene
01.06.2018
05:01:44
Сейчас пофикшу, а то ерунда какая то

Максим
01.06.2018
05:02:55
Сейчас пофикшу, а то ерунда какая то
И в запросе лучше не вычислять дату, заранее ее в переменную запиши, MySQL кеширует запросы

Eugene
01.06.2018
05:03:06
А дату можно без mktime делать, например, date('Y-m-d 00:00:00', time())
не, нужна дата из базы, точная до секунд) а date мне такой точности не дает вроде)

Максим
01.06.2018
05:03:43
не, нужна дата из базы, точная до секунд) а date мне такой точности не дает вроде)
Так я вон пример написал, как получить ровно полночь

Зачем хранить даты в разных форматах чтобы их потом конвертировать)

Храни в timestamp тогда between можно делать проще или указать дату без часов минут и секунд

Максим
01.06.2018
05:09:06
Я про cdate_int

Виктор
01.06.2018
05:36:48
Сохраняю просто: $model->validate(); $model->save();
save сам вызывает валидацию. Естественно, если аргумент отмены валидации не передан в save

Eugene
01.06.2018
05:41:05
Я про cdate_int
https://implode.io/zjznHG переписал последнюю функцию, не могли бы Вы подсказать, есть какие то очевидные замечания там? Мб упустил что то

Eugene
01.06.2018
05:50:31
там просто несколько условий стоит)

Google
Виктор
01.06.2018
05:51:16
$newsM = News::findOne(["id" => $id]); Например

Eugene
01.06.2018
05:52:13
а, пустоту передать нельзя, на клиенте проверка стоит, если не выбрано ничего, то кнопку "сохранить" нельзя нажать)

Виктор
01.06.2018
05:53:34
А если 2 человека работает, один удалил, второй сохранил)

Все передалось, но записи уже нет)

Eugene
01.06.2018
06:00:33
Все передалось, но записи уже нет)
Чтобы бы Вы посоветовали в таком случае предпринять?

Максим
01.06.2018
06:01:13
Чтобы бы Вы посоветовали в таком случае предпринять?
проверять, нашлась ли запись, и если нашлась, только тогда производить какие то действия. Иначе будет ошибка

вот эта часть тоже вызывает вопросы public function editItems() { $editNews = Yii::$app->request->post('ThisDay'); foreach ($editNews["news_name"] as $year => $name) { $result[] = $name; } return $result; } что будет, если $editNews не массив или в нем нет элемента с ключом news_name

Максим
01.06.2018
06:03:44
всегда надо проверять данные перед использованием. Массив ли? если должно прийти число, сделай intval вместо $model = ThisDay::findOne(['id_news' => $id]); надо $id = intval($id); $model = ThisDay::findOne(['id_news' => $id]);

и в модели наверное не надо работать с реквестом. получай его в контроллере и передавай в модель. я про метод public function editItems()

Admin
ERROR: S client not available

Максим
01.06.2018
06:06:37
вместо public function editItems() { $editNews = Yii::$app->request->post('ThisDay'); foreach ($editNews["news_name"] as $year => $name) { $result[] = $name; } return $result; } лучше на мой взгляд будет public function editItems($editNews) { $result = []; if(is_array($editNews) && isset($editNews["news_name"])) { foreach ($editNews["news_name"] as $name) { $result[] = $name; } } return $result; }

соответственно, проверять в методе validateEdit() пришел ли пустой массив или нет

Eugene
01.06.2018
06:08:29
вот эта часть тоже вызывает вопросы public function editItems() { $editNews = Yii::$app->request->post('ThisDay'); foreach ($editNews["news_name"] as $year => $name) { $result[] = $name; } return $result; } что будет, если $editNews не массив или в нем нет элемента с ключом news_name
дело в том, что тут данные с представления "edit" в него нельзя попасть, если ты невыбрал хотя бы одну новость, соответсвенно, $editNews всегда массив, хотя бы с одной новостью и указанным ключом)

Максим
01.06.2018
06:09:12
жуликов хватает, надо все перепроверять и юзерам не доверять)

Eugene
01.06.2018
06:10:41
жуликов хватает, надо все перепроверять и юзерам не доверять)
это функционал для нашей админки, если кто то начнет таким заниматься, то получит по ушам уже лично от меня) но за советы огромное спасибо, сейчас исправлю все что смогу согласно Вашим рекомеднациям)

Константин
01.06.2018
06:11:43
Объясните пожалуйста что я сделал не так что у меня выводится такая ошибка? - PHP User Error – yii\base\ErrorException EditController module does not exist

Максим
01.06.2018
06:12:51
в тексте ошибки же написано. ищи где его подключал или где надо подключить, и подключи

Google
Константин
01.06.2018
06:15:22
Ну так я его не создавал никогда и сам его нигде не использую

in D:\OpenServer\OSPanel\domains\Yii2\vendor\ezyang\htmlpurifier\library\HTMLPurifier\HTMLModuleManager.php

Я его не подключал

Eugene
01.06.2018
06:19:06
Я его не подключал
глянь полный стек ошибок

Константин
01.06.2018
06:19:55
Это как?

Eugene
01.06.2018
06:20:09
Это как?
ты где эту ошибку получаешь?

Константин
01.06.2018
06:20:27
когда нажимаю Time

Memory

у меня просто один контроллер грузится непростительно долго

Eugene
01.06.2018
06:21:05
когда нажимаю Time
Очень понятно))

Константин
01.06.2018
06:21:14
Я пытаюсь выяснить причину



Максим
01.06.2018
06:22:28
162 милисекунды это совсем не долго

Константин
01.06.2018
06:22:40
тыркнул на значения 3 сек

Максим
01.06.2018
06:22:51
покажи код profile/update

Константин
01.06.2018
06:23:21
Это не он грузится долго

Максим
01.06.2018
06:24:13
Это не он грузится долго
ошибка вызвана на этом роуте, значит начинать надо с него

Константин
01.06.2018
06:24:15


Максим
01.06.2018
06:24:41
покажи весь скрин с ошибками, ниже прокрути

Константин
01.06.2018
06:25:26
https://pastebin.com/xDAjLzuz

Это код ProfileController



Так

Страница 1302 из 1721