php 使用GEOIP服务获取语言代码(此代码使用WPEngine和freegeoipnet作为后备。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 使用GEOIP服务获取语言代码(此代码使用WPEngine和freegeoipnet作为后备。相关的知识,希望对你有一定的参考价值。
<?php
namespace mkdo\geoip_langauge_code;
/**
* Class LangaugeCode
*
* Gets the LanguageCode
*
* @package mkdo\geoip_langauge_code
*/
class LanguageCode {
private $ip;
private $language_code;
/**
* Constructor
*/
function __construct() {
}
/**
* Do Work
*/
public function run() {
add_action( 'init', array( $this, 'set_ip' ) );
add_action( 'init', array( $this, 'set_language_code' ) );
}
/**
* Set the IP address
*/
public function set_ip() {
if ( ! empty( $_SERVER[ 'HTTP_CLIENT_IP' ] ) ) {
$this->ip = $_SERVER[ 'HTTP_CLIENT_IP' ];
} elseif ( ! empty( $_SERVER[ 'HTTP_X_FORWARDED_FOR' ] ) ) {
$this->ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$this->ip = $_SERVER['REMOTE_ADDR'];
}
}
/**
* Get the IP address
* @return string IP Address
*/
public function get_ip() {
return $this->ip;
}
/**
* Set the langauge code
*/
public function set_language_code() {
$this->language_code = getenv( 'HTTP_GEOIP_COUNTRY_CODE' );
if ( empty( $this->language_code ) ) {
$this->language_code = $this->get_freegeoipnet_language_code();
}
if ( empty( $this->language_code ) ) {
$this->language_code = 'NA';
}
}
/**
* Get the langauge code
* @return string langauge code
*/
public function get_language_code() {
return $this->language_code;
}
/**
* Get the freegeoip.net langauge code
* @return string langauge code
*/
public function get_freegeoipnet_language_code() {
$json = '';
$code = '';
$url = 'http://freegeoip.net';
$format = 'json';
$request = $url . '/' . $format . '/' . $this->ip;
$curl_handle = curl_init();
curl_setopt( $curl_handle, CURLOPT_URL, $request );
curl_setopt( $curl_handle, CURLOPT_CONNECTTIMEOUT, 2 );
curl_setopt( $curl_handle, CURLOPT_RETURNTRANSFER, 1 );
$json = curl_exec( $curl_handle );
curl_close( $curl_handle );
$result = json_decode( $json );
if ( isset( $result->country_code ) ) {
$code = $result->country_code;
}
return $code;
}
}
以上是关于php 使用GEOIP服务获取语言代码(此代码使用WPEngine和freegeoipnet作为后备。的主要内容,如果未能解决你的问题,请参考以下文章
为什么geoip不适合我
PHP - 打印 GeoIP 数组
使用 PHP 从保存在本地的 GeoIP 数据库中获取数据
如何在共享服务器上配置 GeoIP?
“此网页有一个重定向循环”(使用 GeoIP 重定向网站)
使用 maxmind geoip2 呼出城市名称