我正在寻找一种好方法,以显示当前(实时)访问我的网站的人数。
我发现,当我将访问我的服务器/站点的人的 IP 地址保存在 mysql 表中时,这可能是最简单的方法。
所以我可能要做的是:
创建一个配置良好的 mysql 表
添加保存IP地址的功能(我猜是php)
添加删除IP地址的功能,如果不再需要
使过程实时或接近实时
有人可以帮助我吗?
这是一个快速示例,说明如何获取客户端的真实 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 注入的影响。使用PDO或MYSQLI
使用 PDO 扩展的示例:
<?php
$stmt = $dbh->prepare("INSERT INTO user(ip) VALUES(?)");
$stmt->bindParam(1, $ip);
$stmt->execute();
?>
将您的访问者存储到数据库中(就像其他答案一样)。使用一个datetime
包含访问者最后一次请求日期的字段(您必须在每次综合浏览量时更新该行)。
现在您可以使用 MySQL 间隔计算“当前在线访问者”。
例如:
SELECT
COUNT(1) AS `online_visitors`
FROM `visitors`
WHERE `datetime` > NOW() - INTERVAL 30 SECONDS
这是Google Analytics中已经内置的功能,IP
地址并不是跟踪访问者数量的最佳方式。
首先,我可以建议这个问题的标题不是很好吗?人们在寻求帮助时第二次猜测问题的解决方案是一个典型的错误——当员工提交错误报告时,我一直在我工作过的当前/以前的公司中看到这一点。
您想要实现的目标是实施某种形式的分析,这样您就可以确定有多少人正在访问您的网站,其中有多少是唯一访问者,并且还能够查看当前正在使用该网站的用户的实时数据. 所以一个更好的标题应该是“我怎样才能获得关于谁在访问我的网站的信息?”。
将 ip 地址存储在表中是实现此目的的有效方法,但远非理想。我强烈建议使用谷歌分析(或类似的东西),因为这将使您能够看到所有这些信息以及更多信息,而且您不需要付出太多努力。您甚至不必成为编码员 - 您只需将他们提供的代码段复制并粘贴到您的 HEAD 标签中即可。那里有很多关于如何做到这一点的信息,所以我不会详细介绍,但请随时询问您是否有任何问题。
每次请求页面时,您都可以将 IP 地址推送到 MySQL 数据库,以便它是唯一的。
<?php
$ipaddress = $_SERVER["REMOTE_ADDR"];
mysql_connect();
mysql_select_db("visitors");
mysql_query("INSERT INTO `visitors` (`ipaddress`) VALUES ('$ipaddress')");
mysql_close();
?>