发布后重定向到同一页面,但显示"成功"信息

时间:2014-11-11 14:48:22

标签: php url-redirection html-form-post

最近我发现我的帖子/重定向系统存在缺陷,我认为没有其他方法可以修复它。  考虑这个一步一步的场景,它必须在没有javascript / ajax的情况下工作:

  1. 管理员转到论坛页面,浏览特定帖子。
  2. 他删除了帖子。
  3. 系统将删除请求发送到deletePost.php
  4. 处理完表单后,deletePost.php显示一个"线程已成功删除的页面",并在几秒钟后刷回标题,返回原始主题页面。
  5. 因为我们正在刷新同一页面(使用HTML头标记或标题(Refresh:time,url = url),当用户按下F5时,他将获得"确认表单重新提交"消息。

    我找不到另一种方法让我摆脱这种情况,要求重新提交表格。以下是一些替代方案以及它们为何也存在缺陷:

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

  7. 在重定向回同一页面时附加?成功GET var。这是有效的,因为基本上我们重定向到一个新页面。但是如果用户点击F5,成功获得var将永远保留在那里。此外,如果用户决定再次调整,他将被重定向到具有相同get var的同一页面,使表格重新提交再次发生。

  8. 在会话变量上保存成功的消息,并将其加载到重定向的页面上,然后执行定时刷新重定向到原始页面。这样做的问题是,当用户一次调节多个标签时,会话闪存消息非常不可靠。来自不同页面的消息不知道它们属于哪个标签。不使用cookie的人也不会收到任何消息。

    有没有优雅的方法,不依赖于javascript?

1 个答案:

答案 0 :(得分:0)

我个人更喜欢在会话中存储Flash消息的想法。

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

id是你的主题ID。