保存访问者IP

在flash与php结合实现ip地址区域查询那个程序的基础上我们在php程序做了一点小改动 那就是保存访问过该网址的用户的ip地址

 

flash端程序不变

php端里面假如几行代码:  如下:

 

 

 

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

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


//得到当前目录
$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);

//=================================================================
date_default_timezone_set('Asia/Shanghai');//这是时区,一定要设置
$date=date("Y-m-d 当天时间: H:i:s");
//保存访问者ip地址

$fileName="ip.txt";//保存访问者ip的文件
$fHandle=fopen($fileName,"a+");
//将ip写入我们的文件
fwrite($fHandle,$getIP."/t/t".$area."/t/t".$date."/r/n"); //注意 "/r/n表示在写入的txt文本中换行"
fclose($fHandle);

//===

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、付费专栏及课程。

余额充值