在PHP中跟踪访问者的IP地址/点击

3

我正在尝试编写一个脚本或者更像是想出一个简单的逻辑来追踪点击或访问。我不需要追踪每个页面,只要他们着陆在主页上,我就想把它存储为1次点击。

首先,可以说通过IP跟踪远非准确,因为许多用户可能在同一IP下吗?

目前我的逻辑是在客户端设置一个带有标志的cookie,当他们第一次着陆在主页上时。此时,我将更新数据库为1个唯一的点击作为唯一标识。然后每次这个相同的访客访问时,主页会检查标志是否存在,如果存在,则更新数据库为1个原始点击....等等。

我知道如果他们删除了他们的Cookie,这将扰乱数据,但一般来说,这就是如何完成的吗?

你有更好的方法吗?


@Rick - 你需要数据库实时更新吗? - ajreal
是的,cookies 是一般的做法。 - RobertPitt
@ajreal - 你说的“实时”是什么意思? - user381800
@Rick - 有很多用于此目的的网络访问日志工具,这些工具生成的统计数据通常不会实时。因此,如果您没有实时报告/统计的计划,部署其中一个工具可以让您的生活更轻松。 - ajreal
@Rick,许多用户可能来自同一个IP地址,也有许多用户可能在代理后面使用相同的IP地址,针对这种情况,你需要一组变量。我建议你首先研究由Web服务器生成的access_log文件,其中包含了你的网站所有访问记录,一旦你了解了它是如何生成以及其中的IP地址是如何处理的,你就可以想出更好的方法来监控你的网站统计数据。 - Prix
显示剩余3条评论
1个回答

3
尝试以下代码以获取访问者的IP地址,这对于我的统计数据非常有效:

```$ip = $_SERVER['REMOTE_ADDR'];```

function get_ip()
{
    if($_SERVER){
        if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
            $adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
        elseif(isset($_SERVER['HTTP_CLIENT_IP']))
            $adress = $_SERVER['HTTP_CLIENT_IP'];
        else
            $adress = $_SERVER['REMOTE_ADDR'];
    } else {
        if(getenv('HTTP_X_FORWARDED_FOR'))
            $adress = getenv('HTTP_X_FORWARDED_FOR');
        elseif(getenv('HTTP_CLIENT_IP'))
            $adress = getenv('HTTP_CLIENT_IP');
        else
            $adress = getenv('REMOTE_ADDR');
    }

    return $adress;
}

所以我猜用$_SERVER['REMOTE_ADDR']就不够了? - user381800
@Rick - Apache的环境变量HTTP_X_FORWARDED_FOR依赖于您的配置,您可能可以跳过它。 - ajreal
@ajreal 是的,对于大多数环境来说,这是一个全局函数。 - CrazyMax

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接