我如何通过cloudflare地理位置检测所有欧洲国家

时间:2014-05-30 22:00:23

标签: php geolocation cloudflare ip-geolocation

我正在尝试设置一段代码,用于检测用户何时从欧洲国家/地区访问,我的网站位于cloudflare平台上,并且我正在使用cloudflare地理位置功能,使用以下代码:< / p>

$country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];

我不知道返回值是什么以及如何正确处理它们,显然我应该在if语句中使用if语句。

if($location == '1' || $location == '2' || $location == '3'){
    //process
}else{
    echo 'not Europe';
}

所以任何人都可以帮我解决我应该处理的价值观吗?

感谢您的帮助!

彼得。

2 个答案:

答案 0 :(得分:35)

$_SERVER["HTTP_CF_IPCOUNTRY"]的值是国家/地区代码。首先,您需要list所有欧洲国家/地区代码。

$europe = array('AD', 'AL', 'AT', 'AX', 'BA', 'BE', 'BG', 'BY', 'CH', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FO', 'FR', 'GB', 'GG', 'GI', 'GR', 'HR', 'HU', 'IE', 'IM', 'IS', 'IT', 'JE', 'LI', 'LT', 'LU', 'LV', 'MC', 'MD', 'ME', 'MK', 'MT', 'NL', 'NO', 'PL', 'PT', 'RO', 'RS', 'RU', 'SE', 'SI', 'SJ', 'SK', 'SM', 'UA', 'VA');

然后,您可以使用此列表验证请求:

if(in_array($country_code, $europe)) {
  // Europe
} else {
  // Not Europe
}

如果您想定位特定区域,可以使用以下列表:

$eastern = array('BG', 'BY', 'CZ', 'HU', 'MD', 'PL', 'RO', 'RU', 'SK', 'UA');
$northern = array('AX', 'DK', 'EE', 'FI', 'FO', 'GB', 'GG', 'IE', 'IM', 'IS', 'JE', 'LT', 'LV', 'NO', 'SE', 'SJ');
$southern = array('AD', 'AL', 'BA', 'ES', 'GI', 'GR', 'HR', 'IT', 'ME', 'MK', 'MT', 'PT', 'RS', 'SI', 'SM', 'VA');
$western = array('AT', 'BE', 'CH', 'DE', 'FR', 'LI', 'LU', 'MC', 'NL');

例如:

if(in_array($country_code, $eastern)) {
  // Eastern Europe
} else {
  // Not Eastern Europe
}

我联系了CloudFlare,以确保国家/地区代码列表有效。他们向我发送了$_SERVER["HTTP_CF_IPCOUNTRY"]的可能值列表。我验证了上面的数组,这些数组中的所有国家代码都在可能的值列表中。

供参考,以下是可能的值列表:

A1  Anonymous Proxy
A2  Satellite Provider
O1  Other Country
AD  Andorra
AE  United Arab Emirates
AF  Afghanistan
AG  Antigua and Barbuda
AI  Anguilla
AL  Albania
AM  Armenia
AO  Angola
AP  Asia/Pacific Region
AQ  Antarctica
AR  Argentina
AS  American Samoa
AT  Austria
AU  Australia
AW  Aruba
AX  Aland Islands
AZ  Azerbaijan
BA  Bosnia and Herzegovina
BB  Barbados
BD  Bangladesh
BE  Belgium
BF  Burkina Faso
BG  Bulgaria
BH  Bahrain
BI  Burundi
BJ  Benin
BL  Saint Bartelemey
BM  Bermuda
BN  Brunei Darussalam
BO  Bolivia
BQ  Bonaire, Saint Eustatius and Saba
BR  Brazil
BS  Bahamas
BT  Bhutan
BV  Bouvet Island
BW  Botswana
BY  Belarus
BZ  Belize
CA  Canada
CC  Cocos (Keeling) Islands
CD  Congo, The Democratic Republic of the
CF  Central African Republic
CG  Congo
CH  Switzerland
CI  Cote d'Ivoire
CK  Cook Islands
CL  Chile
CM  Cameroon
CN  China
CO  Colombia
CR  Costa Rica
CU  Cuba
CV  Cape Verde
CW  Curacao
CX  Christmas Island
CY  Cyprus
CZ  Czech Republic
DE  Germany
DJ  Djibouti
DK  Denmark
DM  Dominica
DO  Dominican Republic
DZ  Algeria
EC  Ecuador
EE  Estonia
EG  Egypt
EH  Western Sahara
ER  Eritrea
ES  Spain
ET  Ethiopia
EU  Europe
FI  Finland
FJ  Fiji
FK  Falkland Islands (Malvinas)
FM  Micronesia, Federated States of
FO  Faroe Islands
FR  France
GA  Gabon
GB  United Kingdom
GD  Grenada
GE  Georgia
GF  French Guiana
GG  Guernsey
GH  Ghana
GI  Gibraltar
GL  Greenland
GM  Gambia
GN  Guinea
GP  Guadeloupe
GQ  Equatorial Guinea
GR  Greece
GS  South Georgia and the South Sandwich Islands
GT  Guatemala
GU  Guam
GW  Guinea-Bissau
GY  Guyana
HK  Hong Kong
HM  Heard Island and McDonald Islands
HN  Honduras
HR  Croatia
HT  Haiti
HU  Hungary
ID  Indonesia
IE  Ireland
IL  Israel
IM  Isle of Man
IN  India
IO  British Indian Ocean Territory
IQ  Iraq
IR  Iran, Islamic Republic of
IS  Iceland
IT  Italy
JE  Jersey
JM  Jamaica
JO  Jordan
JP  Japan
KE  Kenya
KG  Kyrgyzstan
KH  Cambodia
KI  Kiribati
KM  Comoros
KN  Saint Kitts and Nevis
KP  Korea, Democratic People's Republic of
KR  Korea, Republic of
KW  Kuwait
KY  Cayman Islands
KZ  Kazakhstan
LA  Lao People's Democratic Republic
LB  Lebanon
LC  Saint Lucia
LI  Liechtenstein
LK  Sri Lanka
LR  Liberia
LS  Lesotho
LT  Lithuania
LU  Luxembourg
LV  Latvia
LY  Libyan Arab Jamahiriya
MA  Morocco
MC  Monaco
MD  Moldova, Republic of
ME  Montenegro
MF  Saint Martin
MG  Madagascar
MH  Marshall Islands
MK  Macedonia
ML  Mali
MM  Myanmar
MN  Mongolia
MO  Macao
MP  Northern Mariana Islands
MQ  Martinique
MR  Mauritania
MS  Montserrat
MT  Malta
MU  Mauritius
MV  Maldives
MW  Malawi
MX  Mexico
MY  Malaysia
MZ  Mozambique
NA  Namibia
NC  New Caledonia
NE  Niger
NF  Norfolk Island
NG  Nigeria
NI  Nicaragua
NL  Netherlands
NO  Norway
NP  Nepal
NR  Nauru
NU  Niue
NZ  New Zealand
OM  Oman
PA  Panama
PE  Peru
PF  French Polynesia
PG  Papua New Guinea
PH  Philippines
PK  Pakistan
PL  Poland
PM  Saint Pierre and Miquelon
PN  Pitcairn
PR  Puerto Rico
PS  Palestinian Territory
PT  Portugal
PW  Palau
PY  Paraguay
QA  Qatar
RE  Reunion
RO  Romania
RS  Serbia
RU  Russian Federation
RW  Rwanda
SA  Saudi Arabia
SB  Solomon Islands
SC  Seychelles
SD  Sudan
SE  Sweden
SG  Singapore
SH  Saint Helena
SI  Slovenia
SJ  Svalbard and Jan Mayen
SK  Slovakia
SL  Sierra Leone
SM  San Marino
SN  Senegal
SO  Somalia
SR  Suriname
SS  South Sudan
ST  Sao Tome and Principe
SV  El Salvador
SX  Sint Maarten
SY  Syrian Arab Republic
SZ  Swaziland
TC  Turks and Caicos Islands
TD  Chad
TF  French Southern Territories
TG  Togo
TH  Thailand
TJ  Tajikistan
TK  Tokelau
TL  Timor-Leste
TM  Turkmenistan
TN  Tunisia
TO  Tonga
TR  Turkey
TT  Trinidad and Tobago
TV  Tuvalu
TW  Taiwan
TZ  Tanzania, United Republic of
UA  Ukraine
UG  Uganda
UM  United States Minor Outlying Islands
US  United States
UY  Uruguay
UZ  Uzbekistan
VA  Holy See (Vatican City State)
VC  Saint Vincent and the Grenadines
VE  Venezuela
VG  Virgin Islands, British
VI  Virgin Islands, U.S.
VN  Vietnam
VU  Vanuatu
WF  Wallis and Futuna
WS  Samoa
YE  Yemen
YT  Mayotte
ZA  South Africa
ZM  Zambia
ZW  Zimbabwe

答案 1 :(得分:1)

Configuring Cloudflare IP Geolocation

Cloudflare可以在Cloudflare与上游原始网络服务器之间的每个请求中包括访问者IP的国家代码(ISO 3166-1 Alpha 2格式)。

您可以在wikipedia链接的页面上访问完整列表。

AD  Andorra
AE  United Arab Emirates
AF  Afghanistan
AG  Antigua and Barbuda
AI  Anguilla
AL  Albania
AM  Armenia
AO  Angola
AQ  Antarctica
AR  Argentina
AS  American Samoa
AT  Austria
AU  Australia
AW  Aruba
AX  Åland Islands
AZ  Azerbaijan
BA  Bosnia and Herzegovina
BB  Barbados
BD  Bangladesh
BE  Belgium
BF  Burkina Faso
BG  Bulgaria
BH  Bahrain
BI  Burundi
BJ  Benin
BL  Saint Barthélemy
BM  Bermuda
BN  Brunei Darussalam
BO  Bolivia (Plurinational State of)
BQ  Bonaire, Sint Eustatius and Saba
BR  Brazil
BS  Bahamas
BT  Bhutan
BV  Bouvet Island
BW  Botswana
BY  Belarus
BZ  Belize
CA  Canada
CC  Cocos (Keeling) Islands
CD  Congo, Democratic Republic of the
CF  Central African Republic
CG  Congo
CH  Switzerland
CI  Côte d'Ivoire
CK  Cook Islands
CL  Chile
CM  Cameroon
CN  China
CO  Colombia
CR  Costa Rica
CU  Cuba
CV  Cabo Verde
CW  Curaçao
CX  Christmas Island
CY  Cyprus
CZ  Czechia
DE  Germany
DJ  Djibouti
DK  Denmark
DM  Dominica
DO  Dominican Republic
DZ  Algeria
EC  Ecuador
EE  Estonia
EG  Egypt
EH  Western Sahara
ER  Eritrea
ES  Spain
ET  Ethiopia
FI  Finland
FJ  Fiji
FK  Falkland Islands (Malvinas)
FM  Micronesia (Federated States of)
FO  Faroe Islands
FR  France
GA  Gabon
GB  United Kingdom
GD  Grenada
GE  Georgia
GF  French Guiana
GG  Guernsey
GH  Ghana
GI  Gibraltar
GL  Greenland
GM  Gambia
GN  Guinea
GP  Guadeloupe
GQ  Equatorial Guinea
GR  Greece
GS  South Georgia and the South Sandwich Islands
GT  Guatemala
GU  Guam
GW  Guinea-Bissau
GY  Guyana
HK  Hong Kong
HM  Heard Island and McDonald Islands
HN  Honduras
HR  Croatia
HT  Haiti
HU  Hungary
ID  Indonesia
IE  Ireland
IL  Israel
IM  Isle of Man
IN  India
IO  British Indian Ocean Territory
IQ  Iraq
IR  Iran (Islamic Republic of)
IS  Iceland
IT  Italy
JE  Jersey
JM  Jamaica
JO  Jordan
JP  Japan
KE  Kenya
KG  Kyrgyzstan
KH  Cambodia
KI  Kiribati
KM  Comoros
KN  Saint Kitts and Nevis
KP  Korea (Democratic People's Republic of)
KR  Korea, Republic of
KW  Kuwait
KY  Cayman Islands
KZ  Kazakhstan
LA  Lao People's Democratic Republic
LB  Lebanon
LC  Saint Lucia
LI  Liechtenstein
LK  Sri Lanka
LR  Liberia
LS  Lesotho
LT  Lithuania
LU  Luxembourg
LV  Latvia
LY  Libya
MA  Morocco
MC  Monaco
MD  Moldova, Republic of
ME  Montenegro
MF  Saint Martin (French part)
MG  Madagascar
MH  Marshall Islands
MK  North Macedonia
ML  Mali
MM  Myanmar
MN  Mongolia
MO  Macao
MP  Northern Mariana Islands
MQ  Martinique
MR  Mauritania
MS  Montserrat
MT  Malta
MU  Mauritius
MV  Maldives
MW  Malawi
MX  Mexico
MY  Malaysia
MZ  Mozambique
NA  Namibia
NC  New Caledonia
NE  Niger
NF  Norfolk Island
NG  Nigeria
NI  Nicaragua
NL  Netherlands
NO  Norway
NP  Nepal
NR  Nauru
NU  Niue
NZ  New Zealand
OM  Oman
PA  Panama
PE  Peru
PF  French Polynesia
PG  Papua New Guinea
PH  Philippines
PK  Pakistan
PL  Poland
PM  Saint Pierre and Miquelon
PN  Pitcairn
PR  Puerto Rico
PS  Palestine, State of
PT  Portugal
PW  Palau
PY  Paraguay
QA  Qatar
RE  Réunion
RO  Romania
RS  Serbia
RU  Russian Federation
RW  Rwanda
SA  Saudi Arabia
SB  Solomon Islands
SC  Seychelles
SD  Sudan
SE  Sweden
SG  Singapore
SH  Saint Helena, Ascension and Tristan da Cunha
SI  Slovenia
SJ  Svalbard and Jan Mayen
SK  Slovakia
SL  Sierra Leone
SM  San Marino
SN  Senegal
SO  Somalia
SR  Suriname
SS  South Sudan
ST  Sao Tome and Principe
SV  El Salvador
SX  Sint Maarten (Dutch part)
SY  Syrian Arab Republic
SZ  Eswatini
TC  Turks and Caicos Islands
TD  Chad
TF  French Southern Territories
TG  Togo
TH  Thailand
TJ  Tajikistan
TK  Tokelau
TL  Timor-Leste
TM  Turkmenistan
TN  Tunisia
TO  Tonga
TR  Turkey
TT  Trinidad and Tobago
TV  Tuvalu
TW  Taiwan, Province of China
TZ  Tanzania, United Republic of
UA  Ukraine
UG  Uganda
UM  United States Minor Outlying Islands
US  United States of America
UY  Uruguay
UZ  Uzbekistan
VA  Holy See
VC  Saint Vincent and the Grenadines
VE  Venezuela (Bolivarian Republic of)
VG  Virgin Islands (British)
VI  Virgin Islands (U.S.)
VN  Viet Nam
VU  Vanuatu
WF  Wallis and Futuna
WS  Samoa
YE  Yemen
YT  Mayotte
ZA  South Africa
ZM  Zambia
ZW  Zimbabwe

然后cloudflare永远不会使用“匿名代理”,“卫星提供商”和“其他国家”

@ P110 答案参考在此处ISO 3166 Country Codes