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