当前位置:  开发笔记 > 编程语言 > 正文

在PHP中检测客户端区域设置的最简单方法

如何解决《在PHP中检测客户端区域设置的最简单方法》经验,为你挑选了4个好方法。

我希望能够使用PHP检测访问者在我的网站上的国家/地区.

请注意,我不是试图将此作为安全措施或任何重要的事情,只是改变一些单词的拼写(美国人似乎相信"招生"这个词有2个......疯狂的猛拉),以及也许在"选择你的国家/地区"列表中提供默认选项.

因此,使用Geolocation数据库有点过头了,我真的不想为此安装新的PHP库,那么查找访问者来自哪个国家/地区的最简单/最简单的方法是什么?



1> Trevor Goody..:

PHP提供了一个自5.3.0以来的函数来将$ _SERVER ['HTTP_ACCEPT_LANGUAGE']变量解析为语言环境.

http://www.php.net/manual/en/locale.acceptfromhttp.php

$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale; // returns "en_US"



2> JasonTrue..:

不保证,但大多数浏览器提交一个Accept-Language HTTP标头,如果它们来自美国,则指定en-us.但是,一些较旧的浏览器只表示它们是en.并非所有机器都已正确设置以指示他们喜欢的区域设置.但这是一个很好的初步猜测.

英语 - 英国用户通常将他们的系统或用户区域设置为英语 - 英语,在默认浏览器配置中,应该将en-gb设置为Accept Language标头.(这个说明的早期版本;这是一个错字,抱歉.)其他国家也有en语言,如en-za(南非),并且,主要在理论上,像en-jp这样的组合也是可能的.

但是,基于地理IP的猜测在首选语言/区域设置上的可能性较小.Google认为基于IP地址定位的内容协商是有道理的,当我在日本或韩国时,这真让我烦恼......


谷歌评论+1 - 非常烦人
当网站向我显示基于区域设置而不是浏览器配置的语言时,我很讨厌.在你住在另一个国家之前,你不知道这是多么令人沮丧.如果我到达一个网站,我找不到在5秒内更改语言的选项,我就不在了.
客户端的首选语言不是其语言环境的指示符.
取决于"locale"的含义.假设您不是指"位置",而是在软件国际化意义上使用它:Accept-Language参数现在通常可以指定每种指定的首选语言的完整语言环境,因为最常见的使用后半部分语言字段指定国家(而不是语言变体).语言加国家/地区的组合巧妙地对应于日期,时间,数量和货币惯例的特定于语言环境的约定.没有国家信息,显然它不够完整.

3> chroder..:

您可以查看HTTP_ACCEPT_LANGUAGE大多数浏览器将发送的标头(来自$ _SERVER).

以Zend_Locale为例,或者您甚至可能想要使用lib.



4> Patrick Desj..:

您可以进行一些IP比较,无需使用整个库.

解决方案#1

使用API​​,这样就不需要你了.这是一个让您了解国家/地区的网络API:

 Example: http://api.hostip.info/get_html.php?ip=12.215.42.19
 Return : Country: UNITED STATES (US)

解决方案#2

但是,您是否认为使用浏览器代理语言?你或许可以从中知道英语的类型.

解决方案#3

这个名为BlockCountry的网站让您按国家/地区列出IP列表.当然,您不想阻止,但您可以使用IP列表并比较它们(获取所有美国IP ...)这可能不准确...


您有关于http://api.hostip.info/的更多信息吗?谁运行它/数据的性能和质量有多可靠?
推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有