序:本来,以为做一个语言切换的按钮就可以一直安枕无忧了,突然上头说要来一个区分国内与国外的,在国内访问的显示中文,在国外访问的显示英文。好吧!找一下资料看看。

tp5,需求是按钮切换的,选择参考3;

方法一:IP查询网

代码实现( 参考3有完整的)

// 多语言 将 think_val 自定义设置为 customLang
function lang(){$lang = input('lang');if(!$lang){// 默认:think_varif(Cookie::has("customLang")){$lang = Cookie::get("customLang");}else{// $lang = "zh-cn";$ip = request() -> ip(0,true);$datatype = 'json';$url = 'https://api.ip138.com/ip/?ip='.$ip.'&datatype='.$datatype;$header = array('token:你的token');$obj = $this-> getRequest($url,$header);$objson = json_decode($obj,true);$isAddress = $objson['data'][0];if($isAddress == "中国"){$lang = "zh-cn";}else{$lang = "en-us";}}}$lang = Lang::range($lang);//设定当前语言Lang::load(THINK_PATH.'lang'.DS.$lang.EXT,$lang);//加载当前语言包Cookie::set('customLang',$lang);return $lang;
}

方法二:

maxmind GeoIP :先使用邮箱注册一个账号,并登录账号,创建一个密钥,名称就像一个备注,它会生成一个ID和密钥,记得保存好,它只显示一次;

1、登录后就可以下载一个数据包了,数据包是每周二更新的:

2、获取代码支持:

1、安装:

composer require geoip2/geoip2:~2.0

2、下载数据库,需要注册邮箱账号登录:

https://www.maxmind.com/en/accounts/722009/geoip/downloads

3、代码实现:use GeoIp2\Database\Reader;

function lang(){$lang = input('lang');if(!$lang){if(Cookie::has("lenze_lang")){$lang = Cookie::get("lenze_lang");}else{$ip = request() -> ip(0,true);// maxmind 获取判断$reader = new Reader('./public/static/GeoLite2-Country.mmdb'); // 解压的数据包$record = $reader->country($ip);$isAddress = $record->country->isoCode;if($isAddress == "cn" || $isAddress == "CN"){$lang = "zh-cn";}else{$lang = "en-us";}}}$lang = Lang::range($lang);//设定当前语言Lang::load(THINK_PATH.'lang'.DS.$lang.EXT,$lang);//加载当前语言包Cookie::set('lenze_lang',$lang);return json(['lang'=>$lang]);
}

方法三:

可以使用高德地图的IP定位,不过,高德需要搜索的IP地址(仅支持国内),刚好,搜索得到的就判断为国内,搜索数据为空的为国外。

IP定位-API文档-开发指南-Web服务 API | 高德地图API

这个有开发文档了,就不用我多唠叨和做无用功了,嘎嘎!

参考:

1、最新多种方式, 判断客户端IP是国内还是国外?_解忧杂货铺Q的博客-CSDN博客_判断ip是国内还是国外

2、tp5多语言切换_红卡的博客-CSDN博客_tp5多语言

3、tp5 实现多语言切换的一个小bug_逸曦穆泽的博客-CSDN博客_tp 多语言

php 网站的多语言设置(IP地址区分国内国外)相关推荐

  1. 了解IP地址及如何设置IP地址

    众所周知,在电话通讯中,电话用户是靠电话号码来识别的.同样,在网络中为了区别不同的计算机,也需要给计算机指定一个号码,这个号码就是"IP地址". 什么是IP地址 所谓IP地址就是给 ...

  2. 网站服务器的ip地址会变吗,网站的服务器变了 IP地址变吗

    网站的服务器变了 IP地址变吗 内容精选 换一换 本文介绍通过华为云市场镜像"Drupal内容管理系统(LAMP)"搭建Drupal网站的方法.Drupal是使用PHP语言编写的开 ...

  3. 保存ip地址和计算机名称,批量设置IP地址和计算机名

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近由于病毒肆虐,学校的公共机房又瘫痪了,只好利用网络同传把机器全都克隆了一遍,可问题又来啦,每个计算机都要重新设置IP地址.子网掩码.网关和DNS服务器 ...

  4. 路由器与计算机IP配置,路由器设置之前 如何给电脑设置IP地址

    我们都知道在连接好电脑和路由器之后,要对路由器进行设置之前,首要的问题就应该解决电脑设置IP地址的这个问题,然后才能访问路由器地址:192.168.1.1或者192.168.0.1,那么本文就为您详细 ...

  5. 计算机教室怎样自动批量修改ip,批量设置IP地址和计算机名

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近由于病毒肆虐,学校的公共机房又瘫痪了,只好利用网络同传把机器全都克隆了一遍,可问题又来啦,每个计算机都要重新设置IP地址.子网掩码.网关和DNS服务器 ...

  6. 机房批量改计算机名计算机组,批量设置IP地址和计算机名

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最近由于病毒肆虐,学校的公共机房又瘫痪了,只好利用网络同传把机器全都克隆了一遍,可问题又来啦,每个计算机都要重新设置IP地址.子网掩码.网关和DNS服务器 ...

  7. linux7 设置dns,RHEL7.0 系列-设置IP地址、网关和DNS

    1.1.设置IP地址.网关和DNSRHEL7里面的网卡命名方式从eth0,1,2的方式变成了enoXXXXX的格式.en代表的是enthernet(以太网),o代表的是onboard(内置),那一串数 ...

  8. linux7添加两个网关,RHEL7设置IP地址、网关和DNS(示例代码)

    █网卡命名格式:enoxxxxx en:代表enthernet(以太网) o:代表onboard(内置) xxxxx:是主板的某种索引编号自动生成,以便保证其唯一性 ●方法1:进入网络配置文件,修改网 ...

  9. FreeBSD设置IP地址,网关,DNS

    1.设置IP地址.网关 ee  /etc/rc.conf   #编辑 ifconfig_em0="inet 192.168.1.173  netmask 255.255.255.0" ...

  10. linux7添加两个网关,RHEL7设置IP地址、网关和DNS

    █网卡命名格式:enoxxxxx en:代表enthernet(以太网) o:代表onboard(内置) xxxxx:是主板的某种索引编号自动生成,以便保证其唯一性 ●方法1:进入网络配置文件,修改网 ...

最新文章

  1. php 基于socket的基本通信
  2. 谷歌开源文本生成新方法 LaserTagger,直击 seq2seq 效率低、推理慢、控制差三大缺陷!
  3. 深入理解WMS(一):Window的创建过程
  4. 如何获取不同网站的favicon默认图标
  5. scala与python混合调用实验
  6. 16位汇编 寄存器的操作
  7. CAS单点登录 - 创建用户会话、全局门票、临时票据
  8. rsync同步服务配置手记
  9. 新增操作 失败后重试_可重试的操作
  10. jq控制div是否展示_jQuery控制多个DIV的显示和隐藏
  11. 纹理窗口Qt+OpenGL之纹理贴图
  12. 正则表达式处理字符串指定位置插入【高级】
  13. Instance2:login interface
  14. F - Warm up - hdu 4612(缩点+求树的直径)
  15. 全网最全的Java岗集合面试题(含答案)
  16. 美团点评合并,百度成O2O最大变量
  17. Redis Expire 设置key过期时间
  18. 通过命令行玩转Git,需要记住那些命令?
  19. python 练习洗牌
  20. java class常用反编译操作

热门文章

  1. WIN7下建行捷德U盾支付
  2. 阿里P5、P6是什么级别?加入超级实习生能拿到吗?
  3. 电脑没有声音(未安装任何音频输出设备)解决方案
  4. 三十岁左右的你,现在收入多少?
  5. 一个自动化专业的工控人自学编程之路
  6. Python 爬取小说点评网站,用大数据方法找小说
  7. linux内核打补丁步骤
  8. 计算标准累积正态分布_神说要有正态分布,于是就有了正态分布。
  9. 如何提取PDF页面?3种拆分PDF的方法
  10. 博客怎么推广才能达到最佳优化效果