QQWry.dat导入Mysql显IP程序
刚刚学PHP,以前是ASP玩着转到PHP,在ASP时也研究过纯真的IP数据转到MDB里再显示出地址!这几天学得差不多就想着用PHP也来根据IP显示地址!
大家狠狠的批评吧!
好了,跟着下面步骤做:Let's go!!!!
一、去www.CZ88.net下载最新的纯真IP数据库!然后用自带的程序解压出TXT来。
二、把解压出来的TXT放去站点目录(随便你自己站点下的目录,如我的是d:\server\wwwroot\php)先用EP,因为我用的是UTF8(原TXT编码是ANSI),所以用EP打开另存为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;
(呵呵,第一次发贴,不知道上面那段SQL会不会被屏蔽一些字符)
四、现在可以用PHP先转TXT的IP地址为十进制数代码如下:
<?php
set_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);