geoip+php演示样例:通过ip,获取国家名称和代码

摘要:
˃注意:在本地测试的情况下,$_ SERVER['REMOTE_ADDR']和$_ SERVER['REMOTE_ADDR''可能为127.0.0.1,因此输出内容为空。
GeoIP + PHP的使用


方法一:


下载 GeoIP 的 PHP 文件geoip.inc,保存为 geoip.inc.php


http://sjolzy.cn/php/GeoIP/bak/geoip.inc


php使用代码


<?php
include("geoip.inc.php");
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
$country_name = geoip_country_name_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);

$jsonEcho = array();
$jsonEcho["error"] = 0;
$jsonEcho["country_code"] = $country_code;
$jsonEcho["country_name"] = $country_name;


function jsonp($object, $callback = 'callback') {
		if (!empty($_GET[$callback])) {
			header('Content-Type: application/x-javascript');
		} else {
						header('Content-Type: application/json');
		}
		return $_GET[$callback].'('.json_encode($object).')';
}


echo jsonp($jsonEcho);

?>

注:在本地測试的话因 为$_SERVER['REMOTE_ADDR']和$_SERVER['REMOTE_ADDR']可能是127.0.0.1,所 以输出的内容为空。能够自己带入IP測试


方法二:

把 GeoIP 安装成 PHP 扩展 
yum install GeoIP GeoIP-data GeoIP-devel


下载 GeoIP 数据库 
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gzip -d GeoLiteCity.dat.gz
mv GeoLiteCity.dat /var/lib/GeoIP/GeoIPCity.dat


下载 GeoIP 的 PECL 扩展 
下载地址 http://pecl.php.net/package/geoip 
wget -c http://pecl.php.net/get/geoip-1.0.7.tgz
tar -zxvf geoip-1.0.7.tgz


安 装 GeoIP 的 PECL 扩展 
cd geoip-1.0.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-geoip
make
make install


在 php.ini 里加上 
extension=geoip.so


接着重新启动一下 php 即可了(nginx+php的情况,而apache+php就不用重新启动了)
如今。你能够使用 php 手冊里的 GeoIP 部份函数了
http://cn.php.net/manual/en/book.geoip.php


參考:http://blog.csdn.net/prince2270/article/details/4592753




免责声明:文章转载自《geoip+php演示样例:通过ip,获取国家名称和代码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue项目环境搭建使用消息和消息队列下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ansible笔记

目录 列表的使用zookeeper id 使用主机名最后的编号判断一个文件是否是默认的,如果是就清空blockinfile+lookup使用replace+lookup使用ansible2.4 api 调用 列表的使用 我们有一个列表如下(主机为server7-13) (py3) [root@jumpserver app]# cat server_elk....

Nginx 使用 GeoIP 模块区分用户地区

检查 GeoIP 是否安装 首先需要确认当前安装的 Nginx 是否安装了 GeoIP 模块 123456 $ nginx -Vnginx version: nginx/1.12.2built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)built with OpenSSL 1.0.2k-fips 26...

Elastic Stack之Logstash进阶

Elastic Stack之Logstash进阶 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.使用GeoLite2和logstash 过滤插件的geoip案例 1>.GeoLite2概述 GeoLite2数据库是免费的IP地理定位数据库,与MaxMind的GeoIP2数据库相当,但不太准确。GeoLite2国家和城市数据库在...

logstash 过滤filter

logstash过滤器插件filter详解及实例 1、logstash过滤器插件filter 1.1、grok正则捕获 grok是一个十分强大的logstash filter插件,他可以通过正则解析任意文本,将非结构化日志数据弄成结构化和方便查询的结构。他是目前logstash 中解析非结构化日志数据最好的方式 grok的语法规则是: %{语法:语义} “...

logstash过滤器插件filter详解及实例

1、logstash过滤器插件filter 1.1、grok正则捕获 grok是一个十分强大的logstash filter插件,他可以通过正则解析任意文本,将非结构化日志数据弄成结构化和方便查询的结构。他是目前logstash 中解析非结构化日志数据最好的方式 grok的语法规则是: %{语法:语义} “语法”指的是匹配的模式。例如使用NUMBER模式可...