Я хотел бы создать выпадающий список страны, который может предварительно выбрать страну пользователя на основе его/ее адреса. например, если пользователь находится в Италии, он должен сначала показать Италию, оставив все остальные страны в списке.
Я много искал, и я начал с скачивания в Maxmind GeoIP API и базе данных. Это то, что я пробовал, и он отображает только обычный раскрывающийся список без предварительного выбора страны по ip:
  <select name="" multiple="multiple" width="200px" size="10px">
  <?php  
  require 'vendor/autoload.php'; //I put this is /var/www where my php file is  
  $gi = geoip_open('/usr/local/share/GeoIP/GeoIP.dat', GEOIP_STANDARD);
  $ip =  $_SERVER['REMOTE_ADDR'];
  echo $ip;
  $preselect_country = geoip_country_code_by_addr($gi, $ip);
  //newCountry.php is where I select all countries for drop down list
  include('newCountry.php');
  while ($line = mysql_fetch_array($result)) {
       if($preselect_country == $line){
         $selected = "selected";
     }else{
         $selected = "";
      }
  ?>
   <option value="<?php echo $line['country'];?>"<?php echo $selected; ?>><?php echo $line['country'];?> </option>;
  <?php
   }
  ?>
     geoip_close($gi);
 ?>
 </select>
Я действительно изо всех сил пытался найти решение самостоятельно, я прочитал все эти похожие вопросы и попробовал также другие решения, такие как: Автоматическое раскрытие на основе страны с помощью Geoplugin, Получение текущего имени страны с использованием IP-адреса в php, Получить страну IP-адреса с PHP, Получение страны-посетителя из их Ip и многое другое, но я не знаю, почему это не Работа. Я пробовал этот код, который работал, поэтому я нашел, что могу получить ip:
 $ip =  $_SERVER['REMOTE_ADDR']; 
  echo $ip;
Также этот образец работал у меня (выход - ES Spain),
<?php
 require 'vendor/autoload.php';
 $gi = geoip_open("/usr/local/share/GeoIP/GeoIP.dat",GEOIP_STANDARD);
 echo geoip_country_code_by_addr($gi, "80.24.24.24") . "\t" .
 geoip_country_name_by_addr($gi, "80.24.24.24") . "\n";
 geoip_close($gi);
 ?>
но если я попробую точно такой же код, просто заменив "80.24.24.24" на $ip, он ничего не вернет!!
#edit: Ну, благодаря @vch, я обнаружил, что проблема связана с моим ip, так как для частной сети, поэтому я получил свой реальный IP-адрес через ifconfig и использовал его в своем коде, и он работал хорошо. До этого момента я обнаружил, что нет никаких проблем с geoip api, который я установил, а также выпадающий предварительный выбор работает хорошо.
Это новый код:
<select name = "question" class = "question" id = 'Question'> 
<?php
require 'vendor/autoload.php';
$gi = geoip_open('/usr/local/share/GeoIP/GeoIP.dat', GEOIP_STANDARD);
$ip = "131.175.122.222";
$preselect_country = geoip_country_name_by_addr($gi, $ip);  
include('newCountry.php');
while ($line = mysql_fetch_array($result)) {
   if($preselect_country == $line['country']){
       $selected = "selected";
   }else{
       $selected = "";
    }
 echo "<option value=\"{$line['country']}\" {$selected}>{$line['country']}</option>\n";
 }
   geoip_close($gi);
?>
</select>
Теперь мой вопрос: как получить реальный интернет-доступ для пользователей, если они используют такие частные сети, как я?
Все идеи высоко оценены,
Спасибо,
