重定向时提供成功消息的最佳方法是什么?

时间:2012-06-15 08:14:43

标签: php http redirect

我正在搜索带有成功消息的重定向后提供页面的最佳方式。我认为在提交表单后重定向是阻止多次提交表单的最佳方法。

我想到的是以下可能性。您认为最好的是什么?为什么或者您有其他可能性?

  • 将消息保存在会话中并从目标页面上读取
  • 为新页面提供一些GET参数,例如header('Location: index.php?success='.urlencode($message));
  • 提供超过Location标题并在目标页面上阅读它们

    header('Location: index.php');
    header('X-Success-Message: ' . urlencode($message));
    

2 个答案:

答案 0 :(得分:1)

这是我的意见:

<强>会话。

您在会话中存储的所有数据都将存储在服务器上。默认位置是磁盘。 IO--资源非常有限。不需要时不要启动会话。当您不需要时,不要在会话中存储数据。

为新页面提供一些GET参数。

这是一个很好的做法,但有一个缺点。如果客户端在他的收藏夹中存储链接(等等...)将其提供给另一个用户,他稍后打开此链接,那么他将看到成功消息。

提供超过Location标头并在目标页面上阅读。

这是一个很好的方法,但它取决于应用程序和客户端中间的服务器配置和代理。有时,服务器配置(代理)会终止非标准标头。但通常这不是问题。

将此数据存储在Cookie中。

还缺:

  • 不要忘记删除Cookie。
  • 存储在Cookie中的所有数据都将从您的服务器传输到客户端并返回。

将此数据存储在服务器上。

存储在数据库,内存缓存,NoSQL等中。如果这不会在服务器上产生额外负载并且非常适合您的应用程序,为什么不呢?而且您不一定要存储消息本身,而只需要存储状态标志。

在实践中,我使用所有这些方法。目前应该使用哪种方法 - 查看应用程序的要求及其将来的使用。

答案 1 :(得分:0)

将您的消息存储在数组或配置文件中。

如果您更喜欢使用会话(或框架的Flash数据),只需存储您要显示的消息的密钥。

如果您更喜欢GET解决方案,请使用您要显示的消息的密钥传递参数。

如果您使用GET并希望避免用户使用消息为页面添加书签,则可以在会话中使用布尔变量,这样只有在此变量设置为1时才显示消息。