PHP session for tracking unique page views

前端 未结 2 1959
萌比男神i
萌比男神i 2020-12-07 05:07

I want to use sessions to track unique page views. Not a very robust method, I know, but sufficient for what I want to do.

On the first page load the session variabl

2条回答
  •  北荒
    北荒 (楼主)
    2020-12-07 06:07

    Problems:

    1. You are updating in tblCount EACH time, because your session is closed each time your script finishes. SO: Put the session_start()call as the FIRST LINE in code.
    2. It's not permitted to set an integer as $_SESSION variable. So if you set $_SESSION[$pagenumber] = 'something', then you gain the following notice:

    ( ! ) Notice: Unknown: Skipping numeric key 1 in Unknown on line 0

    Quite... not understandable. For details see this answer.

    Solution:

    Add your $pagenumber as index in an array (here pagenumbers) and that array inside the $_SESSION variable. No notice anymore.

    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] . '
    '; $views = getViews($pagenumber); echo '
    Viewed ' . print_r($views, true) . ' times
    ';

    Note: I used my functions to test. They just replace your db-processing code.

提交回复
热议问题