在Cookie /会话中存储用户导航历史记录

时间:2013-05-09 15:42:29

标签: php joomla2.5 httpcookie

我正在使用PHP,我希望实现以下目标(我知道这可以通过第三方插件实现,但我想在我自己的实践中构建它):

  1. 将用户在我的(Joomla驱动)网站中访问的所有网址的历史记录存储在Cookie中。
  2. 在用户注销时向源(文件或数据库)发送一组值(其他用户信息,包括URL历史记录)。我还没有解决第二项问题,但是应该感谢答案或一个好的指针。
  3. 到目前为止我创建的PHP代码:

    $user   = JFactory::getUser();
    $helper = JUserHelper::getUserGroups($user->id);
    
    if(!isset($_COOKIE['pagehistory'])){
        setcookie('pagehistory',$_SERVER['REQUEST_URI'].'|');
    }
    else {
        $_COOKIE['pagehistory'] .= $_SERVER['REQUEST_URI'].'|';
    }
    
    // debug: destroy cookie
    //setcookie ("pagehistory", "", time() - 3600);
    
    $group  = "";
    foreach ($helper as $value) {
        $group .= $value."|";
    }
    
    $userinfo = array(
    'id'        => $user->id,
    'username'  => $user->username,
    'realname'  => $user->name,
    'group'     => $group,
    'url'       => $_SERVER['REQUEST_URI'],
    'history'   => $_COOKIE['pagehistory'],
    );
    

    我遇到的问题是'pagehistory'cookie。当我使用控制台进行测试时,我似乎只获得了第一个URL和第二个,但没有更多。

    示例:

    导航到URL 1:'/'//(根)
    导航到URL 2:'/ news'
    导航到URL 3:'/ tutorials'

    Cookie代码的结果:

    第一轮:'/'
    第2轮:'/ | / news'//'|'作为分隔符
    第3轮:'/ | / tutorials'//而不是'/ | / news | / tutorials'

    我做错了什么?

1 个答案:

答案 0 :(得分:0)

Cookie由setcookie函数创建。将else更改为以下内容,看看是否修复了它:

else {
    $tmp = $_COOKIE['pagehistory'] . $_SERVER['REQUEST_URI'] . '|';
    setcookie('pagehistory', $tmp);
}