3

我正在寻找一种好方法,以显示当前(实时)访问我的网站的人数。

我发现,当我将访问我的服务器/站点的人的 IP 地址保存在 mysql 表中时,这可能是最简单的方法。

所以我可能要做的是:

创建一个配置良好的 mysql 表

添加保存IP地址的功能(我猜是php)

添加删除IP地址的功能,如果不再需要

使过程实时或接近实时

有人可以帮助我吗?

4

5 回答 5

5

这是一个快速示例,说明如何获取客户端的真实 IP 地址,然后从 mysql DB 存储和检索其值

//Test if it is a shared client
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
  $ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
  $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
  $ip=$_SERVER['REMOTE_ADDR'];
}
//The value of $ip at this point would look something like: "192.0.34.166"
$ip = ip2long($ip);
//The $ip would now look something like: 1073732954

现在您已经将客户端的真实 IP 地址转换为 INT 格式,您可以像往常一样将其写入 DB

$sql = "INSERT INTO user(ip) VALUES('$ip')";
$dbQuery = mysql_query($sql,$dbLink);

有关此链接的更多信息:在 MySQL 中存储 IP 地址的最佳方式

附加信息:使您的代码免受SQL 注入的影响。使用PDOMYSQLI

使用 PDO 扩展的示例:

<?php

    $stmt = $dbh->prepare("INSERT INTO user(ip) VALUES(?)");
    $stmt->bindParam(1, $ip);

    $stmt->execute();
?>
于 2012-09-06T15:56:29.020 回答
2

将您的访问者存储到数据库中(就像其他答案一样)。使用一个datetime包含访问者最后一次请求日期的字段(您必须在每次综合浏览量时更新该行)。

现在您可以使用 MySQL 间隔计算“当前在线访问者”。

例如:

SELECT
COUNT(1) AS `online_visitors`
FROM `visitors`
WHERE `datetime` > NOW() - INTERVAL 30 SECONDS
于 2012-09-06T16:06:25.900 回答
1

这是Google Analytics中已经内置的功能,IP地址并不是跟踪访问者数量的最佳方式。

于 2012-09-06T15:58:22.667 回答
1

首先,我可以建议这个问题的标题不是很好吗?人们在寻求帮助时第二次猜测问题的解决方案是一个典型的错误——当员工提交错误报告时,我一直在我工作过的当前/以前的公司中看到这一点。

您想要实现的目标是实施某种形式的分析,这样您就可以确定有多少人正在访问您的网站,其中有多少是唯一访问者,并且还能够查看当前正在使用该网站的用户的实时数据. 所以一个更好的标题应该是“我怎样才能获得关于谁在访问我的网站的信息?”。

将 ip 地址存储在表中是实现此目的的有效方法,但远非理想。我强烈建议使用谷歌分析(或类似的东西),因为这将使您能够看到所有这些信息以及更多信息,而且您不需要付出太多努力。您甚至不必成为编码员 - 您只需将他们提供的代码段复制并粘贴到您的 HEAD 标签中即可。那里有很多关于如何做到这一点的信息,所以我不会详细介绍,但请随时询问您是否有任何问题。

于 2012-09-06T16:03:55.157 回答
0

每次请求页面时,您都可以将 IP 地址推送到 MySQL 数据库,以便它是唯一的。

<?php
    $ipaddress = $_SERVER["REMOTE_ADDR"];
    mysql_connect();
    mysql_select_db("visitors");
    mysql_query("INSERT INTO `visitors` (`ipaddress`) VALUES ('$ipaddress')");
    mysql_close();
?>
于 2012-09-06T15:56:50.480 回答