黑龙码

php实现根据不同国家显示不同语言版本的代码

晓峰 时间:2022-10-21 13:07:37 阅读:614
--------------------------------------------------------- Ta 只分享的内容开始 ---------------------------------------------------------------------

php实现根据不同国家显示不同语言版本的代码


 方法1,通过ip去定位,需要用到第三方的接口进行数据数据查询

// 获取访问者的IP
function getIP()
{
    if (isset($_SERVER)) {
        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        } elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
            $realip = $_SERVER['HTTP_CLIENT_IP'];
        } else {
            $realip = $_SERVER['REMOTE_ADDR'];
        }
    } else {
        if (getenv("HTTP_X_FORWARDED_FOR")) {
            $realip = getenv("HTTP_X_FORWARDED_FOR");
        } elseif (getenv("HTTP_CLIENT_IP")) {
            $realip = getenv("HTTP_CLIENT_IP");
        } else {
            $realip = getenv("REMOTE_ADDR");
        }
    }
    return $realip;
}

$ip = getIP();
// 通过获得的IP去和第三方接口实现对接,返回的是json格式的数据,转化格式,可以得到一个完整的数组,下面是取country这个键的值来判断,可以是country_id。header到你想跳转的语言版本的url。
$res0 = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$ip");
$res0 = json_decode($res0, true);
//echo $res0['data']['country'];exit;
if ($res0['data']['country'] == '美国' || $res0['data']['country'] == '英国') {
    header("location:/en");
}else if ($res0['data']['country'] == '德国') {
    header("location:/dw");
}else{
    header("location:/");
}


方法2:通过浏览器的meta进而判断显示哪种语言

用到PHP的$_SERVER['HTTP_ACCEPT_LANGUAGE']这个函数,获取当前浏览器打开的网站的meta值,进而切割字符串做对比,然后header到指定的网站。


$lange = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
if($lange=='en') {
    header("location:/en");
}else if ($lange == 'de') {
    header("location:/dw");
}



--------------------------------------------------------- Ta 只分享了这些内容 ---------------------------------------------------------------------

本文来源:黑龙码(gongfuma.com.cn)
声明:本文系黑龙码原创稿件,版权属[黑龙码 gongfuma.com.cn]所有。
未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:黑龙码",违者将依法追究责任。

相关文章

  • 回到顶部