我想跟踪访问我网站的访问者。当访问者到达时,我想将新访问者添加到我的数据库中,并且能够判断他们是返回还是新访问者。
最好使用 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 查询,您仍然可以区分唯一访问者、页面浏览量、访问者流量、访问时间等。
| 归档时间: |
|
| 查看次数: |
7103 次 |
| 最近记录: |