2012-06-15 39 views
3

我正在寻找提供成功消息重定向后页面的最佳方式。我认为在提交表单后重定向是防止表单多次提交的最佳方式。重定向时提供成功消息的最佳方式?

以下这些可能性是我在脑海中想到的。你认为最好的是什么?为什么还有其他的可能性?

  • 保存会话消息,并读取有目标页面
  • 供应一些GET参数的新的一页像header('Location: index.php?success='.urlencode($message));
  • 供应比Location头更上目标页面上阅读这样

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

在我的代码我的消息使用会话传递这些消息。唯一要记住的是在阅读这些消息后从会话中删除这些消息。 –

+0

在会话中存储可能是最好的。 – cmbuckley

+0

我提供了一个PHP的ASP.NET MVC的TempData在这里http://stackoverflow.com/questions/7514172/c-sharp-tempdata-equivalent-in-php。 – alexn

回答

1

这是我的观点:

会议。

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

提供带有一些GET参数的新页面。

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

提供比位置标题更多的内容并在目标页面上阅读它们。

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

将此数据存储在cookie中。

还缺:

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

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

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

实际上我使用所有这些方法。目前应该使用哪种方法 - 查看应用程序及其未来使用的要求。

+0

为了让你知道我采用了会话​​方式,就像ZF用它的FlashMessenger类一样。 –

0

保持消息存储在数组或配置文件中。

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

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

如果使用GET,并希望避免用户书签与消息的页面,你可以使用一个布尔变量在会议上这样告诉你,只有当这个变量设置为1

相关问题