1. 程式人生 > >geoip+php演示樣例:通過ip,獲取國家名稱和程式碼

geoip+php演示樣例:通過ip,獲取國家名稱和程式碼

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

相關推薦

geoip+php演示通過ip獲取國家名稱程式碼

GeoIP + PHP的使用方法一:下載 GeoIP 的 PHP 檔案geoip.inc,儲存為 geoip.inc.phphttp://sjolzy.cn/php/GeoIP/bak/geoip.inc php使用程式碼 <?php include("geoip

最簡單的視音頻播放演示7SDL2播放RGB/YUV

pro big 更新 沒有 opaque support 解決 控制 mem =====================================================最簡單的視音頻播放演示樣例系列文章列表:最簡單的視音頻播放演示樣例1:總述最簡單的視音

一個簡單演示演示PHP訪問表單變量

time 變量 value 購物車 size post方法 form sso val 首先編寫表單頁面orderform.html,用post方法請求服務端腳本文件:processorder.php orderform.html: <!DOCTYPE html&

JBoss 系列一 O OMaven jBPM 6 集成演示

保存 三種方式 trac avi 周期 osi lob kylin 版本 概述jBPM 6 中底層架構基於 Maven,所以我們能夠非常easy的進行 Maven jBPM 6 集成演示樣例,本文分三個部分:基本原理介紹Maven jBPM 6 集成jBPM 6 中使用

JavaScript變量提升演示

代碼 efi reference cti 全局變量 推斷 sum java fin 直接先看兩段代碼 function getSum() { var sum = a + b; var a = 1;

Android之——多線程下載演示

技術分享 style lis pad range 轉載 pre fontsize response 轉載請註明出處:http://blog.csdn.net/l1028386804/article/details/46883927 一、概述 說到A

Java線程演示 - 繼承Thread類實現Runnable接口

無法 ads rup args dex rom 一個 nts future 進程(Process)和線程(Thread)是程序執行的兩個基本單元。Java並發編程很多其它的是和線程相關。 進程 進程是一個獨立的執行單元,可將其視為一個程序或應用。然而,一

Linux線程基本使用代碼演示

-m nis tpi div argv and sub sig ack #include <pthread.h> #include <stdio.h> #include <unistd.h> void* thread_func(voi

CountDownTimer完整具體演示

rac clas inf you view dem nac cti cli MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.os.CountDownTimer; imp

數據模型封裝演示

pre objc lar ive 進步 div lec 推廣 leg 我們開發過程中 應該使用mvc 的開發模式 之前有講過 mvc 不不過設計模式,這裏不多解說了,之前的能夠看看 數據封裝使我們的基本功。在開發其中普遍的使用 我們必須重視 這裏為了給剛開始學習的人

Java 反射經常用法演示

declared 演示 art dsm red cls div rgs public <pre name="code" class="java">import java.lang.reflect.Constructor; import java.lang.r

ThreadLocal使用演示

log creat imp apk nts eight get() 演示 extend MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.app.Activity;

展示C代碼覆蓋率的gcovr工具簡單介紹及相關命令使用演示

文件夾 mes repo 例如 oid else if dir total down (本人正在參加2015博客之星評選,誠邀你來投票,謝謝:username=zhouzxi">http://vote.blog.csdn.net/blogstar2015

VFL演示

markdown str ext dsm nds auto 寬度 art object 上篇文章向大家介紹了VFL的基本的語法點,假設對下面演示樣例不熟的童鞋,能夠前去參考。廢話不多說。我們直接來看演示樣例。 演示樣例一 將五個大小同樣、顏色不同

最簡單的基於FFmpeg的移動端IOS HelloWorld

目的 mes 真機 roo mux 能夠 ted 配置 details =====================================================最簡單的基於FFmpeg的移動端樣例系列文章列表:最簡單的基於FFmpeg的移動端樣例:An

Lambda 表達式的演示-來源(MSDN)

guid 程序 const acc b16 sent except 代碼片段 catch 本文演示怎樣在你的程序中使用 lambda 表達式。 有關 lambda 表達式的概述。請參閱 C++ 中的 Lambda 表達式。 有關 lamb

圖標插件--jqplot實現柱狀圖及餅圖表盤圖演示

itl nbsp left 柱狀圖 draw ted ner ann name 柱狀圖 在jqPlot圖表插件使用說明(一)中,我們已經能夠通過jqPlot繪制出比較簡單的線形圖。通過查看源碼。我們也能夠看出,線形圖是jqPlot默認的圖表類型:

最簡單的基於FFmpeg的移動端IOS 視頻解碼器

視頻播放 contex avcodec video pad align b+ getc tar =====================================================最簡單的基於FFmpeg的移動端樣例系列文章列表:最簡單的基於FFm

Android模糊演示-RenderScript-附效果圖與代碼

tracking _id pro out 依據 tree 部分 observe scrip 本文鏈接 http://blog.csdn.net/xiaodongrush/article/details/31031411 參考鏈接 Android高級模糊

TreeSet排序存儲自己定義對象自己定義比較器演示

strlen 覆蓋 () num imp rgs com 哈希 ash Set:無序。不能夠反復元素。 |--HashSet:數據結構是哈希表。線程是非同步的。 保證元素唯一性的原理:推斷元素的hashCode值是否同樣。 假設同樣,還會繼續推斷