qqwry.dat 导入mysql_QQWry.dat导入Mysql显IP程序

joseph1984

转:QQWry.dat导入Mysql显IP程序

一、去www.CZ88.net下载最新的纯真IP数据库!然后用自带的程序解压出TXT来。

二、把解压出来的TXT放去站点目录(随便你自己站点下的目录,如我的是/var/www/),因为我用的是UTF8(原TXT编码是ANSI),所以用EP或UE打开另存为UTF8编码,如下图:

三、然后进入phpMyAdmin 创建一个数据库和表,这里有个注意的地方就是也要用UTF8(呵呵,国际化点)

创建库:ipdb

创建ip表时的SQL语句:

CREATE TABLE `ip` ( `id` int(11) unsigned NOT NULL auto_increment,`ip1` int(10) unsigned NOT NULL default '0', `ip2` int(10) unsigned NOT NULL default '0',`address` varchar(255) NOT NULL default '',PRIMARY KEY (`id`)) TYPE=MyISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

四、现在可以用PHP先转TXT的IP地址为十进制数代码如下:<?phpset_time_limit (0); //设置脚本运行时间,参数0为无限时

$fd = fopen("D:\SERVER\wwwroot\PHP\ip.txt", "r"); //以只读方式打开文件,并将指针指向文件头,注意要实际路径

$temp_filename = tempnam("/tmp", "ip_"); //在临时目录中创建一个以IP_开头的文件

$fd2 = fopen("$temp_filename", "w"); //写入方式打开,将文件指针指向文件头并将文件大小截为零,文件没有就尝试创建

$id = 0;while(!feof($fd)){ //测试文件指针是否到了文件结束的位置

$id++; //库表中的id字段增1

$linestr = fgets($fd, 4096); //从文件指针中读取一行

if(!trim($linestr)) break; //修剪两边多余空格等

$ip1_str = trim(substr($linestr,0,15)); //返回所需的字符串

$ip2_str = trim(substr($linestr,16,15));$address_str = trim(substr($linestr,32));//以下是将ip1转为十进制数

$ip_arr = explode(".",$ip1_str); //使用一个字符串分割另一个字符串以.来区分

$ip1_str = 0; //初始化

foreach($ip_arr as $i=>$s){$ip1_str += $s*pow(256,3-$i); //幂次方函数

}//以下是将ip2转为十进制数

$ip_arr = explode(".",$ip2_str);$ip2_str = 0; //初始化

foreach($ip_arr as $i=>$s){$ip2_str += $s*pow(256,3-$i);

}fwrite($fd2,($id>1?"\r\n":"")."\"$id\",\"$ip1_str\",\"$ip2_str\",\"$address_str\""); //写入临时文件

}die("输出完成");?>

----------------------------------------------------------------------------------------------------------------------注意fopen函数的实际路径,注释都加了,应该能看明白吧!

执行后,会在临时目录生成一个以IP_为前缀的tmp文件

五、现在可以用生成的临时文件导入到ip表中了代码如下:

数据库连接的代码db.php<?php $dbhost = 'localhost'; //数据库服务器

$dbuser = 'root'; //数据库用户名

$dbpw = '123456'; //数据库密码

$dbname = 'ipdb'; //数据库名

$dbtable = 'ip'; //ip数据表

?>

------------------------------------------------------------------------------------------------------

mysql_query("TRUNCATE TABLE `$dbtable`;");mysql_query("LOAD DATA LOCAL INFILE '".addslashes("/tmp/ip_11.tmp")."' INTO TABLE `$dbtable` FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\\\' LINES TERMINATED BY '\\r\\n'");?>好了最后是显示IP的代码:<?phprequire_once ("db.php");if(!mysql_connect($dbhost, $dbuser, $dbpw, $dbname, $pconnect) or !mysql_select_db($dbname)){die("datebase error."); }mysql_query("SET NAMES 'utf8'");$ip = $_SERVER['REMOTE_ADDR'];echo '你的IP:'.$ip.'
';$ip_arr = explode(".",$ip);$ip = 0;foreach($ip_arr as $i=>$s){$ip += $s*pow(256,3-$i);

}echo '转十进制值:'.$ip.'
';$result = mysql_query("SELECT * FROM ip WHERE ip1<= $ip AND ip2>= $ip");$re_arr = mysql_fetch_array($result);echo "你来自: $re_arr[address]".'
';?>嘻嘻,完成!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值