myagi
@myagi

Варианты реализации прочитанные/новые комментарии?

Задача — для пользователей разделять прочитанные и непрочитанные комментарии. Пример реализации — хабр.

Где хранить, кроме БД? Куки? В каком виде?
  • Вопрос задан
  • 3062 просмотра
Решения вопроса 1
taliban
@taliban
php программист
Сессию пишите в куки, данные храните на сервере в базе по этой сессии. Зайдет с другого места, потеряет текущие данные, получит новую сессию. Ничего страшного, клеймо конкретному человеку никак не поставите.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 7
Smileek
@Smileek
Куки — неправильный вариант. Если пользователь зашел с другого места, у него будут все сообщения непрочитанными, поэтому надо привязывать прочтение к юзеру, а не к компьютеру.

Таблица в БД user_id, topic_id, timestamp и ее обновление при заходе в тему. Первые два поля — составной ключ, или добавляете id записи — по вкусу.
Ответ написан
sajgak
@sajgak
без стореджа никак. При заходе выдавате юзеру печеньку и ее значение привязывайте к записи в хранилище.
Ответ написан
Комментировать
MpaK999
@MpaK999
Буду!
Только идти на компромис, если все не зарегистрированные, то значит зайдя с другого компа или браузера, у них снова все комменты будут непрочитанные, это первый компромис. Второй, если хотят менять компы и браузеры, пусть регистрируются. А иначе никак, ip может сменится, браузер и куки соотве-но тоже, привязать только к вводу им при входе на сайт своего паспорта :) или инн :)))
Ответ написан
Комментировать
painEffect
@painEffect
Записывать в кукис или в сессию id последнего прочтенного комментария. При следующем запросе непрочитанными будут те, у которых id > хранимого.
Ответ написан
Комментировать
myagi
@myagi Автор вопроса
С БД все понятно, хочется рассмотреть все кроме нее
Ответ написан
Комментировать
TheHorse
@TheHorse
Да можно и в куки. Один куки макс. 4 кб = инфа для 4096*8 комментов. + всего 20 куки записей. И того 4096*8*20*0.95 (всякие спец. символы) = 620 000 комментов можно хранить в куки.
1 — прочитано
0 — не прочитано.
Но это очень сложно, вплане — нужно определять какие биты к какому комменту относятся, сильный удар по трафику.
Если количество комментов зашкалит — беда.
Ответ написан
Stac
@Stac
О, тут специально для вас написали топик про Last-Modified .

У каждого комментария же есть timestamp. Браузер при запросе шлет заголовок If-Modified-Since.

Если смена компов пользователями это реальный сценарий, который хотите реализовать, есть половинчатое решение — возле комментариев ставить ссылку типа «это уже читал», коорая будет помечать прочитанными этот и все более ранние коменты. Т.о. пользователь восстановит свою историю чтения за один клик.

Правда, это не очень общепринятый метод, поэтому пользователей придется обучать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы