flash与php结合实现IP及归属地查询

数据库是 纯真数据库 格式为 UTF-8  txt格式

php文件是UTF-8编码 

 

 

demo :      http://dreamnight.gicp.net/zendphp/IP/connect.swf

flash端:

 

 

 

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.ProgressEvent;
//import flash.text.TextFormat
//flash.system.System.useCodePage=true;//
var myIP:String;
var myPlace:String;
var loader:URLLoader= new URLLoader();
var id=getTimer();
var url:String = " http://dreamnight.gicp.net/zendphp/IP/ipTest.php";
var urlRequest:URLRequest = new URLRequest(url+"?id="+id);
loader.dataFormat=URLLoaderDataFormat.VARIABLES;

loader.load(urlRequest);
loader.addEventListener(Event.COMPLETE,handle);
loader.addEventListener(ProgressEvent.PROGRESS,onProgress);
//var format:TextFormat= new TextFormat();
//format.font="宋体";
//showText.defaultTextFormat=format;
function handle(e:Event):void{
 trace("加载完成");
 var phpData:*=e.target.data;
 trace(phpData);
 myIP=String(phpData.ip);
 trace(myIP);
 myPlace=String(phpData.area);
 trace(myPlace);
 showText.text="您所在的位置是"+myPlace+"/n您的IP地址是"+myIP;
 
 
 
 //释放内存
 loader.removeEventListener(Event.COMPLETE,handle);

 loader.removeEventListener(ProgressEvent.PROGRESS,onProgress);
 url="";
 urlRequest=null;
 loader=null;
 }
 
 function onProgress(e:ProgressEvent):void{
  var percent:int=int(e.bytesLoaded*100/e.bytesTotal);
  showText.text="已经加载"+percent+"%";
  }

 

 

 

 

php端:路径是 : http://dreamnight.gicp.net/zendphp/IP/ipTest.php

 

 

 

<?php
//header("Content-Type:text/html;charset=gb2312");

//$getIP="111.176.149.35"; // 这里是自己随便写的一个ip  实际时你还要通过程序得到这个ip
$getIP="初始IP";
$getIP=getIP();


//得到当前目录
$PHP_SELF=$_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$dir='http://'.$_SERVER['HTTP_HOST'].dirname($PHP_SELF);
//echo  $dir;
$url= $dir.'/assets/ip.txt'; //   ' http://localhost/zendphp/IP '. ' assets/ip.txt'

     

if(file_exists($url)){
 die("未找到文件");
 return;
 }
$rows=file($url);
$area=search($getIP,$rows);

echo "area=".$area."&ip=".$getIP;  ///下面就开始是flash端的接收
//echo "area=".$area."&ip=221.235.102.150";

function search ($getIP,$rows){
 
 //只开始时查前三段

$subIPs=explode(".",$getIP);
$subIP=$subIPs[0].$subIPs[1].$subIPs[2];
$subIPSub=$subIPs[0].$subIPs[1];
$lastIP=$subIPs[3];
$p=0;
$q=0;
//$length=count($rows);
foreach ($rows as $line){
 ++$p;
$ipData=preg_split ('/[/s]+/',$line);//注意这里的空白匹配
 $startIP=$ipData[0];
$endIP=$ipData[1];
$endSerials=explode(".",$endIP);
$three=$endSerials[0].$endSerials[1].$endSerials[2];
 $ipSerials=explode(".",$startIP);
 //目标ip  ===============
 $ipJ=$ipSerials[0].$ipSerials[1].$ipSerials[2];//==============
  $ipJSub=$ipSerials[0].$ipSerials[1];
 $lastJ=$ipSerials[3];//=============
 //ip信息
 $areaInfoJ=$ipData[2].$ipData[3];//====================
 //可以用二分查找
 if ($subIPSub==$ipJSub){//前两段

  $q=$p;//假如后面没有查出来这就返回该索引信息

 if($subIP==$ipJ){ //前三段
  if($lastIP==$lastJ){//最后一段
    return $areaInfoJ; 
   
  }
 return $areaInfoJ;
  
}
if($subIP>$ipJ&&$subIP<=$three){//第三段比较
   return $areaInfoJ;     

}


}

 

 
 }
  
if($q!=0){
$myInfo=$rows[$q-1];
$myIpData=preg_split ('/[/s]+/',$myInfo);//注意这里的空白匹配
$myArea=$myIpData[2].$myIpData[3];
return  $myArea;
}
  
  return "它是无效IP地址!";
  
}

 

 

function   getIP()   
  {  
  global   $_SERVER;  
  if   (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))    
  {  
  $realip   =   $_SERVER["HTTP_X_FORWARDED_FOR"];  
  }  
  elseif   (isset($_SERVER["HTTP_CLIENT_IP"]))    
  {  
  $realip   =   $_SERVER["HTTP_CLIENT_IP"];  
  }  
  else    
  {  
  $realip   =   $_SERVER["REMOTE_ADDR"];  
  }  
  return   $realip;  
  }

 

 

 

 

 

 

?>

 

 

 

 

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值