在mysql表中保存当前的ip地址

时间:2012-09-06 15:52:43

标签: php mysql web

我正在寻找一种好方法,以显示当前(现场)有多少人访问我的网站。

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

所以我可能要做的是:

创建一个配置良好的mysql表

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

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

使流程实时或接近实时

有人能帮助我吗?

5 个答案:

答案 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();
?>