Heim Backend-Entwicklung PHP-Problem So konvertieren Sie eine IP-Adresse in einen echten Adresscode in PHP

So konvertieren Sie eine IP-Adresse in einen echten Adresscode in PHP

Oct 14, 2021 am 09:28 AM
ip php

php-Methode zum Konvertieren einer IP-Adresse in eine echte Adresse: 1. Erstellen Sie eine PHP-Beispieldatei. 2. Verwenden Sie „define('WEB_ROOT',dirname(__FILE__));echo Convertip('ip','full');" Methode Implementieren Sie einfach die Konvertierung.

So konvertieren Sie eine IP-Adresse in einen echten Adresscode in PHP

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

php-Methode zum Konvertieren der IP-Adresse in eine echte Adresse

Beispiele für die Methodenverwendung sind wie folgt

1

2

define('WEB_ROOT',dirname(__FILE__));

echo convertip('111.63.244.69','full');

Nach dem Login kopieren

func Convertip

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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;

}

Nach dem Login kopieren

func Convertip_tiny

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

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';

    }

}

Nach dem Login kopieren

func Convertip_full

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

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;

}

Nach dem Login kopieren

Empfohlenes Lernen: „PHP Video Tutorial

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie eine IP-Adresse in einen echten Adresscode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

See all articles