PHP重定向后获取上一页的URL

时间:2014-03-24 03:26:22

标签: php

我想要一个导航栏,告诉用户他们刚来自哪里。 示例:主页 - >交

但如果他们在他们的职位经理并点击帖子,我想要它说 帖子经理 - >交

我读到$_SERVER['HTTP_REFERER']不足以获取完整的网址,因此我没有用,因为我希望导航栏全部可点击

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:10)

我相信你想要的是breadcrumbs

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

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

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

这是引导您走向正确方向的基本解释。您可以使用关键字breadcrumbs来搜索大量样本和摘要。

关于保存上次访问位置的主题(确定来自管理者或主页的方法):您可以使用会话变量来执行此操作。这是一个例子:

这样您就可以在主页上设置变量:

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

然后你只需从另一个页面访问它:

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

在PHP配置文件中设置session.save_path很重要,否则会话可能会丢失。

答案 1 :(得分:2)

如果您使用Javascript document.referrer属性,则可以在客户端执行此操作。但是,更好的解决方案可能是使用全局会话数组。

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

答案 2 :(得分:1)

最佳解决方案IMO是将位置保存到会话中,每次用户进入“有意义”页面(您希望能够通过此功能导航回来),然后只需使用此数组,比如说,最后2个访问过的页面来提取所有信息。简单而有效。

答案 3 :(得分:0)

<?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 ">";

    }
?>