php获取ip地址详细信息

 代码如下 复制代码

function getip ()
        {
                if (getenv('http_client_ip')) {
                        $ip = getenv('http_client_ip');
                } else if (getenv('http_x_forwarded_for')) {
                        $ip = getenv('http_x_forwarded_for');
                } else if (getenv('remote_addr')) {
                        $ip = getenv('remote_addr');
                } else {
                        $ip = $_server['remote_addr'];
                }
                return $ip;
        }

 

function getipaddres ($ip = '')
        {
                if($ip == ''){
                        $ip = getip();
                }
                if($ip == '127.0.0.1'){
                        return $ip_addres = '本地机器';
                }
                $recordlength = 17+22+13+47+12+1;
                $ret = ereg('^([0-9]+).([0-9]+).([0-9]+).([0-9]+)$', $ip, $ips教程ection);
                if($ret == false){$ip_addres = 'ip地址有错';}
                for($i = 1; $i <= 4; $i ++){
                        if($ipsection[$i] > 255){
                                $ip_addres = 'ip地址有错';
                        } else {
                                $thisip .= sprintf('%03.0f', $ipsection[$i]). (($i<4) ? '.' : '');
                        }
                }
                $fp= fopen($obj['rootdir'].'data/ip.txt', 'rb');
                if($fp == null){
                        $ip_addres = 'ip记录文件打开出错';
                }
                fseek($fp, 0, seek_end);
                $datafieldbegin = 0xc2;
                $recordcount = floor((ftell($fp)-$datafieldbegin)/$recordlength);
                if($recordcount <= 1){
                        $ip_addres = 'ip记录文件打开出错';
                } else {
                        $rangb = 0;
                        $range = $recordcount;
                        while($rangb<$range-1){
                                $recno = floor(($rangb+$range)/2);
                                fseek($fp,$recno*$recordlength+$datafieldbegin, seek_set);
                                $buf = fread($fp, $recordlength);
                                if(strlen($buf) == 0){
                                        return false;
                                }
                                $startip = (substr($buf, 0, 17));
                                $endip = trim(substr($buf, 17, 22));
                                $country = trim(substr($buf, 17+22, 13));
                                $local = trim(substr($buf, 17+22+13, 47));
                                if (strcmp($thisip, $startip) >= 0 && strcmp($thisip, $endip)<=0){
                                        break;
                                }
                                if(strcmp($thisip, $startip) > 0){
                                        $rangb = $recno;
                                } else {
                                        $range = $recno;
                                }
                        }
                        if(!($rangb < $range - 1)){
                                $ip_addres= '未知地址!';
                        } else {
                                $ip_addres = $country;
                                $ip_addres .= $local;
                        }
                }
                fclose($fp);
                return $ip_addres;
        }

// 调用 方法
echo getipaddres();

时间: 2024-09-17 11:32:36

php获取ip地址详细信息的相关文章

如何获取访问者IP地址详细信息

利用qq的接口程序 <script type=text/网页特效 src=http://fw.qq.com/ipaddress charset="gb2312"></script> <script type=text/网页特效> document.write(ipdata.join(' ')); </script> 202.105.128.73 广东省 深圳市 <script type=text/javascript src=htt

PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)_php实例

如下所示: <?php $data = '254.254.254.254'; echo ip2long($data); function getIP() { if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); elseif(getenv

PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)

如下所示: <?php $data = '254.254.254.254'; echo ip2long($data); function getIP() { if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); elseif(getenv

ip 地址详细信息查询程序

include_once('./qqwry.php教程'); $QQWry=new QQWry; function get_real_ip(){ $ip=false; if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips教程 = explode (", &

Windows 8系统有线网卡自动获取IP地址

  设置动画示范教程: Windows 8系统有线网卡自动获取IP地址设置动画 Windows 8系统有线网卡自动获取IP地址的详细设置步骤如下: 第一步:进入Windows 8系统的经典桌面,在电脑桌面右下角找到网络图标,右键点击并选择 打开网络和共享中心.如下图所示: 第二步:弹出 网络和共享中心 的界面,点击 更改适配器设置.如下图所示: 第三步:打开 更改适配器设置后,找到 以太网,右键点击并选择 属性.如下图所示: 第四步:找到并点击 Internet协议版本4(TCP/IPv4),点

Windows7有线网卡自动获取IP地址设置

  设置动画示范教程: Windows 7系统有线网卡自动获取IP地址的详细设置步骤如下: 第一步:鼠标点击电脑桌面右下角小电脑图标,在弹出的对话框中,点击 打开网络和共享中心.如下图所示: 第二步:弹出 网络和共享中心 的界面,点击 更改适配器设置.如下图所示: 第三步:找到 本地连接,右键点击并选择 属性.如下图所示: 第四步:找到并点击 Internet协议版本4(TCP/IPv4),点击 属性.如下图所示: 第五步:选择 自动获得IP地址(O).自动获得DNS服务器地址(B),点击 确定

Windows XP系统有线网卡自动获取IP地址设置

  设置动画示范教程: Windows XP系统有线网卡自动获取IP地址设置动画 操作步骤: Windows XP系统有线网卡自动获取IP地址的详细设置步骤如下: 第一步:电脑桌面上找到 网上邻居 的图标,右键点击并选择 属性.如下图所示: 第二步:弹出 网络连接 的对话框后,找到 本地连接 的图标,右键点并选择 属性.如下图所示: 第三步:出现 本地连接属性 的对话框后,找到并点击 Internet协议(TCP/IP),点击 属性.如下图所示: 第四步:选择 自动获得IP地址(0).自动获得D

电脑无法自动获取IP地址怎么办?

故障排查: 由于笔者公司的客户机是通过DHCP服务器自动获取IP地址的,所以出现这种提示信息应该是客户机没有分配到IP地址所致.在"运行"中键入 "cmd",进入"命令窗口",输入"ipconfig"回车,发现此台电脑目前所使用的IP地址是"169.254.0.6",这个结果证实了笔者先前 的判断,因为客户机如果四次向DHCP服务器发出请求,而未得到响应,那么系统会自动分配一个范围在169.254.0.1到

php通过Chianz.com获取IP地址与地区的方法

 这篇文章主要介绍了php通过Chianz.com获取IP地址与地区的方法,是解析IP地址与地区非常实用的技巧,需要的朋友可以参考下     本文实例讲述了php通过Chianz.com获取IP地址与地区的方法.分享给大家供大家参考.具体分析如下: 一个IP获取的结果不是很完善,究其原因是因为ip138的IP解析应对国外的地址时不是很详细,所以又重新写了个用Chianz.com的代码,实例代码如下: 代码如下: <!DOCTYPE html> <html lang="en&qu