数据库是 纯真数据库 格式为 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;
}
?>
?>