복붙노트

[SQL] 고유의 페이지 뷰를 추적하기위한 PHP 세션

SQL

고유의 페이지 뷰를 추적하기위한 PHP 세션

나는 고유의 페이지 뷰를 추적하는 세션을 사용하고 싶습니다. 아니 매우 강력한 방법, 알아,하지만 내가하고 싶은 것을하기에 충분.

첫 페이지로드시 세션 변수는 데이터베이스 단위로 설정하고 필드입니다. 증가 세션 변수가 설정되지 않는 조건으로하기 때문에 이후 페이지 뷰에 그것은, 증가하지 않습니다.

이건 내 코드입니다 :

$pagenumber = 1;

//other stuff here...

session_start();

if (!isset($_SESSION[$pagenumber])) {
    $storeview = mysqli_query($dbconnect, "UPDATE tblcount SET views=views+1 WHERE id='$pagenumber'");
    $_SESSION[$pagenumber] = $pagenumber;
}
echo $_SESSION[$pagenumber];

$Recordset1 = mysqli_query($dbconnect, "SELECT views FROM tblcount WHERE id = '$pagenumber'");
$row_Recordset1 = mysqli_fetch_assoc($Recordset1);

echo "Viewed ".$row_Recordset1['views']." times";

첫 번째 에코 테스트 만이있다. 이 페이지 새로 고침에 잘 값을 에코와 증가는 처음 작동하지만, 뷰 카운트가 모든 페이지 새로 고침에 계속 증가되는 말아야. 나는 이유를 볼 수 없습니다.

나는 비슷한 질문을 발견 : PHP는 : 고유 방문 / 히트 쿠키 / IP를 사용하여 특정 항목하지만 난 솔루션과 유사한 문제로 실행이가 제안했다.

도움에 감사드립니다!

해결법

  1. ==============================

    1.아주 ... 이해할 수 없습니다. 자세한 내용은이 대답을 참조하십시오.

    아주 ... 이해할 수 없습니다. 자세한 내용은이 대답을 참조하십시오.

    배열 (여기 페이지 번호)와 $ _SESSION 변수 안에 그 배열의 인덱스로 $ 페이지 번호를 추가합니다. 아니 더 이상 알 수 없습니다.

    session_start();
    
    $pagenumber = 1;
    
    if (!isset($_SESSION['pagenumbers'])) {
        $_SESSION['pagenumbers'] = array();
    }
    
    if (!isset($_SESSION['pagenumbers'][$pagenumber])) {
        updateViews($pagenumber);
        $_SESSION['pagenumbers'][$pagenumber] = $pagenumber;
    }
    
    echo 'Page number: ' . $_SESSION['pagenumbers'][$pagenumber] . '<br/>';
    $views = getViews($pagenumber);
    echo '<pre>Viewed ' . print_r($views, true) . ' times</pre>';
    

    참고 : 나는 시험에 내 기능을 사용했다. 그들은 당신의 DB-처리 코드를 교체합니다.

  2. ==============================

    2.그냥 테스트. 이것은 또한 작동합니다.

    그냥 테스트. 이것은 또한 작동합니다.

    으로 session_start ();

    페이지의 이름을 가져옵니다 // $ PAGE_URL = $ _SERVER [ 'REQUEST_URI'];

    세션 ID를 생성 //. 방문자의 이름으로 역할을합니다 만약 (!는 isset ($ _ SESSION [ 'ID'])) {

    $ _SESSION [ 'ID'] = SESSION_ID ();

    // 첫 번째 페이지에 방문을 위해 $ visit_id = $ _SESSION [ 'ID'];

    }그밖에{

    // 모든 페이지에 대한 후속 방문을 $ visit_id = $ _SESSION [ 'ID'];

    }

    / ****************** 쿼리 DB. 세션 당 페이지 당 하나의 방문을 삽입합니다. 그것은 우리가 총 방문을 얻기 위해 각각의 페이지 수를 필요 의미합니다. 또는 모든 레코드의 수는 사이트 전체의 방문을 얻을 수 있습니다. ************************************ / $ query_visits_table = mysqli_query ($ db_connect는 "tblcount * FROM WHERE (visit_id = '$ visit_id') AND (PAGE_NAME = '$ PAGE_URL')");

    경우 (mysqli_num_rows ($ query_visits_table)> 0) {

    // 마 아무것도를이 페이지가이 세션 중에 방문한 된 경우

    }그밖에{

    mysqli_query ($ db_connect, "INSERT INTO의 tblcount (visit_id, PAGE_NAME, 방문) VALUES ( '$ visit_id', '$ PAGE_URL', '1')");

    }

    // 가져 오기 사이트의 총 방문 $ query_site_visits = mysqli_query ($ db_connect "SELECT * tblcount FROM");

    // 특정 페이지를 참조하십시오 $ query_specific_page_visit = mysqli_query ($ db_connect는 "tblcount * FROM WHERE PAGE_NAME = '$ PAGE_URL'");

    만약 (는 isset ($ query_site_visits) &&는 isset ($ query_specific_page_visit)) {

    $ site_total_visits = mysqli_num_rows ($ query_site_visits); $ specific_page_visit = mysqli_num_rows의 ($ query_specific_page_visit);

    에코 '사이트 총 방문이다'. $의 site_total_visits. '
    ';

    에코 '의 총 방문'. $ PAGE_URL. '이다'. specific_page_visit을 $;

    출구();

    }

  3. from https://stackoverflow.com/questions/43987104/php-session-for-tracking-unique-page-views by cc-by-sa and MIT license