当前位置:  开发笔记 > 编程语言 > 正文

如何最好地在页面之间为用户传递消息

如何解决《如何最好地在页面之间为用户传递消息》经验,为你挑选了1个好方法。

所以事件链是:

    用户提交表单.

    在处理提交期间,会生成一条消息,例如"您的记录已保存".

    用户被重定向到新页面,比如搜索结果.

    新页面需要显示消息.

那么,问题是如何从第2步到第3步获取消息?这只是一个简单的例子......还有许多其他更复杂的例子.

我正在使用PHP.

需求:

支持多条消息,需要根据需要在接收机器上进行格式化

消息可以添加到同一页面上(例如在步骤4中)

从任何函数或对象内部添加的消息

我提出了一些选择:

作为数组存储在会话变量中,并在每次显示后清空

传递为get或query参数; 因为你经常处理这个并且必须记得得到它会变得烦人; 因为它可以变长,它可以很容易地超过查询字符串的最大长度

基于每个会话存储在数据库中(可能并不总是为登录用户); 这将需要在每个页面上添加额外的插入,可能是多个,并在每个页面上进行额外选择

目前我一直在会话中将消息存储在一个数组中,但我想知道是否有更好的方法.我不认为上面的其他两个选项非常好.

编辑:我使用会话方法的2个函数:AddStatusMsg()(向数组添加元素)和DisplayStatusMsg()(返回HTML格式的消息并清空数组).



1> chazomaticus..:

我建议AGAINST将这些消息存储在数据库或会话中,原因很简单:制表符.(嗯,真的,HTTP的无状态特性.)

想想一个人,你的网站的不同部分有多个标签.此人执行某些操作,当加载时,切换到另一个选项卡并单击链接.如果您将消息存储在会话/数据库中,并且切换到选项卡也是一个可以显示这些消息的页面,则用户现在已进入竞争状态,根据服务器首先响应的请求,消息可能显示他们不打算的地方.

现在,在某些情况下,这可能无关紧要,但在某些情况下也可能非常混乱.

将消息放入请求中并不一定要像最初看起来那样糟糕.也许您可以使用数字(或者,用于奖励混淆,散列)ID存储要在数据库中显示的所有消息,并在查询字符串中传递ID列表.这使查询字符串保持简短,您所要做的就是跟踪代码中与哪些消息对应的ID.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有