Лучший способ реализовать «запоминание» нескольких значений в веб-приложении - PullRequest
0 голосов
/ 20 мая 2009

На сайтах опросов пользователь (не авторизованный) может проголосовать по вопросу только один раз. Как веб-приложение «запоминает», что пользователь уже ответил на определенный вопрос?

Один из способов - установить cookie для каждого вопроса, на который она отвечает. Другой способ сохранить идентификатор вопроса в сеансе. мы могли бы также сохранить значение в БД вместе с идентификатором сессии.

есть ли другой способ сделать это?

Ответы [ 7 ]

1 голос
/ 20 мая 2009

Вы также можете попытаться сделать это по IP-адресу пользователя. Значение сохранить IP-адрес, который ответил на вопрос. Проблема с использованием сессии заключается в том, что пользователь всегда может очистить свой кеш / куки, а затем вернуться на свой сайт и проголосовать снова. Они также могут подделать свой IP-адрес, но это немного сложнее. Сочетание как хранения в сеансе, так и в вашей БД является наиболее надежным (и самым простым) способом IMO.

0 голосов
/ 20 мая 2009

Я проверил в поллэдди. Я очистил сеанс и куки, он все еще помнил мой выбор. Похоже, они используют IP-адрес

0 голосов
/ 20 мая 2009

Если я использую куки, я сохраню каждый идентификатор вопроса (и ответ) в отдельном куки? это будет означать много печенья, верно? скажи, если пользователь ответит на 50 или 100 вопросов, это будет много куки? это нормально?

0 голосов
/ 20 мая 2009

есть ли другой способ сделать это?

Нет. Конечно, нет хороших способов по крайней мере.

0 голосов
/ 20 мая 2009

Вы можете сохранить их ответы на сервере в файле XML (по одному на пользователя / ip /?). Вам все еще нужно иметь какую-то аутентификацию или способ связать пользователя с существующим файлом при запуске нового сеанса.

Надеюсь, это поможет,

Bill

0 голосов
/ 20 мая 2009

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

0 голосов
/ 20 мая 2009

Зависит от того, как долго вы должны помнить.

Решение для файлов cookie не будет работать для клиентов, которые не принимают файлы cookie.

Сохранение идентификаторов отвеченных вопросов в сеансе работает нормально, пока сеанс жив, но вы теряете память, когда сеанс признан недействительным или истекло время.

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

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