PHP在重定向后获取前一个页面的url


PHP get previous page url after redirect

我想有一个导航栏,告诉用户他们刚刚从哪里来。示例:首页-> Post

但是如果他们在他们的帖子管理器中并点击一个帖子,我希望它说Posts manager -> Post

我读到$_SERVER['HTTP_REFERER']不够好,无法获得完整的url,所以这没有用,因为我希望导航栏都是可点击的

任何帮助都非常感谢!

我相信你想要的东西叫做面包屑。

导航链存储使用什么实际上取决于您。如果你愿意,你甚至可以使用$_SERVER['HTTP_REFERER'],但这是不可靠的,因为它是客户端。通常存储这种链的方法是实际URI或会话。

例如,您有这样的URI: http://www.example.com/post_manager/post

然后你可以遍历explode("/", $_SERVER["REQUEST_URI"])来得到每一步。

这是引导你走向正确方向的基本解释。你可以用关键词breadcrumbs来搜索大量的样本和片段。

关于保存最后访问位置的主题(确定abonent是否来自管理器或主页的方式):您可以使用会话的变量来做到这一点。下面是一个例子:

这样你就可以在主页上设置一个变量:

<?php
    session_start(); 
    $_SESSION['previous_location'] = 'homepage';
?>

然后你可以从另一个页面访问它:

<?php
    $previous_location = $_SESSION['previous_location'];
?>

设置会话很重要。

如果使用Javascript文档,则可以在客户端执行此操作。引用属性。然而,一个更好的解决方案可能是使用全局会话数组。

if (!isset($_SESSION['referrer'])) {
    $_SESSION['referrer'] = $current_uri;
} else {
    $previous_uri = $_SESSION['referrer'];
    $_SESSION['referrer'] = $current_uri;
}

我认为最好的解决方案是将位置保存到会话中,每次用户进入一个"有意义的"页面(你希望能够通过此功能导航回来),然后简单地使用这个数组,例如,最近访问的2个页面,以拉出所有信息。简单有效。

<?php
    session_start(); 
    $_SESSION['user_interactions'][] = $_SERVER['HTTP_REFERER'];
    // get previous
    $previous_page = end($_SESSION['user_interactions']);
    // list all user interactions
    foreach($_SESSION['user_interactions'] as $key => $value){
        echo $value;
        if(count($_SESSION['user_interactions'])-1 != $key) echo ">";
    }
?>