Форум - Устранена ошибка отображения имени пользователей в комментариях
Комментирует: Svet114
Группа: Постоялец клуба
24.06.2013 в 19:01:00
Сообщений: 19
После заполнгения поля для подачи объявления на сайте, после нажатия "Опубликовать", отображается пустая страница с надписью - "На эту страницу разрешен вход только зарегистрированным пользователям" Я - зарегистрированный пользователь..Но мое объявление так и не опубликовано..В чем дело?
Оставлять свои комментарии могут только зарегистрированные пользователи!
РЕГИСТРАЦИЯ занимает всего 1 минуту и введена с целью облегчить и ускорить работу пользователей.
Зарегистрировавшись на сайте, Вы получаете массу преимуществ:
1. Вам не нужно будет каждый раз писать свое имя при комментировании публикаций.
2. Уведомление об ответе в разделе Юридическая консультация прийдет на Ваш E-mail.
3. Вы сможете подписаться на любимые темы и следить за их развитием.
4. Вы сможете участвовать в конкурсах и получать призы.
5. Вы сможете переписываться с другими участниками сайта.
6. Вы получите доступ к закрытым ресурсам сайта.
И многое другое. Станьте участником нашего клуба, нажимайте РЕГИСТРАЦИЯ.
Автор темы:
Группа: Новичок клуба
2013-06-11 02:32:45
Сообщений:
Давно заметил следующую картину, иногда при добавлении комментариев от зарегистрированных пользователей не отображался логин пользователя. Или же отображался логин от предыдущего комментария. Наконец-то дошли руки, я разобрался и исправил данную ошибку. Подробности читайте далее.
Первым делом я подумал, что каким-то образом комментарий написал незарегистрированный пользователь, но при дальнейшей проверке я выяснил, что он не мог добавить комментарий, т.к. проверялась сессия на стороне сервера. Если пользователь авторизовался, т.е. зашел на сайт под своим логином и паролем, то в так называемую сессию записывались его данные. При открытии текста публикации шла проверка на наличие этой сессии с данными пользователя, если сессия присутствовала, то появлялась форма для написания комментария, если отсутствовала, - форма не показывалась и незарегистрированный пользователь не мог написать комментарий.
Оказывается, все дело было во времени существования сессии. Обычно на сервере время жизни сессии ограничено 30 минутами. Так, если пользователь долго читал публикацию, затем еще какое-то время писал комментарий, то проходило более 30 минут и сессия на сервере автоматически удалялась. Но форма то открыта, комментарий написан. Дальше обработчик, который добавлял комментарий в базу данных, брал номер пользователя из сессии, которая уже была удалено, т.е. номер он не получал, фактически добавляя в базу данных комментарий от пользователя без номера, т.е. анонима.
Поэтому, мной были предприняты следующие действия:
Во-первых, было увеличено время жизни сессии до 1 часа.
Во-вторых, перед добавлением комментария в БД идет проверка на наличие сессии, если сессия существует, определяется номер пользователя из нее и комментарий добавляется в базу данных. Если сессия не существует, то возможно, она истекла, поэтому проверяются так называемые куки (cookie) браузера, в которых с сервера также сохраняются данные пользователя. Если куки существуют, определяется номер пользователя и комментарий добавляется в базу данных, если не существует, то комментарий не добавляется, т.к. комментарии от анонимов нам больше не нужны. Пользователь может принудительно отключать куки своего браузера, но тогда он не сможет писать комментарии и открывать темы на форуме.
Стоит отметить, что все современные сайты, использующие регистрацию, обязательно требуют включенных куков в браузере. По умолчанию они всегда включены, поэтому пользователю не стоит менять те настройки, в которых он не разбирается.