为每个用户配置文件创建PHP分析

时间:2018-03-08 06:51:08

标签: php mysql

我正在尝试为每个用户个人资料创建分析数据,告诉他们有多少访问者来自城市和城市。国家访问了他们的个人资料。

这就是我目前正在做的事情。

session_start();

$analyticsuser = $_SESSION["analyticsuser"];

if($analyticsuser!=$author) //$author is where the id of each profile is stored.
{        
    $ip = $_SERVER['REMOTE_ADDR']; 
    $query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip));
    if($query && $query['status'] == 'success') 
    {
        $userip = $query['query'];
        $usercountry = $query ['country'];
        $usercity = $query['city'];

        $connection = mysqli_connect("HOSTNAME","USERNAME","PASSWORD","leo_site") or die("Error " . mysqli_error($connection));
        $sqlanalytics = "INSERT INTO member_analytics VALUES(NULL,\"$userip\",\"$author\",\"$usercity\",\"$usercountry\",now());";
        $resanalytics = mysqli_query($connection, $sqlanalytics) or die("Error " . mysqli_error($connection));

    } 
    else {    echo 'Unable to get location';    }
}    

$_SESSION["analyticsuser"] = $author;

我正试图让有多少访问者访问来自不同城市的个人资料。国家。

我现在面临的问题是,如果我在访问另一个配置文件后再次访问配置文件,则仍会记录数据。这不应该发生,因为我们已经记录了该配置文件的访问者。

2 个答案:

答案 0 :(得分:0)

有很多方法可以解决这个问题,其中一个我主要使用的是mysql的一个功能。 首先使用author和userip创建一个复合键。 之后在插入运行的位置替换查询。根据替换查询的性质,如果找到相同的作者和userip组合字段,它将用新数据替换该行,如果没有找到组合,则会插入它。

$sqlanalytics = "REPLACE INTO member_analytics VALUES(NULL,\"$userip\",\"$author\",\"$usercity\",\"$usercountry\",now());";

答案 1 :(得分:0)

我已经解决了我的问题,如果访问者已访问过个人资料,您必须每次都阅读会话ID。

以下是正确的代码。

session_start();

$new_sessionid = session_id();

$connection = mysqli_connect("HOSTNAME","USERNAME","PASSWORD","leo_site") or die("Error " . mysqli_error($connection));
$sqlcanalytics = "SELECT * FROM member_analytics WHERE sessid=\"$new_sessionid\" AND uid=\"$author\";";
$rescanalytics = mysqli_query($connection, $sqlcanalytics) or die("Error " . mysqli_error($connection));
$numcanalytics = mysqli_num_rows($rescanalytics);
if($numcanalytics==0)
{
    $ip = $_SERVER['REMOTE_ADDR']; 
    $query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip));
    if($query && $query['status'] == 'success') 
    {
        $userip = $query['query'];
        $userisp = $query['isp'];
        $organization = $query['org'];
        $usercountry = $query ['country'];
        $userregion = $query['regionName'];
        $usercity = $query['city'];

        $sqlanalytics = "INSERT INTO member_analytics VALUES(NULL,\"$userip\",\"$author\",\"$new_sessionid\",\"$usercity\",\"$usercountry\",now());";
        $resanalytics = mysqli_query($connection, $sqlanalytics) or die("Error " . mysqli_error($connection));
    } 
    else { echo 'Unable to get location'; }
}

感谢您的帮助!