成功完成任务后,在上一页重定向用户

时间:2011-05-17 11:52:14

标签: php

在编辑或删除任何项目等成功操作后重定向用户应该是什么好方法,在删除条件下我们可以使用$_SERVER['HTTP_REFERER']但是在编辑的情况下,我们首先显示编辑表单然后用户点击更新,所以如果我们使用相同的方法,用户将被重定向到编辑页面而不是主页面。我希望你对我的困惑有所了解。感谢。

5 个答案:

答案 0 :(得分:1)

如果通过表格帖子处理'更新',只需将隐藏的输入反映到着陆点。

<input type="hidden" name="next_url" value="foo.php" />

PHP使用该值作为重定向的位置。

<?php
  // Do operations.
  header('Location: '.$_REQUEST['next_url']);

这一点尤其重要,因为不保证HTTP_REFERER可以正常工作。它大部分时间都有效,但依赖它有一些问题。

答案 1 :(得分:1)

我建议永远不要使用HTTP_REFERER。

  1. 可能根本没有设置。
  2. 它可以是任何东西,不要指望你的上一页。
  3. 我建议使用(如上所述)隐藏字段,会话存储或在应用程序中只有一个可靠路由的可靠解决方案,以便您知道某人采用了哪条路由。选择最好的。

答案 2 :(得分:1)

如果你对$_SERVER['HTTP_REFERER']没问题,你只需将该值存储在会话信息中,并在编辑完成后重定向到它。

例如,在显示编辑表单之前,您可以执行以下操作:

$_SESSION['originalReferer'] = $_SERVER['HTTP_REFERER'];

点击“更新”后(如果成功):

header("Location: ".$_SESSION['originalReferer']);

但是,只有在您信任$_SERVER['HTTP_REFERER']时才使用此功能!

答案 3 :(得分:1)

与上一个答案类似,我建议您使用会话跟踪要重定向到的页面。然后,一旦您想重定向,只需使用

header('Location: '.$redirect_var);

我之所以将其放入会话而不是张贴在表单中,是因为表单发布可以由用户操作,而会话是服务器端,完全由您自己控制。

答案 4 :(得分:0)

当您进入“编辑”页面时保存会话中的URL,并且在您提交后只需在执行更新查询后使用以下代码段:

header('Location: '.$_SESSION['redirect_url']);
相关问题