How do I count unique visitors to my site?

前端 未结 5 642
粉色の甜心
粉色の甜心 2020-11-27 14:09

I am making a visitor counting system for user posts to show the most viewed posts on homepage. I have a visitor counting system now but all it registers a view at every pag

5条回答
  •  感动是毒
    2020-11-27 14:43

    I have edited the "Best answer" code, though I found a useful thing that was missing. This is will also track the ip of a user if they are using a Proxy or simply if the server has nginx installed as a proxy reverser.

    I added this code to his script at the top of the function:

    function getRealIpAddr()
    {
        if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
        {
          $ip=$_SERVER['HTTP_CLIENT_IP'];
        }
        elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
        {
          $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
          $ip=$_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }
    $adresseip = getRealIpAddr();
    

    Afther that I edited his code.

    Find the line that says the following:

    // get the user name if it is logged, or the visitors IP (and add the identifier)
    
        $uvon = isset($_SESSION['nume']) ? $_SESSION['nume'] : $_SERVER['SERVER_ADDR']. $vst_id;
    

    and replace it with this:

    $uvon = isset($_SESSION['nume']) ? $_SESSION['nume'] : $adresseip. $vst_id;
    

    This will work.

    Here is the full code if anything happens:

    0) {
            for($i=0; $i<$nrrows; $i++) {
              // get each line and separate the user /visitor and the timestamp
              $ar_line = explode($sep, $ar_rows[$i]);
          // add in $addrow array the records in last $timeon seconds
              if($ar_line[0]!=$uvon && (intval($ar_line[1])+$timeon)>=time()) {
                $addrow[] = $ar_rows[$i];
              }
            }
          }
        }
    
    $nruvon = count($addrow);                   // total online
    $usron = '';                                    // to store the name of logged users
    // traverse $addrow to get the number of visitors and users
    for($i=0; $i<$nruvon; $i++) {
     if(preg_match($rgxvst, $addrow[$i])) $nrvst++;       // increment the visitors
     else {
       // gets and stores the user's name
       $ar_usron = explode($sep, $addrow[$i]);
       $usron .= '
    - '. $ar_usron[0]. ''; } } $nrusr = $nruvon - $nrvst; // gets the users (total - visitors) // the HTML code with data to be displayed $reout = '

    Online: '. $nruvon. '

    Visitors: '. $nrvst. '
    Users: '. $nrusr. $usron. '
    '; // write data in $filetxt if(!file_put_contents($filetxt, implode("\n", $addrow))) $reout = 'Error: Recording file not exists, or is not writable'; // if access from
提交回复
热议问题