Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-使手动语言选择器覆盖GeoIP重定向_Php_Overriding_Geoip - Fatal编程技术网

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

PHP-使手动语言选择器覆盖GeoIP重定向,php,overriding,geoip,Php,Overriding,Geoip,我正在使用Maxmind的GeoIP重定向服务,但正如我们所知,它不是100%准确的。这就是为什么在我的网站标题上有一个手动语言选择器,所以被错误地重定向到错误国家的人可以更改它 问题是要给GeoIP本身添加一个异常,使手动选择器覆盖GeoIP,无法想出一些方法来实现它,考虑过使用cookie,但必须有更好的方法 <?php include("geoip.inc"); $ip=$_SERVER['REMOTE_ADDR'];

我正在使用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的使用寿命