Php 发布后重定向到同一页面,但显示一个;“成功”;消息

Php 发布后重定向到同一页面,但显示一个;“成功”;消息,php,url-redirection,forms,http-post,Php,Url Redirection,Forms,Http Post,最近我发现我的post/redirect系统有缺陷,我没有其他方法可以修复它。 考虑这一步一步的场景,它必须在没有JavaScript /Ajax:的情况下工作。 管理员进入论坛页面,浏览特定的帖子 他删除了线程 系统将他的删除请求发送到deletePost.php 处理表单后,deletePost.php显示“thread successfully deleted page”,并在几秒钟后刷新标题,返回到原始thread页面 因为我们正在刷新同一个页面(使用HTML标题标记或标题(Re

最近我发现我的post/redirect系统有缺陷,我没有其他方法可以修复它。 考虑这一步一步的场景,它必须在没有JavaScript /Ajax:

的情况下工作。
  • 管理员进入论坛页面,浏览特定的帖子

  • 他删除了线程

  • 系统将他的删除请求发送到deletePost.php

  • 处理表单后,deletePost.php显示“thread successfully deleted page”,并在几秒钟后刷新标题,返回到原始thread页面

  • 因为我们正在刷新同一个页面(使用HTML标题标记或标题(Refresh:time,url=url)),当用户按F5时,他将收到“确认表单重新提交”消息

    我找不到替代方案来摆脱这种要求重新提交表单的情况。以下是一些替代方案以及它们存在缺陷的原因:

  • 执行非刷新php header()重定向。表单重新提交已消失,但现在我无法向用户显示“成功”消息,这让它看起来很奇怪

  • 重定向回同一页面时附加一个?success-GET-var。这是因为我们基本上重定向到了一个新页面。但是如果用户点击F5,success-GET-var将永远保留在那里。此外,如果用户决定再次调节,他将被重定向到具有相同GET-var的同一页面,从而使表单重新提交始终发生又来了

  • 在会话变量上保存一条成功的消息,并将其加载到重定向页面,然后对原始页面执行定时刷新重定向。问题是,当用户同时调节多个选项卡时,会话闪存消息非常不可靠。来自不同页面的消息将不知道它们属于哪个选项卡。联系人不使用cookies的用户也不会收到任何消息

    有没有不依赖javascript的优雅解决方法


  • 我个人更喜欢在会话中存储flash消息

    $_SESSION[messages][$id] = array(
      'type' => 'success',
      'content' => 'Deleted.
    )
    

    该id是您的线程id。

    我突然想到,我可以重定向到特定的“审核成功消息”页面,它获取GET变量,然后重定向回原始页面。我没有考虑只为这个问题创建一个特定的页面,因为所有其他表单都被优雅地重定向,没有任何问题,但可能我将被迫在这种情况下采用此解决方案,仅仅因为我想重定向回与此问题相同的页面成功消息如果按F5键,您将收到“确认表单重新提交”消息。,您没有重定向。您是对的itachi,这不是正确的重定向,而是位置刷新。我将在问题中更改它,使其正确