当前位置: 代码迷 >> PHP >> 显示访客来源的有关问题
  详细解决方案

显示访客来源的有关问题

热度:24   发布时间:2016-04-28 17:41:33.0
显示访客来源的问题
<?php 

function getIp(){
        $onlineip='';
        if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){
                $onlineip=getenv('HTTP_CLIENT_IP');
        } elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){
                $onlineip=getenv('HTTP_X_FORWARDED_FOR');
        } elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){
                $onlineip=getenv('REMOTE_ADDR');
        } elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){
                $onlineip=$_SERVER['REMOTE_ADDR'];
        }
        return $onlineip;
}

$onlineip = getIp();

$ipinfo=json_decode(file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$onlineip),true);//将API的json格式解码保存到ipinfo变量
?>
<table>
<tr>
<td>IP:</td><td><?php echo $onlineip ?></td>
</tr>
<tr>
<td>国家:</td><td><?php echo $ipinfo["data"]["country"] ?></td>
</tr>
<tr>
<td>省份:</td><td><?php echo $ipinfo["data"]["region"] ?></td>
</tr>
<tr>
<td>城市:</td><td><?php echo $ipinfo["data"]["city"] ?></td>
</tr>
<tr>
<td>县:</td><td><?php echo $ipinfo["data"]["county"] ?></td>
</tr>
<tr>
<td>地区:</td><td><?php echo $ipinfo["data"]["area"] ?></td>
</tr>
<tr>
<td>ISP:</td><td><?php echo $ipinfo["data"]{"isp"}?></td>
</tr>
</table>
我这么写的,可以查到IP,但是只能查到一次。以后别的访客来查,显示的还是第一个访客的来源。
用CMS弄的,访客来源没有建立相应数据表。
问问是代码的问题呢,还是没建立相应的数据表。
------解决思路----------------------
获取ip那个方法本来就不严谨,没想到一直流传到现在还有人用
------解决思路----------------------
你先只取 $_SERVER['REMOTE_ADDR'] 试一下。

或者你自己应该找出来那段代码里最后生效的是哪个变量,就找到问题所在了。而且这和你自己的服务器网络结构也是有关系的。你应该在PHP手册里Predefined Variables一节搞懂那些环境变量的含义先。不应该直接把一段代码这么丢出来,就算别人帮你解决了,这块对你来说还是盲点。
  相关解决方案