首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将访问者的ip地址存储在php数据库中?

如何将访问者的ip地址存储在php数据库中?
EN

Stack Overflow用户
提问于 2015-01-28 06:30:53
回答 4查看 14.7K关注 0票数 1

我尝试过这个php方法来获取ip地址,但是它提供了错误的输出。正则方法

代码语言:javascript
运行
复制
 <?php     echo $_SERVER['REMOTE_ADDR'];   ?>

不提供适当的输出。当我使用这种方法时,我得到的输出如下

IP地址:‘:1’

我的剧本有什么问题吗?还请提前给出在数据库中存储这些ip地址的详细信息。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-28 06:37:27

“:1”表示这是您的本地主机IP地址。

*1 == 127.0.0.1

你也可以试试这个。

代码语言:javascript
运行
复制
$ip=$_SERVER['REMOTE_ADDR'];
echo "IP address= $ip";

如果您的应用程序驻留在您试图请求的同一台计算机上,那么它将始终返回'::1',这意味着LocalHost。否则它将返回客户端IP地址。

票数 6
EN

Stack Overflow用户

发布于 2015-01-28 06:48:00

完整的脚本是:D :p (不幸的是,这个脚本在mysql中,而不是mysqli/pdo中)。你以后可以修改这个。

File1.php

代码语言:javascript
运行
复制
<?php
//connect to database
        class usersOnline {

            var $timeout = 300;
            var $count = 0;
            var $error;
            var $i = 0;

            function usersOnline () {
                $this->timestamp = time();
                $this->ip = $this->ipCheck();
                $this->new_user();
                $this->delete_user();
                $this->count_users();
                }

            function ipCheck() {
                if (getenv('HTTP_CLIENT_IP')) {
                    $ip = getenv('HTTP_CLIENT_IP');
                    }
                elseif (getenv('HTTP_X_FORWARDED_FOR')) {
                    $ip = getenv('HTTP_X_FORWARDED_FOR');
                    }
                elseif (getenv('HTTP_X_FORWARDED')) {
                    $ip = getenv('HTTP_X_FORWARDED');
                    }
                elseif (getenv('HTTP_FORWARDED_FOR')) {
                    $ip = getenv('HTTP_FORWARDED_FOR');
                    }
                elseif (getenv('HTTP_FORWARDED')) {
                    $ip = getenv('HTTP_FORWARDED');
                    }
                else {
                    $ip = $_SERVER['REMOTE_ADDR'];
                    }
                return $ip;
                }
            function new_user() {
                $cekIP = "SELECT ip FROM useronline WHERE ip='$this->ip'";
                $resultCekIp=mysql_query($cekIP);
                $countCekIp=mysql_num_rows($resultCekIp);
                if($countCekIp>0){
                    $insert1 = mysql_query ("UPDATE useronline SET timestamp='$this->timestamp', date=NOW(), ip='', distinct_ip='$this->ip'");
                    if (!$insert1) {
                        $this->error[$this->i] = "Unable to record new visitor\r\n";            
                        $this->i ++;
                        }
                    }
                else{
                    $insert2 = mysql_query ("INSERT INTO useronline (timestamp, date, ip, distinct_ip) VALUES ('$this->timestamp',NOW(), '$this->ip', '$this->ip')");
                    if (!$insert2) {
                        $this->error[$this->i] = "Unable to record new visitor\r\n";            
                        $this->i ++;
                        }
                    }
                }
            function delete_user() {
                $delete = mysql_query ("DELETE FROM useronline WHERE timestamp < ($this->timestamp - $this->timeout)");
                if (!$delete) {
                    $this->error[$this->i] = "Unable to delete visitors";
                    $this->i ++;
                    }
                }
            function count_users() {
                if (count($this->error) == 0) {
                    $count = mysql_num_rows ( mysql_query("SELECT DISTINCT ip FROM useronline"));
                    return $count;
                    }
                }
            }
        ?>

File2.php

代码语言:javascript
运行
复制
<?php
include('file1.php');
$jml_ol = new usersOnline();
if (count($jml_ol->error) == 0) {
    if ($jml_ol->count_users() == 1) {
        echo $jml_ol->count_users() . "<br />";
        echo "Your IP: " . $jml_ol->ipCheck();
        }
    else{
        echo $jml_ol->count_users() . "<br />";
        echo "Your IP: " . $jml_ol->ipCheck();
        }
}
?> 

在体内还是在div中:

代码语言:javascript
运行
复制
<body>
<?php include('File2.php'); ?>
</body>
票数 4
EN

Stack Overflow用户

发布于 2015-01-28 06:34:57

下面是一些示例代码

代码语言:javascript
运行
复制
 if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $ip = $_SERVER['REMOTE_ADDR'];
}

这里上捡来的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28186043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档