繁体   English   中英

重定向后PHP获取上一页网址

[英]PHP get previous page url after redirect

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

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

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

任何帮助深表感谢!

我相信你想要的是面包屑

导航链存储使用什么实际上取决于您。 如果您愿意,您甚至可以使用 $_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很重要,否则会话可能会丢失。

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

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

IMO 的最佳解决方案是将位置保存到会话中,每次用户转到“有意义的”页面(您希望能够通过此功能导航回)时,然后只需使用此数组,例如,最后 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 ">";

    }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM