广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >php 如何将ip地址转换成真实地址代码
  • 350
分享到

php 如何将ip地址转换成真实地址代码

phpip 2020-01-16 04:01:44 350人浏览 无得
摘要

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php将IP地址转换为真实地址的方法方法使用示例如下define('WEB_ROOT',dirname(__FILE__)); echo converti

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

php将IP地址转换为真实地址的方法

方法使用示例如下

define('WEB_ROOT',dirname(__FILE__));
echo convertip('111.63.244.69','full');

func convertip

function convertip($ip,$integrity='simple'){
    $return='';
    $integrity=in_array($integrity,array('simple','full'))?$integrity:'simple';
    if(preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/",$ip)){
        $iparray=explode('.',$ip);
        if($iparray[0]==10||$iparray[0]==127||($iparray[0]==192&&$iparray[1]==168)||($iparray[0]==172&&($iparray[1]>=16&&$iparray[1]<=31))){
            $return = '- LAN';
        }elseif($iparray[0]>255||$iparray[1]>255||$iparray[2]>255||$iparray[3]>255){
            $return='- Invalid IP Address';
        }else{
            $tinyipfile=WEB_ROOT.'./tinyipdata.dat';//IP==地址数据包精简版
            $fullipfile=WEB_ROOT.'./wry.dat';//IP==地址数据包完整版
            if($integrity=='simple'&&@file_exists($tinyipfile)){
                $return=convertip_tiny($ip,$tinyipfile);
            }elseif(@file_exists($fullipfile)){
                $return=convertip_full($ip,$fullipfile);
            }
        }
    }
    return $return;
}

func convertip_tiny

function convertip_tiny($ip,$ipdatafile){
    static $fp=NULL,$offset=array(),$index=NULL;
    $ipdot=explode('.',$ip);
    $ip=pack('N',ip2long($ip));
    $ipdot[0]=(int)$ipdot[0];
    $ipdot[1]=(int)$ipdot[1];
    if($fp===NULL&&$fp=@fopen($ipdatafile,'rb')){
        $offset=@unpack('Nlen',@fread($fp,4));
        $index=@fread($fp,$offset['len']-4);
    }elseif($fp==FALSE){
        return  '- Invalid IP data file';
    }
    $length=$offset['len']-1028;
    $start =@unpack('Vlen',$index[$ipdot[0]*4].$index[$ipdot[0]*4+1].$index[$ipdot[0]*4+2].$index[$ipdot[0]*4+3]);
    for ($start=$start['len']*8+1024;$start<$length;$start+=8){
        if ($index{$start}.$index{$start+1}.$index{$start+2}.$index{$start+3}>=$ip){
            $index_offset=@unpack('Vlen',$index{$start+4}.$index{$start+5}.$index{$start+6}."\x0");
            $index_length=@unpack('Clen',$index{$start+7});
            break;
        }
    }
    @fseek($fp,$offset['len']+$index_offset['len']-1024);
    if($index_length['len']){
        return '- '.@fread($fp,$index_length['len']);
    }else{
        return '- Unknown';
    }
}

func convertip_full

function convertip_full($ip,$ipdatafile){
    if(!$fd=@fopen($ipdatafile,'rb')){
        return '- Invalid IP data file';
    }
    $ip=explode('.',$ip);
    $ipNum=$ip[0]*16777216+$ip[1]*65536+$ip[2]*256+$ip[3];
    if(!($DataBegin=fread($fd,4))||!($DataEnd=fread($fd,4))) return;
    @$ipbegin=implode('',unpack('L',$DataBegin));
    if($ipbegin<0) $ipbegin+=pow(2,32);
    @$ipend=implode('',unpack('L',$DataEnd));
    if($ipend<0) $ipend+=pow(2,32);
    $ipAllNum=($ipend-$ipbegin)/7+1;
    $BeginNum=$ip2num=$ip1num=0;
    $ipAddr1=$ipAddr2='';
    $EndNum=$ipAllNum;
    while($ip1num>$ipNum||$ip2num<$ipNum){
        $Middle= intval(($EndNum+$BeginNum)/2);
        fseek($fd,$ipbegin+7*$Middle);
        $ipData1=fread($fd,4);
        if(strlen($ipData1)<4){
        fclose($fd);
            return '- System Error';
        }
        $ip1num=implode('',unpack('L',$ipData1));
        if($ip1num<0) $ip1num+=pow(2,32);
        if($ip1num>$ipNum){
            $EndNum=$Middle;
            continue;
        }
        $DataSeek=fread($fd,3);
        if(strlen($DataSeek)<3){
            fclose($fd);
            return '- System Error';
        }
        $DataSeek=implode('',unpack('L',$DataSeek.chr(0)));
        fseek($fd,$DataSeek);
        $ipData2=fread($fd,4);
        if(strlen($ipData2)<4){
            fclose($fd);
            return '- System Error';
        }
        $ip2num=implode('',unpack('L',$ipData2));
        if($ip2num<0) $ip2num+=pow(2,32);
        if($ip2num<$ipNum){
            if($Middle==$BeginNum){
                fclose($fd);
                return '- Unknown';
            }
            $BeginNum=$Middle;
        }
    }
    $ipFlag=fread($fd,1);
    if($ipFlag==chr(1)){
        $ipSeek=fread($fd,3);
        if(strlen($ipSeek)<3){
            fclose($fd);
            return '- System Error';
        }
        $ipSeek=implode('',unpack('L',$ipSeek.chr(0)));
        fseek($fd,$ipSeek);
        $ipFlag=fread($fd,1);
    }
    if($ipFlag==chr(2)){
        $AddrSeek=fread($fd,3);
        if(strlen($AddrSeek)<3){
            fclose($fd);
            return '- System Error';
        }
        $ipFlag=fread($fd,1);
        if($ipFlag==chr(2)){
            $AddrSeek2=fread($fd,3);
            if(strlen($AddrSeek2)<3){
                fclose($fd);
                return '- System Error';
            }
            $AddrSeek2=implode('',unpack('L',$AddrSeek2.chr(0)));
            fseek($fd,$AddrSeek2);
        }else{
            fseek($fd,-1,SEEK_CUR);
        }
        while(($char=fread($fd,1)) != chr(0))
        $ipAddr2 .= $char;
        $AddrSeek=implode('',unpack('L',$AddrSeek.chr(0)));
        fseek($fd,$AddrSeek);
        while(($char=fread($fd,1)) != chr(0))
        $ipAddr1 .= $char;
    }else{
    fseek($fd,-1,SEEK_CUR);
    while(($char=fread($fd,1)) != chr(0))
    $ipAddr1 .= $char;
    $ipFlag=fread($fd,1);
    if($ipFlag==chr(2)){
        $AddrSeek2=fread($fd,3);
        if(strlen($AddrSeek2)<3){
            fclose($fd);
            return '- System Error';
        }
        $AddrSeek2=implode('',unpack('L',$AddrSeek2.chr(0)));
        fseek($fd,$AddrSeek2);
    }else{
        fseek($fd,-1,SEEK_CUR);
    }
    while(($char=fread($fd,1)) != chr(0))
        $ipAddr2 .= $char;
    }
    fclose($fd);
    if(preg_match('/Http/i',$ipAddr2)){
        $ipAddr2='';
    }
    $ipaddr="$ipAddr1 $ipAddr2";
    $ipaddr=preg_replace('/CZ88\.net/is','',$ipaddr);
    $ipaddr=preg_replace('/^\s*/is','',$ipaddr);
    $ipaddr=preg_replace('/\s*$/is','',$ipaddr);
    if(preg_match('/http/i',$ipaddr)||$ipaddr==''){
        $ipaddr='- Unknown';
    }
    return '- '.$ipaddr;
}

--结束END--

本文标题: php 如何将ip地址转换成真实地址代码

本文链接: https://www.lsjlt.com/news/276.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • php 如何将ip地址转换成真实地址代码
    本文操作环境:windows7系统、PHP7.1版、DELL G3电脑php将IP地址转换为真实地址的方法方法使用示例如下define('WEB_ROOT',dirname(__FILE__)); echo converti...
    99+
    2020-01-16
    php ip
  • php如何实现IP地址和整数的转换
    今天小编给大家分享一下php如何实现IP地址和整数的转换的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。IP地址是计算机互联网...
    99+
    2023-07-06
  • springboot如何获取真实ip地址
    这篇“springboot如何获取真实ip地址”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springboot如何获取真实...
    99+
    2023-06-30
  • 如何使用http代理服务器ip地址隐藏电脑真实的ip地址
    这篇文章将为大家详细讲解有关如何使用http代理服务器ip地址隐藏电脑真实的ip地址,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。只要我们连接虚拟网络,整个网络环境就会发生变化。无论是打开网页、聊QQ还是...
    99+
    2023-06-20
  • 如何用PHP实现IP地址跳转
    这篇文章主要介绍了如何用PHP实现IP地址跳转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用PHP实现IP地址跳转文章都会有所收获,下面我们一起来看看吧。第一步:获取访客的IP地址使用PHP处理IP地址,...
    99+
    2023-07-05
  • php怎么将路径转换成实际路径(绝对地址)
    在php中,可以使用realpath()函数来将路径转换成实际路径,语法“realpath(path)”。realpath()函数可以接受一个文件的相对路径作为参数“path”的值,然后返回绝对路径(实际文件所在位置信息),该路径包含文件名...
    99+
    2022-06-14
    php文件目录 php
  • VC实现将网址解析出所有ip地址的实例代码
    通过调用gethostbyname 系统函数进行解析 void GetHostNamebyIp(char* hostName) { if(NULL == hostName) ...
    99+
    2022-11-12
    vc实现网址解析ip地址 vc实现网址解析
  • 如何隐藏服务器真实IP地址
    隐藏服务器真实IP地址的方法:1、使用高防的盾机服务,能将虚设IP映射在真实IP的主机上,避免被直接攻击的绝对目标;2、使用CDN技术,能保障内容是以一种极为高效的形式为用户提供服务;3、使用域名导向技术,能将服务器的IP进行隐藏。具体内容...
    99+
    2022-10-09
    ip地址 服务器
  • Java编程IP地址和数字相互转换代码示例
    最近才知道,将ip地址转换成十进制、八进制、十六进制同样可以访问网站。IP转为数字(第二种算法。用左移、按位或实现。效率更高。):public long ipToLong(String ipAddress) { long result =...
    99+
    2023-05-30
    java ip地址 相互
  • feign 如何获取请求真实目的ip地址
    需求 最近小编的项目中出现了很多feign 调用出现 Read Time out 的异常,但因为没有集成链路追踪的第三方框架,查不到原因。 所以想到打印请求的ip地址,判断是指定的服...
    99+
    2022-11-12
    feign 真实ip地址 获取请求ip地址
  • PHP根据IP地址怎么实现城市切换或跳转
    这篇“PHP根据IP地址怎么实现城市切换或跳转”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“PHP根据IP地址怎么实现城市切换或跳转”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢...
    99+
    2023-06-06
  • PHP如何自定义生成二维码跳转地址
    PHP如何自定义生成二维码跳转地址,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。比较简单的一款PHP自定义生成二维码跳转地址,手机端微信扫码,自动跳转到定义好的链接。支持自定义...
    99+
    2023-06-04
  • 基于nginx反向代理如何获取用户真实Ip地址
    小编给大家分享一下基于nginx反向代理如何获取用户真实Ip地址,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!引言nginx做反向代理时,默认的配置后端获取到的I...
    99+
    2023-06-29
  • php如何实现隐藏地址跳转
    这篇文章主要介绍“php如何实现隐藏地址跳转”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何实现隐藏地址跳转”文章能帮助大家解决问题。一、隐藏地址跳转的实现原理在Web开发中,常用的地址跳转...
    99+
    2023-07-05
  • 看这位“翻译官-DNS”如何转换域名和IP地址
    DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。你可以把它想象成一本巨大的电话簿。一...
    99+
    2023-06-03
  • java如何实现获取客户端ip地址的示例代码
    目录一、前言二、摘要  三、java实现获取客户端ip 一、前言 环境:jdk1.8 + idea2019.3 + Windows10 二、摘要&nbs...
    99+
    2022-11-13
    java 获取客户端ip地址 java 获取ip地址
  • 项目中Nginx多级代理是如何获取客户端的真实IP地址
    目录多级代理中获取客户端真实IP日志的格式获取客户端真实IP总结:多级代理中获取客户端真实IP 日志的格式 nginx中常用日志格式配置如下: log_format main '...
    99+
    2022-11-13
    nginx 多级代理 nginx真实IP获取 nginx获取客户端真实ip配置
  • 如何将PHP页面转换成HTML代码
    PHP是一种非常流行的后端编程语言。它可以帮助我们构建各种动态网站和应用程序。但是,在一些情况下,我们可能需要将PHP页面转换成HTML代码。这个过程看起来可能有些棘手,但是我们可以通过一些简单的步骤来实现它。首先,让我们先了解一下为什么会...
    99+
    2023-05-14
  • redis不能访问本机真实ip地址的问题如何解决
    本篇内容介绍了“redis不能访问本机真实ip地址的问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!redis无法访问本机真实ip...
    99+
    2023-06-20
  • 详解MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换
    在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNED INT)来存储IP地址,而不是使用字符串。但是没有给出具体原...
    99+
    2022-11-12
    MySQL 存储IP地址 MySQL ip地址
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作