℡龙龙 发表于 2013/11/15 21:59

【转载】NexusPHP pt显示IP地址地理位置

默认的NexusPHP 的显示IP地理位置不知道本来就不能使用还是我下载的源码坏了,今天修正。
原先的效果图。


首先查找打开文件 “/include/functions.php”
查找
$location = array($lang_functions['text_unknown'],"");
注释 替换为
// $location = array($lang_functions['text_unknown'],"");
       $location = array(getUserAddrss($ip),"");

再最低侧插入
/**2013-11-15 ℡龙龙修正 admin@nmc126.com
替换
// $location = array($lang_functions['text_unknown'],"");
$location = array(getUserAddrss($ip),"");
*/

function getUserAddrss($ip)
{
      global $lang_functions;
      $address = mysql_fetch_assoc(sql_query("SELECT memo FROM address where inet_aton('$ip')<=endip and inet_aton('$ip')>=beginip"));
      if(empty($address))
                return $lang_functions['text_unknown'];
      return $address['memo'];
}

然后再你的数据库内新建表“address”
-- phpMyAdmin SQL Dump
-- version 3.4.8
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2013 年 11 月 15 日 20:29
-- 服务器版本: 5.5.28
-- PHP 版本: 5.3.17

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 数据库: `nexusphp`
--

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

--
-- 表的结构 `address`
--

CREATE TABLE IF NOT EXISTS `address` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`beginip` int(20) unsigned NOT NULL COMMENT '起始ip',
`endip` int(20) unsigned NOT NULL COMMENT '终止ip',
`memo` varchar(100) NOT NULL COMMENT '说明',
PRIMARY KEY (`id`)
) ENGINE=MyISAMDEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;


并且插入你的数据

sql语句 (替换你的数据)
INSERT INTO `nexusphp`.`address` (`id`, `beginip`, `endip`, `memo`) VALUES ('1', INET_ATON('10.101.1.1'), INET_ATON('10.101.1.254'), '一号学生公寓一楼'), ('2', INET_ATON('10.101.2.1'), INET_ATON('10.101.2.254'), '一号学生公寓二楼');

或者手动添加插入。




批量导入数据
比如你的 excel 的“beginip”=B1 ,“endip”=D1 ,“memo”=F1.
INSERT INTO `nexusphp`.`address` (`beginip`, `endip`, `memo`) VALUES (INET_ATON('="B1"'),INET_ATON('="D1"'), '=="F1"');
INSERT INTO `nexusphp`.`address` (`beginip`, `endip`, `memo`) VALUES (INET_ATON('="B2"'),INET_ATON('="D2"'), '=="F2"');

上列例子 转换为 .txt 文本文件,进行SQL 导入。



显示正确的效果图



此文章 转自 http://bbs.nmc126.com/thread-2528-1-1.html

补懂 发表于 2013/11/15 22:03

只爱小玉 发表于 2013/11/15 22:16

妹就是正义,妹就是经典,妹就是王道,妹就是真理,妹就是未来,妹就是希望,妹就是信仰,妹就是唯一! ! ! !

曾经那么美 发表于 2013/11/16 00:59

居高领下 发表于 2013/11/16 10:48

心冷漠情何在 发表于 2013/11/16 16:51

伤徝得欣赏 发表于 2013/11/16 19:53

飞翔的脚趾 发表于 2013/11/16 23:00

唱单身情歌 发表于 2013/11/17 02:10

掩饰的心伤 发表于 2013/11/17 05:50

诠释的爱 发表于 2013/11/17 09:24

黯淡 发表于 2013/11/17 18:22

liuda 发表于 2013/11/20 21:29

路过帮顶

小樱 发表于 2014/9/23 14:08

作死啊,用SQL当IP数据库?
页: [1]
查看完整版本: 【转载】NexusPHP pt显示IP地址地理位置