php - 重定向时提供成功消息的最佳方式?

标签 php http redirect

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

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

  • 在 session 中保存消息并在目标页面上从那里读取
  • 为新页面提供一些 GET 参数,例如 header('Location: index.php?success='.urlencode($message));
  • 提供比 Location header 更多的内容,并像这样在目标页面上阅读它们

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

最佳答案

这是我的看法:

session 。

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

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

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

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

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

将此数据存储在 cookie 中。

不足:

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

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

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

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

关于php - 重定向时提供成功消息的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11046954/

相关文章:

c# - 从 HttpWebResponse 获取重定向 URL 的集合

php - 如何生成随机时间间隔并将其添加到使用 php 的 mysql 日期时间?

javascript - 使用 AJAX 将 JSON 转换为 PHP

android - 将 AQuery 库与 PUT 请求和 StringEntity(String) 结合使用

java - 如何通过 HTTPPost 发送数组

reactjs - 使用 Jest 和 Enzyme 测试 react 路由器重定向

php - 在 php 中使用 curl 时 move_uploded_file 不起作用

php - Laravel:按名称从路由获取 URL

c# - 经过身份验证的调用

redirect - 阻止curl在302重定向上发送授权 header