Отметить последние новости как ... "новые" - PullRequest
3 голосов
/ 25 ноября 2008

На некоторых веб-сайтах или форумах, на которые я обычно захожу, записи, которые я еще не читал, помечаются как «новые». Я хотел бы реализовать эту функцию на разработанном мной веб-сайте (время от времени публикуя новости) - php / mySQL. Как это обычно делается? Требуется ли использование файла cookie для запоминания даты / времени последнего посещения? Или последние просмотренные посты / URL? Как я могу идентифицировать пользователей?

Ответы [ 5 ]

3 голосов
/ 25 ноября 2008

Дополнительное примечание: это фактически дублирует функциональность браузера: (если вы используете фиксированные URL-адреса), браузер будет давать ссылки в посещаемых ссылках в другом стиле. Конечно, это сбросит, если вы очистите историю, но с другой стороны, решение, основанное только на файлах cookie, также будет очищено, если cookie будет удален (во многих браузерах есть функция «удалить личные данные», которая удаляет оба по умолчанию, обычно она сбрасывается при в то же время) ...

Этот сайт имеет фиксированные URL-адреса (для вопросов) и не устанавливает посещаемый цвет так же, как обычный цвет ссылки, поэтому вы можете видеть вопросы, которые вы посетили, по цвету ссылки.

РЕДАКТИРОВАТЬ: Вы также можете использовать CSS, чтобы добавить значок к посещенным ссылкам .

3 голосов
/ 25 ноября 2008

Cookies - это только один из возможных способов идентификации пользователя для сеанса или между посещениями для тех, кто не прошел аутентификацию. Хотя очень распространенный и полезный способ. (PHP также может использовать sid или другой параметр, хотя это больше не распространено.)

Вам необходимо сохранить, какие темы / сообщения прочитал пользователь, а какие нет. Вы можете подвести итог, прочитав все до 'date' или postId для определенных подфорумов.

Все зависит от расположения ваших форумов, постов и новостей, а также от того, насколько они динамичны. Вы также можете захотеть показывать только новые посты с момента последнего посещения, показывать новые посты, когда пользователь в данный момент находится на вашем сайте, а затем использовать новые посты с момента последнего посещения, если пользователь отсутствует более предварительно (x часов) / рассчитано ( y часов, если выходные, z часов, если администратор) время.

Редактировать: CSS для посещенных ссылок не поможет вам с новыми комментариями к новостям, новыми сообщениями в ветке, переходом непосредственно к первому непрочитанному сообщению или доступом к сайту на работе / в школе и дома.

0 голосов
/ 25 ноября 2008

Я делаю это так:

  • Если пользователь не имеет имени пользователя и не вошел в систему, то я не показываю новые элементы.
  • Если пользователь вошел в систему, и ему были показаны все элементы, тогда я сохраняю текущую дату / время в файле пользователя и использую это значение, чтобы определить, какие элементы являются новыми.
  • Если дата / время пользователя находятся в пределах последних десяти минут, тогда я не обновляю дату / время пользователя.

Вот мой код ...

function drawPage
    if (isLoggedIn) 
        get dbUser from database
        lastUserDateTime = dbUser.LastCommentTime
    else 
        lastUserDateTime = yesterdaye
    end if

    for each post
        get date of post 
        if post->date < lastUserDateTime mark it as new
        draw the post
    loop

    if (isLoggedIn) 
        if (lastUserDateTime + 10 mins) < now 
            dbUser.LastCommentTime = now
            update dbUser in database
        end if
    end if
end function
0 голосов
/ 25 ноября 2008

Вы можете сохранить фактическую дату последнего посещения в файле cookie или просто сохранить уникальный идентификатор этого человека в файле cookie и отслеживать, что они в последний раз читали в базе данных. Если вы сделаете последнее, вы можете позволить им войти в систему с одинаковым идентификатором в разных браузерах и при этом получить точное количество.

0 голосов
/ 25 ноября 2008

Cookie - это единственный надежный способ сделать это.

Я бы использовал cookie для хранения, когда пользователь последний раз посещал, но также имел бы разумное значение по умолчанию, скажем, 1 неделю, если cookie не существует.

Тогда покажите новое против вещей, более новых, чем эта дата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...