Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: IP-tocountry
Форумы портала PHP.SU » » Вопросы новичков » IP-tocountry

Страниц (1): [1]
 

1. Willie - 16 Ноября, 2017 - 01:34:44 - перейти к сообщению
Доброй ночи. Помогайте ребят, что-то я не врубаюсь как тут все устроено.

Есть фун-я подсчета диапазонов айпи :

PHP:
скопировать код в буфер обмена
  1. function iptocountry($ip) {
  2.     $numbers = preg_split( "/\./", $ip);
  3.         include("ip_files/".$numbers[0].".php");
  4.     $code=($numbers[0] * 16777216) + ($numbers[1] * 65536) + ($numbers[2] * 256) + ($numbers[3]);
  5.     foreach($ranges as $key => $value){
  6.         if($key<=$code){
  7.             if($ranges[$key][0]>=$code){$two_letter_country_code=$ranges[$key][1];break;}
  8.             }
  9.     }
  10.     if ($two_letter_country_code==""){$two_letter_country_code="unknown";}
  11.     return $two_letter_country_code;
  12.  
  13. }


255 файлов такого вот типа, прикрепляю - 1.пхп

И непосредственный вывод флага страны, в зависимости от ип адреса.
PHP:
скопировать код в буфер обмена
  1. if ($CountryFlags == 1 AND file_exists("./includes/ip_files/countries.php") AND $IPaddress!="" )
  2.                 {
  3.                 $two_letter_country_code=iptocountry($IPaddress);
  4.                 include("./includes/ip_files/countries.php");
  5.                 $three_letter_country_code=$countries[$two_letter_country_code][0];
  6.         $country_name=convEnt2($countries[$two_letter_country_code][1]);
  7.                 $file_to_check="./includes/flags/$two_letter_country_code.gif";
  8.                 if (file_exists($file_to_check)){
  9.                         $flagIMG = "<img src=$file_to_check>";
  10.                 $flag = "<img onMouseout='hidetooltip()' onMouseover='tooltip(\"".$flagIMG."<span class=color_text1>  $country_name </span>\",100); return false' src='$file_to_check' width='20' height='13'>";
  11.                 }else{
  12.                 $flag =  "<img title='$country_name' src='./includes/flags/noflag.gif' width='20' height='13'>";
  13.                 }      
  14.                 $myFlag = $flag;
  15.                 }

Код был написан относительно давно, и сейчас, около 30% флагов не отображает на сайте, по понятной причине - появляются новые провайдеры с уникальным ип диапазоном. Это в целом портит картину и очень хочется это поправить.

Вопрос в следующем, как правильно следует добавлять нужный мне ип-диапозон в массив одного из этих 255 файлов?
У меня ничего не получилось, пробовал в начало приписывать, в середину и конец массива. Так же пробовал долепить 256 файл по аналогии. На деле - ничего не изменялось, игнор или баг какой, ко всему этому я не могу понять данную функцию, помогите Огорчён

 

Powered by ExBB FM 1.0 RC1