您的位置:首页 > 其它

保存访问者IP

2010-05-19 13:40 99 查看
在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;
}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: