Php 在Cookie/会话中存储用户导航历史记录
我正在使用PHP,并希望实现以下目标(我知道这在第三方插件中是可能的,但我想在实践中自己构建):Php 在Cookie/会话中存储用户导航历史记录,php,joomla2.5,httpcookie,Php,Joomla2.5,Httpcookie,我正在使用PHP,并希望实现以下目标(我知道这在第三方插件中是可能的,但我想在实践中自己构建): 将用户在我的(Joomla驱动的)站点中访问的所有URL的历史记录存储在cookie中 当用户注销时,向源(文件或数据库)发送一个值数组(其他用户信息,包括URL历史记录)。我还没有解决第二项,但如果能给我一个答案或一个好的指针,我将不胜感激 到目前为止我创建的PHP代码: $user = JFactory::getUser(); $helper = JUserHelper::getUserGr
$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'],
);
我遇到的问题是“页面历史记录”cookie。当我使用控制台进行测试时,我似乎只得到第一个URL和第二个URL,但没有更多
例如:
导航到URL 1:“/”/(根)导航到URL 2:“/news”
导航到URL 3:“/tutorials”
cookie代码的结果: 第1轮:'/'
第二轮:“/|/news”/“|”作为分隔符
第三轮:“/|/tutorials”//而不是“/|/news |/tutorials”
我做错了什么?cookies是由
setcookie
函数创建的。将else更改为以下,然后查看是否已修复:
else {
$tmp = $_COOKIE['pagehistory'] . $_SERVER['REQUEST_URI'] . '|';
setcookie('pagehistory', $tmp);
}
这个解决方案有效,但我对技术感到困惑。我的印象是“setcookie”用于创建具有初始值的cookie。但是,如果我的目标是在用户点击新页面时不断更新同一个cookie,那么我必须再次设置它吗?这不会创建两个cookie吗?设置一个与已存在的cookie同名的cookie是否会覆盖原始cookie?@brooklynseb是的,如果您指定相同的域或路径参数,它将覆盖,在您的情况下,这些参数总是相同的。看看Jsut,将先前保存的cookie保存到数据库中,然后覆盖。