簡體   English   中英

這是計算唯一身份訪問者的好方法嗎?

[英]Is it a good way to count unique visitors?

<?php

    $date = date("Y-m-d"); //Return current date in yyyy-mm-dd format
    $userIP = $_SERVER['REMOTE_ADDR'];// Stores remote user ip address

    $query = "SELECT * FROM `unique_visitors` WHERE `date` = '$date'";
    $result = mysqli_query($connection,$query);

    if($result->num_rows == 0)// this block will execute when there is no record of current date in database
    {
        $insertQuery = "INSERT INTO `unique_visitors` (`date`,`ip`) VALUES ('$date','$userIP')";
        mysqli_query($connection,$insertQuery);
    }
    else
    {
        $row = $result->fetch_assoc();//Extracts result row from result object

        if(!preg_match('/'.$userIP.'/i',$row['ip']))//Will execute When Current ip is not in databse
        {
            $newIP = "$row[ip] $userIP"; //Combine previous and current user ip address with a separator for updating in database
            $updateQuery = "UPDATE `unique_visitors` SET `ip`='$newIP', `views`=`views`+1 WHERE `date` = '$date' ";
            mysqli_query($connection,$updateQuery);
        }
    }
?>

有沒有更好的方法來計算我網站中的唯一身份訪問者,或者這個簡單的代碼可以插入我的網站?

這是您采用的方法的基本 PHP/mysqli 代碼。 您必須為兩個字段創建唯一索引,日期和 ip。 一切都只需一個查詢即可。

<?php

$userIP = $_SERVER['REMOTE_ADDR'];// Stores remote user ip address

$sql = "INSERT INTO unique_visitors (date, ip, views) VALUES (curdate(),?,1)
          ON DUPLICATE KEY UPDATE views = views + 1";
$stmt = $connection->prepare($sql);
$stmt->bind_param("s", $userIP);
$stmt->execute();

$sql = "SELECT count(*) FROM unique_visitors WHERE date = curdate()";
$result = $connection->query($sql);
$visitors = $result->fetch_row()[0];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM