保存访问者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;
}
?>
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;
}
?>
相关文章推荐
- java Web项目中,利用其过滤功能,实现访问者每次访问服务器时,记录访问者的IP,访问时间,Url等信息,并保存到文件的操作
- 路由器更改IP设置无法保存(失败)?
- tomcat 记录 访问者 ip + 访问地址
- 通过GeoIP2分析访问者IP获取地理位置信息
- 统计JAVA网站访问次数并获得访问者IP
- 用PHP如何得到访问者的真实IP
- 获取访问者ip
- 如何通过JS得到访问者的IP
- 如何将访问者数目周期性地保存?
- 利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
- python从oracel中提取ip信息并批量ping后保存
- 通过GeoIP2分析访问者IP获取地理位置信息
- PING 一个范围内的IP,把不通的保存下来的方法(批处理脚本)
- 自动识别IP,并跳转到来访问者所在的城市
- tomcat 记录 访问者 ip + 访问地址
- IP及端口号的获取及保存【实用】
- 利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
- ip每次重启后都改变,保存不了,每次都要重新改
- tomcat 记录 访问者 ip + 访问地址
- 我的LINUX学习之路三之IP相关设置与VI退出与保存命令