PHP - 使手动语言选择器覆盖 GeoIP 重定向


PHP - Make manual language selector override GeoIP redirect

我正在使用Maxmind的GeoIP重定向服务,但正如我们所知,它不是100%准确的。这就是为什么我的网站标题上有一个手动语言选择器,因此被错误地重定向到错误国家/地区的人可以更改它。

问题是向GeoIP本身添加一个例外,使手动选择器覆盖GeoIP,想不出一些办法,考虑使用cookie,但必须有更好的方法

<?php
            include("geoip.inc");
            $ip=$_SERVER['REMOTE_ADDR'];
            $gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
            $country_code = geoip_country_code_by_addr($gi, "$ip");
            geoip_close($gi);
            switch($country_code) {
              case "BR": header("Location: https://mysite.com/br"); break;
                          case "ES": header("Location: https://mysite.com/es"); break;
              default: header("Location: https://mysite.com");
            }
?>
Select your language:
<a href="mysite.com">English</a>
<a href="mysite.com/es">Spanish</a>
<a href="mysite.com/br">Portuguese</a>

您需要保持数据库更新以尽可能准确,您可以使用此处列出的说明完成此操作,在 IP 检测不正确的情况下,我会支持您对 cookie 的使用,我建议尽可能长时间地设置 cookie 的生命周期。