php - 2 为访客存储 IP : PROXY?

标签 php mysql

在我的数据库中,我决定存储回答民意调查的访问者的 IP。 一切正常,但只有 2 种情况,不仅存储 1 个 IP,而且同一访问者有 2 个相同的 ip

MySQL输出(我用XX替换了2个数字)

10.188.XX.129, 10.188.XX.129

以下是接收访问者 IP 的脚本:

    <?php 
 function realip() {
     if (isset($_SERVER)) {
   if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {
    $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
   } elseif (isset($_SERVER["HTTP_CLIENT_IP"])) {
    $realip = $_SERVER["HTTP_CLIENT_IP"];
   } else {
    $realip = $_SERVER["REMOTE_ADDR"];
   }

     } else {
   if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
    $realip = getenv( 'HTTP_X_FORWARDED_FOR' );
   } elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
    $realip = getenv( 'HTTP_CLIENT_IP' );
   } else {
    $realip = getenv( 'REMOTE_ADDR' );
   }
     }
     return $realip;
  }
?>

我的问题是:99.9%的时间,只有1个IP存储在MYSQL上。我在 mySQL 数据库中有 2 个案例(我的帖子中的示例),其中 2 个 IP 存储在 mySQL 的 1 行上:这是否意味着访问者正在使用 PROXY ? 谢谢

最佳答案

嗯嗯,终于明白了。
您将 IP 地址存储在 varchar(255) 之类的列中,而不是 int 列中,甚至也不是 varchar(15) 中。所以,任何东西都可以存储。因此,您可以存储除了 IP 地址之外的任何内容。

好吧。如果您想存储 IP 地址,则脚本中只有一个可用 - $_SERVER["REMOTE_ADDR"] 之一。

可以对 realip() 函数的结果进行一些使用,但使用它时应采取预防措施并了解相关知识,并且 - 最重要的部分 - 不能代替 IP 地址,而只能作为其补充,作为一些补充信息。

关于php - 2 为访客存储 IP : PROXY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787176/

相关文章:

php - cms 的最佳数据库概念

php5 包在 x84_64 env 上损坏

mysql - 查询以获得最近的游戏结果

mysql - 将 SUM 的多个查询合并为一个结果

mysql - 一对一关系

php - Laravel 拒绝用户 'root' @'localhost' 访问(使用密码 : YES) in laravel 4. 2

php - 使用 cURL、HTTPS POST 的服务器到服务器通信

mysql - 按行级别的 SQL 过滤器

mysql - 即使该列存在于 mysql 表中,也会出现未知列错误

php - 无法启用 Behat Mink 扩展