如何使用 php 和 jquery 跟踪访问者,从综合浏览量中确定唯一访问者

Sou*_*rce 3 php jquery

我想跟踪访问我网站的访问者。当访问者到达时,我想将新访问者添加到我的数据库中,并且能够判断他们是返回还是新访问者。

最好使用 cookie 还是通过 IP 地址跟踪它们?将有一个名为visitor 的表,其中包含visitor_id 及其IP 地址或cookie 代码。另一个称为访问的表,它将跟踪“访问者”每次到达站点的时间,包括visit_id、visitor_id 和日期/时间。

我如何确定这是一次新访问还是只是另一个页面浏览?即网站上的每个页面都会有此代码来添加访问者,但我不希望每次他们查看页面时都将其记录为新访问。

我的另一个想法是使用 $_SERVER['HTTP_REFERER'],然后我可以告诉访问者不会从我的网站进行其他页面查看,但我不确定这有多可靠。

所以我想知道我们怎么才能做到这一点?

小智 5

最好的方法是使用 IP 地址和 COOKIES 的组合。仅保存 IP 地址是不够的,因为当用户使用代理时它会经常更改。对于每个页面加载,您可以使用这样的代码

// Get IP address of user
function getUserIP() {    
  if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
  } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  } else {
    $ip = $_SERVER['REMOTE_ADDR'];
  }
  return $ip;
}

// Check if cookie exists. If not then set new cookie. Return its value
function getUserCookie() {
  if(isset($_COOKIE['visited'])) {
    // cookie is already set
  } else {
    list($usec, $sec) = explode(" ", microtime()); // Micro time!
    $expire = time()+60*60*24*30; // expiration after 30 day
    setcookie("visited", "".md5("".$sec.".".$usec."")."", $expire, "/", "", "0"); 
  }
  return $_COOKIE['visited'];
}
Run Code Online (Sandbox Code Playgroud)

如果没有访问者具有这些值,您可以将这两个值保存到数据库表访问者,因此您可以说它是唯一的新访问者。如果有访问者具有这些值之一,那么它就是回访者,因此您应该更新访问表。

但我认为最好只有一张桌子,因为你不认识你的访客。使用单个 sql 查询,您仍然可以区分唯一访问者、页面浏览量、访问者流量、访问时间等。