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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: IP-tocountry

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Функция с айпи диапазонами
Willie
Отправлено: 16 Ноября, 2017 - 01:34:44
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2017  


Помог: 0 раз(а)




Доброй ночи. Помогайте ребят, что-то я не врубаюсь как тут все устроено.

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

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 файл по аналогии. На деле - ничего не изменялось, игнор или баг какой, ко всему этому я не могу понять данную функцию, помогите Огорчён
Скачать файл: 1.php
Скачан раз: 15
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB