创建一个可靠的Flash/Feedback Messages系统


Creating a reliable Flash/Feedback Messages system

有很多线程在讨论如何实现简单的用户反馈/flash消息系统来向用户报告信息,比如"无效密码"、"保存的设置"、"发布的新线程"等等。使用相当简单

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

然后在下一个重定向页面上检索该会话密钥。然而,考虑一下这种情况:用户向website.com/philosh提交了一个新线程,但他没有通过captcha,在处理表单后,它保存了

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

并开始将用户重定向回他试图发帖的网站.com/philosure。现在,想象一下,在重定向过程中,服务器或他的连接有点滞后,同时用户在另一个浏览器选项卡上打开website.com/philosure。现在,"无效captcha"将显示在那里,而它应该只显示在处理重定向的选项卡上。

只有当消息与其原始重定向页面匹配时,才能可靠地显示该消息?

鉴于缺乏答案,我会说我能想出的最好的主意。

我将使flash消息既基于时间又基于页面,而不是简单地基于页面。

在这种情况下,如果用户在website.com/phi哲上创建一个新线程,并且他刷新了多个website.com/physical屏幕,他会在短的有效期内得到所有屏幕上的消息,而不仅仅是1个,甚至可以堆叠消息,所以如果他尝试从website.com/phesical发布两次,但都失败了,他会得到两条消息,两次发布尝试都失败了,而不是冒着让消息实际交换到不同的帖子的风险(如果第一条消息的重定向比第二条消息重定向花费的时间更长,就会发生这种情况)