【问题标题】:unique visitor count not working with cookies唯一访问者计数不适用于 cookie
【发布时间】:2021-10-28 03:36:11
【问题描述】:

我是初学者,想学习如何使用 PHP cookie 计算唯一身份访问者。我试着写这段代码。而且我将它存储在数据库中。问题是我没有得到真正的访问者,根据谷歌分析,这个页面只有 2-3 个访问者,但根据我的代码,我得到了 50 个。这个错误是因为谷歌机器人?

我认为问题出在我的代码中,请帮我解决这个问题。

这是我的代码

      <?php 
    include 'configuration.php';
        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'];
        }
       if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) {
    // is bot
}else{
$value = bin2hex(random_bytes(10));
$path = "/";
$expires = time()+15780000;//6 month
$cookie =  '1';
if (!isset($_COOKIE['Q_zWnE8_aq']))
{
    $name= 'Q_zWnE8_aq';
    $new_visitor = $cookie++;
    setcookie($name, $value,$expires,$path,"mydomain.in");
    
    $sql010 = $conn2->prepare("SELECT * FROM unique_vistor WHERE ip = ? ");
     $sql010->bind_param("s",$ip);
     $sql010->execute();
     
     
    $reS = $sql010->get_result()->fetch_all(MYSQLI_ASSOC);
    if(count($reS )>0){
    //   already exists
    }else{
   
            
            $result55=$conn2->prepare("INSERT INTO unique_vistor(id,name,value,expires,new_visitor,ip) VALUES (?,?,?,?,?,?)");
            $result55->bind_param("isssss",$id,$name,$value,$expires,$new_visitor,$ip);
            $result55->execute();
            $result55->close();
            
        
    }

  }
}
        ?>

【问题讨论】:

  • "mydomain.in" 必须用引号引起来。
  • 是否定义了 $connection?
  • @Someone_who_likes_SE 我也试过了,但遇到了同样的问题
  • 您好,您需要单独的 IP 记录表,每次访问都应检查 ip 表是否存在。仅 cookie 或 session 是不够的。
  • 旁注:获得 20 字符长的唯一字符串的更简单、更好的方法是:$value = bin2hex(random_bytes(10));

标签: php mysql cookies ip-address


【解决方案1】:

我在 StackOverflow 上发现了如何检测机器人,我已经更新了上面的代码,请告诉我。这是正确的方法吗?

    if (preg_match('/bot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|google|yahoo|teoma|contaxe|yandex|libwww-perl|facebookexternalhit/i', $_SERVER['HTTP_USER_AGENT'])) {
    // is bot
}

【讨论】:

  • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多