2017-09-15 1 views
0

이 스크립트가 실행되지 않으면 세션이 아직 시작되지 않았습니다. 사용자가 몇 가지 옵션을 클릭하면 페이지가 자동으로 다시로드됩니다. 하지만 Google 애널리틱스에 대한 정보는 세션이 시작될 때만 처음 전송되어야합니다. 스크립트가 작동하지만 분석이 잘못되었습니다. 동일한 세션을 여러 번 전송하기 때문입니다.세션을 시작할 때만 PHP를 실행하십시오.

PHP 스크립트 :

if (session_id() === "") { 
    echo time(); 
    session_start(); 

    include('ss-ga.class.php'); 

    $ssga = new ssga('UA-10536XXXX-1', 'www.site.com'); 

    //Set a pageview 
    $ssga->set_page('b1.php'); 
    $ssga->set_page_title('b1'); 

    // Send 
    $ssga->send(); 
    $ssga->reset(); 

} 

IF (SESSION_ID === "")을 경우 (session_status() == PHP_SESSION_NONE)

+0

변수를 생성 할 경우 (session_started = 'Y'!) {으로 session_start() ... 물건 ... session_started = 'y'를 할;} PHP의 세션이 이미있는 경우 [확인의 – clearshot66

+0

가능한 중복 시작] (https://stackoverflow.com/questions/6249707/check-if-php-session-has-already-started) – Eric

답변

0

내 의심이 -가에서 분명하지 않다 문서 - session_id ~ 을 사용하는 경우 호출 후에 세션 ID는으로 읽습니다.

보다 나은 접근 방법은GA 코드를 처음 실행 한 후에 세션 변수 을 설정하는 것입니다. 일단 설정되면 이후 페이지 뷰는 세션 값이 존재하기 때문에 해당 코드를 건너 뜁니다.

session_start(); 

if(!isset($_SESSION['analytics_sent'])) { 
    echo time(); 

    include('ss-ga.class.php'); 

    $ssga = new ssga('UA-10536XXXX-1', 'www.site.com'); 

    //Set a pageview 
    $ssga->set_page('b1.php'); 
    $ssga->set_page_title('b1'); 

    // Send 
    $ssga->send(); 
    $ssga->reset(); 

    $_SESSION['analytics_sent'] = true; 
} 
관련 문제