2014-07-25 2 views
0

쿠키를 설정하고 검색하는 데 두 가지 문제가 있습니다.쿠키를 사용할 수 없음 Sitewide

  1. 쿠키는로드되지만 페이지를 새로 고침 할 때까지 호출 할 수 없습니다. 쿠키가 개발자 도구에 표시되지만 페이지에서 해당 값을 사용하려고 시도하지 않는 것을 의미합니다. 이 값은 새로 고침 후 페이지에서 사용할 수있는 것처럼 보입니다.
  2. 쿠키는 전체 도메인 및 하위 디렉터리에서 사용할 수 없습니다. 예를 들어 사용자가 http://example.com/sub/에 입력하면 http://example.com/으로 이동하면 쿠키가 삭제됩니다. 나는 사용자가에서 클릭 무엇 애드워즈 캠페인을 결정하여 전체 사이트에 걸쳐 서로 다른 정보를 표시하기 위해 노력하고있어

    $ad_source = $_GET['source']; 
    $date_of_expiry = time() + (86400 * 7); 
    setcookie('ad_source',$ad_source,$date_of_expiry,'/'); 
    
    if ($_COOKIE['ad_source'] == 'adwords_campaign_01') { 
        echo '... do something'; 
    } elseif ($_COOKIE['ad_source'] == 'adwords_campaign_02') { 
        echo '... do something else'; 
    } 
    

    :

여기 내 코드입니다.

저는 쿠키를 사용하지 않고 세션을 설정하는 것을 선호하지만,이 경우 나는 더 오랜 시간 동안 소스를 추적 할 수 있기를 원합니다.

+1

, 스크립트의 시작에서, ('display_errors를'을, false)를 위해서는 ini_set 넣어하려고; error_reporting (0), 이것은 쿠키가 스크립트의 출력 전에 보내 져야만하는 곳의 doc 페이지에서 가져온 것입니다. 두 번째 요점은 함수의 문서 페이지에서도 언급 된 다섯 번째 매개 변수를 사용해보십시오. –

+0

오류보고에 아무것도 표시되지 않았습니다. 또한 도메인을 다섯 번째 매개 변수로 추가하려고 시도했지만 차이가 없습니다. 동일한 결과가 발생했습니다. – CChoma

+0

쿠키를 설정하기 전에 먼저 $ ad_source 확인을 확인하여 문제 2를 해결했습니다. if ($ ad_source) {setcookie ('ad_source', $ ad_source, $ date_of_expiry, '/');} – CChoma

답변

0

모든 것이 예상대로 작동하고 있습니다. 이 게시물의 쿠키에 대한 통찰력있는 정보가 도움이되었습니다.

PHP cookie set in second refresh page 쿠키 후 페이지

  1. 리디렉션 사용자가 설정된다. 브라우저에서 두 번째 요청은 쿠키를 보내고 서버는 정보를 값과 관련하여 반환합니다.

  2. 쿠키를 만들기 전에 $ ad_source가 설정되어 있는지 확인하십시오.

업데이트 된 코드 : 첫 번째 점에 대한

$ad_source = $_GET['source']; 
$date_of_expiry = time() + (86400 * 7); 

if ($ad_source) { 

    setcookie('ad_source',$ad_source,$date_of_expiry,'/','example.com'); 

    if ($_COOKIE['ad_source'] == 'adwords_campaign_01') { 
    header('Location: http://example.com/'); 
    echo '... do something'; 
    } elseif ($_COOKIE['ad_source'] == 'adwords_campaign_02') { 
    header('Location: http://example.com/'); 
    echo '... do something else'; 
    } 

} 
관련 문제