php获取本地ip,php获取IP地址

  php获取本地ip,php获取IP地址

  $dat_path= ./QQWry .dat ;

  如果(!preg_match(/^d{1,3}.d{1,3} .d{1,3} .d{1,3}$/,$ip)) {

  返回“知识产权地址错误";

  如果(!$fd=@fopen($dat_path, Rb ){

  返回“知识产权日期文件不存在或访问被拒绝";

  $ip=explode( . ,$ IP);

  $ IP num=$ IP[0]* 16777216 $ IP[1]* 65536 $ IP[2]* 256 $ IP[3];

  $DataBegin=fread($fd,4);

  $DataEnd=fread($fd,4);

  $ipbegin=内爆(,unpack(L ,$ data begin));

  if($ipbegin 0) $ipbegin=pow(2,32);

  $ipend=内爆(,解包( L ,$ DataEnd));

  if($ipend 0) $ipend=pow(2,32);

  $ ipAllNum=($ ipend-$ IP begin)/7 1;

  $ begin num=0;

  $ EndNum=$ ipAllNum

  while($IP 1数量$IP数量 $IP 2数量$IP数量){

  $ Middle=intval(($ EndNum $ begin num)/2);

  fseek($fd,$ IP begin 7 * $ Middle);

  $ipData1=fread($fd,4);

  if(strlen(IP data1)4){

  fclose($ FD);

  返回"系统错误";

  $ip1num=内爆(,解包( L ,$ IP data 1));

  if($ip1num 0) $ip1num=pow(2,32);

  if($ip1num $ipNum) {

  $ EndNum=$ Middle

  继续;

  $DataSeek=fread($fd,3);

  if(strlen $ DataSeek)3){

  fclose($ FD);

  返回"系统错误";

  $DataSeek=内爆(“”,解包( L ,$ DataSeek。chr(0)));

  fseek($fd,$ DataSeek);

  $ipData2=fread($fd,4);

  if(strlen(IP data 2)4){

  fclose($ FD);

  返回"系统错误";

  $ip2num=内爆(,解包( L ,$ IP data 2));

  if($ip2num 0) $ip2num=pow(2,32);

  if($ip2num $ipNum) {

  if($Middle==$BeginNum) {

  fclose($ FD);

  返回"未知";

  $ BeginNum=$ Middle

  $ipFlag=fread($fd,1);

  if($ipFlag==chr(1)) {

  $ipSeek=fread($fd,3);

  if(strlen $ ipSeek)3){

  fclose($ FD);

  返回"系统错误";

  $ipSeek=内爆(“”,解包( 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);

  返回"系统错误";

  $ipFlag=fread($fd,1);

  if($ipFlag==chr(2)) {

  $AddrSeek2=fread($fd,3);

  if(strlen $ addrseek 2)3){

  fclose($ FD);

  返回"系统错误";

  $AddrSeek2=内爆(,解包( L ,$ addrseek 2。chr(0)));

  fseek($fd,$ addrseek 2);

  }否则{

  fseek($fd,-1,SEEK _ CUR);

  while(($char=fread($fd,1))!=chr(0))

  $ipAddr2 .=$ char

  $AddrSeek=内爆(“”,解包( L ,$ AddrSeek。chr(0)));

  fseek($fd,$ AddrSeek);

  while(($char=fread($fd,1))!=chr(0))

  $ipAddr1 .=$ char

  }否则{

  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 $ addrseek 2)3){

  fclose($ FD);

  返回"系统错误";

  $AddrSeek2=内爆(,解包( L ,$ addrseek 2。chr(0)));

  fseek($fd,$ addrseek 2);

  }否则{

  fseek($fd,-1,SEEK _ CUR);

  while(($char=fread($fd,1))!=chr(0)){

  $ipAddr2 .=$ char

  fclose($ FD);

  if(preg_match(/http/i ,$ipAddr2)) {

  $ IP addr 2=

  $ IP addr= $ IP addr 1 $ IP addr 2

  $ipaddr=preg_replace(/CZ88 .NET/is ,,$ IP addr);

  $ IP addr=preg_replace(/^s*/is,",$ IP addr);

  $ipaddr=preg_replace(/s*$/is ,,$ IP addr);

  if(preg_match(/http/i ,$ipaddr) $ipaddr==) {

  $ipaddr=未知;

  返回$ ipaddr

  只要调用此方法,传入一个正确的互联网协议(互联网协议)地址,就能得到纯真互联网协议(互联网协议)数据库中相对应的地理位置了

  注:写有此方法的文件需和纯真数据库文件(QQWry .Dat)放在同一级目录,否则就需要修改$dat_path的内容。

  准备工作:

  建议本地互联网协议(互联网协议)地址数据库,请到http://www.cz88.net/这个网站下载一个纯真互联网协议(互联网协议)数据库,安装完成后,到安装目录里把QQWry.dat文件取出来,这个就是我们想要的互联网协议(互联网协议)数据库了,放到你想要目录下。

php获取本地ip,php获取IP地址