有人能建议使用codeigniter创建最近查看过的项目/页面逻辑的最佳解决方案吗?如果可能的话,我更愿意使用codeigniter会话而不是标准的$ _SESSION。
另外 - 添加到会话但是一旦我点击数组中的10个项目就删除了数组中最旧的项目。
答案 0 :(得分:4)
$recentlyViewed = $this->session->userdata('recentlyViewed');
if(!is_array($recentlyViewed)){
$recentlyViewed = array();
}
//change this to 10
if(sizeof($recentlyViewed)>3){
array_shift($recentlyViewed);
}
//here set your id or page or whatever
if(!in_array($data['id'],$recentlyViewed)){
array_push($recentlyViewed,$data['id']);
}
$this->session->set_userdata('recentlyViewed', $recentlyViewed);
$recentlyViewed = array_reverse($recentlyViewed);
//var_dump($recentlyViewed);
现在在带有or_where查询的recentViewed上使用foreach
答案 1 :(得分:1)
我不知道这种方法是否适合您,但您可以将这种数据转储到带有时间戳的SQL数据库中,然后使用SQL查询的“升序”/“降序”属性并结合使用“limit(10)”属性......对于您要完成的任务可能需要付出太多精力,但您还可以将查询数据与CI会话对象同步?唐诺,只是一个想法:D