Предотвратить повторное сохранение

234
31 марта 2018, 17:42

Всем привет, есть админка и редактирование новости в котором принимает участие большое количество человек.

Когда человек заходит в новость и делает что-то и потом заходит еще один человек и вносит изменения и сохраняет, то у первого человека пропадут его изменения при сохранении новости.

Щас у меня есть скрытое поле с датой с последним обновлением новости:

<input type="hidden" value="$item->updated_at">

updated_at - это колонка обновления новости (дата) timestamp

В контроллере у меня проверка:

 if($item->updated_at != $this->request->get('updated_at'))
                exit('please enter on other time here');

Но это не работает, если страница обновляется, ибо если обновляется страница, то скрытое поле обновляется.

Как я могу вообще запретить входить в новость, если в ней уже кто-то сидит?

Answer 1

Чтобы заблокировать редактирование элемента, можно добавить ему свойство blocked. Либо создать отдельную таблицу с блокировками, где будет имя таблицы, id, время и кто заблокировал.

Важно сделать надежный функционал автоматического снятия блокировки, чтобы она не зависла. К примеру, в открытой вкладке нужно периодически пинговать и обновлять время блокировки, а по cron-у снимать блокировки у элементов, у которых вышел таймаут.

Также нужно реализовать возможность съема блокировки пользователем. К примеру, если человек забыл закрыть вкладку. Такая функция есть в CMS-ках, например WordPress.

READ ALSO
Как считать данные получнные по udp

Как считать данные получнные по udp

Получаю онлайн на сервере MINECRAFT PEНо не могу эти данные обработать и вывести , в чем проблема?

158
ajax PHP метод POST [требует правки]

ajax PHP метод POST [требует правки]

Не понимаю, почему не передаётся переменная id?

205
PHP, как получить изображение из ресурса?

PHP, как получить изображение из ресурса?

У меня есть код, который возвращает ресурс изображения видом imagepng($this->image)

219
Сделать Update двух таблиц

Сделать Update двух таблиц

Возник вопрос по обновлению данных в двух таблицах, вот функция

206