2013-05-09 3 views
1
내가 PHP와 함께 연주 해요 그리고 (나는이 타사 플러그인 가능합니다 알지만, 실천으로 내 자신이 구축하려는) 다음을 달성하기 위해 찾고

:저장 사용자 탐색 역사 쿠키/세션

  1. 내 (줌라 구동) 사이트 내에서 사용자가 방문하는 모든 쿠키의 기록을 쿠키에 저장하십시오.
  2. 은 사용자가 로그 아웃 소스 (파일 또는 데이터베이스)에 대한 값의 배열 (URL을 역사를 포함하여 다른 사용자 정보)를 보냅니다. 아직 항목 2를 다루지는 못했지만 대답이나 좋은 포인터가 인정 될 것입니다.

내가 지금까지 만든 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'쿠키입니다. 콘솔을 사용하여 테스트를 수행 할 때 첫 번째 URL과 계속해서 무시되는 두 번째 URL 만 얻는 것처럼 보입니다.

예 :

탐색 URL 1 : '/'// (루트)
탐색을 URL 2 : URL 3 '/ 뉴스'
탐색을 '/ 자습서'

쿠키 코드 결과 :

라운드 1 '/'
2 라운드 : '/ |/news'// '|' 구분 기호
라운드 3 인 : '/ |/자습서'// 대신 '/ |/뉴스 |/튜토리얼'은

내가 잘못 뭐하는 거지?

답변

0

쿠키는 setcookie 기능에 의해 생성됩니다. else를 다음으로 변경하고 수정했는지 확인하십시오.

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

이 솔루션은 효과가 있었지만 기술에 대해서는 혼란 스럽습니다. 나는 'setcookie'가 초기 값을 가진 쿠키를 만드는 데 사용된다는 인상을 받았다. 그러나 사용자가 새 페이지를 조회 할 때 계속 동일한 쿠키를 업데이트하는 것이 목표라면 다시 설정해야합니다. 두 개의 쿠키를 만들지 않겠습니까? 이미 존재하는 쿠키와 동일한 이름의 쿠키를 설정하면 원래의 쿠키를 덮어 씁니까? – brooklynsweb

+0

@brooklynsweb 예, 동일한 도메인 또는 경로 매개 변수를 지정하면 덮어 쓰게됩니다.이 경우 매개 변수는 항상 동일합니다. [이] (http://stackoverflow.com/q/6487564/1940041) – dhavald

+0

Jsut 덮어 다음 데이터베이스에 이전에 저장된 쿠키를 저장하고 살펴보십시오. –