在编辑或删除任何项目等成功操作后重定向用户应该是什么好方法,在删除条件下我们可以使用$_SERVER['HTTP_REFERER']
但是在编辑的情况下,我们首先显示编辑表单然后用户点击更新,所以如果我们使用相同的方法,用户将被重定向到编辑页面而不是主页面。我希望你对我的困惑有所了解。感谢。
答案 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。
我建议使用(如上所述)隐藏字段,会话存储或在应用程序中只有一个可靠路由的可靠解决方案,以便您知道某人采用了哪条路由。选择最好的。
答案 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']);