2014-10-07 3 views
1

Существует множество тем, рассказывающих о том, как реализовать простую систему отзывов пользователей/флэш-сообщений, чтобы сообщать информацию пользователям, например «неверный пароль», «сохраненные настройки», «новая тема» " и так далее. Это довольно просто с использованиемСоздание надежной системы сообщений Flash/Feedback

$_SESSION['message'] = "feedback message"; 

И затем извлечение этого ключа сеанса на следующей, перенаправленной странице. Тем не менее, рассмотрим следующий сценарий: пользователь отправляет новую нить к website.com/philosophy, но он не капчу и после обработки формы он сохраняет

$_SESSION['message'] = "Invalid captcha"; 

И начинает перенаправлять пользователя на website.com/философия, где он пытался опубликовать сообщение. Теперь представьте, что сервер или его соединение немного отстают во время этого перенаправления, а пользователь тем временем открывает сайт.com/philosophy в другом браузере TAB. Теперь там отображается «недопустимый код», когда он должен отображаться только на вкладке, работающей с перенаправлением.

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

+0

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

+0

Как основные системы (Symfony, Cake, Slim и т. Д.) Справляются с этой проблемой в своих системах обмена мгновенными сообщениями? Или они вообще? – alexw

ответ

0

Учитывая отсутствие ответов, я скажу, что лучшая идея, которую я мог бы придумать.

Я сделаю флеш-сообщение как на основе времени, так и на основе страницы, а не просто на основе страниц.

В этом случае, если пользователь создает новую тему на сайте website.com/philosophy, и он обновляет несколько экранов website.com/philosophy, он получит сообщение, говорящее обо всех них, а не только 1, для короткий срок действия, и даже может стекать сообщения, поэтому, если он попытается дважды отправить сообщение с сайта website.com/philosophy, и оба они потерпели неудачу, он получил два сообщения, которые не были обработаны двумя postemps, вместо того, чтобы рисковать тем, что сообщения действительно были заменены на разные сообщения (что может произойти, если перенаправление первого сообщения заняло больше времени, чем перенаправление второго сообщения)

Смежные вопросы