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 :: Скрипт tabgeo-country не работает

 PHP.SU

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


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

> Описание: Не срабатывает скрипт. Кроме заголовков ничего не показывает
TamerlanTT
Отправлено: 22 Апреля, 2018 - 22:27:13
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Апр. 2018  


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




Всем привет!
Не срабатывает скрипт. Кроме заголовков ничего не кажет (цены,валюта).
Делал по инструкции : http://craftertube[dot]pro/skrip-mul[dot][dot][dot]i-tsen-na-lendi/

index.html

CODE (html):
скопировать код в буфер обмена
  1. <?php
  2. include("tabgeo_country_v4.php");
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $country_code = tabgeo_country_v4($ip);
  5. ?>
  6. <!DOCTYPE html>
  7. <html lang="en">
  8. <head>
  9.         <meta charset="UTF-8">
  10.         <title>kote.ws</title>
  11.         <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  12. <script>
  13.         $(function(){
  14.                 var country = new Object();
  15.                 country['RU'] = {
  16.                         price : '1200',
  17.                         skidka: '300',
  18.                         totalPrice: '900',
  19.                         valuta : 'руб.'
  20.                 };
  21.                 country['UA'] = {
  22.                         price : '800',
  23.                         skidka: '200',
  24.                         totalPrice: '600',
  25.                         valuta : 'грн.'
  26.                 }
  27.      
  28.         var sCountry = function(countryID){
  29.                 $('.price').text(country[countryID].price);
  30.                 $('.skidka').text(country[countryID].skidka);
  31.                 $('.totalPrice').text(country[countryID].totalPrice);
  32.                 $('.valuta').text(country[countryID].valuta);
  33.         };
  34.         sCountry('<?=$country_code;?>');
  35. });
  36. </script>
  37. </head>
  38. <body>
  39.      
  40.         <h1>Супер предложение только сегодня!</h1>
  41.         <h2>Старая цена <span class="price"></span> <span class="valuta"></span></h2>
  42.         <h2>Скидка <span class="skidka"></span> <span class="valuta"></span></h2>
  43.         <h3>Новая цена <span class="totalPrice"></span> <span class="valuta"></span></h3>
  44. </body>
  45. </html>



tabgeo_country_v4.php


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. namespace TabGeo;
  4.  
  5. function tabgeo_country_v4($ip){
  6.     $fh = fopen(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tabgeo_country_v4.dat', 'rb');
  7.     $iso = array('AD', 'AE', 'AF', 'AG', 'AI', 'AL', 'AM', 'AO', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AW', 'AX', 'AZ',
  8.             'BA', 'BB', 'BD', 'BE', 'BF', 'BG', 'BH', 'BI', 'BJ', 'BL', 'BM', 'BN', 'BO', 'BQ', 'BR', 'BS',
  9.             'BT', 'BV', 'BW', 'BY', 'BZ', 'CA', 'CC', 'CD', 'CF', 'CG', 'CH', 'CI', 'CK', 'CL', 'CM', 'CN',
  10.             'CO', 'CR', 'CU', 'CV', 'CW', 'CX', 'CY', 'CZ', 'DE', 'DJ', 'DK', 'DM', 'DO', 'DZ', 'EC', 'EE',
  11.             'EG', 'EH', 'ER', 'ES', 'ET', 'FI', 'FJ', 'FK', 'FM', 'FO', 'FR', 'GA', 'GB', 'GD', 'GE', 'GF',
  12.             'GG', 'GH', 'GI', 'GL', 'GM', 'GN', 'GP', 'GQ', 'GR', 'GS', 'GT', 'GU', 'GW', 'GY', 'HK', 'HM',
  13.             'HN', 'HR', 'HT', 'HU', 'ID', 'IE', 'IL', 'IM', 'IN', 'IO', 'IQ', 'IR', 'IS', 'IT', 'JE', 'JM',
  14.             'JO', 'JP', 'KE', 'KG', 'KH', 'KI', 'KM', 'KN', 'KP', 'KR', 'KW', 'KY', 'KZ', 'LA', 'LB', 'LC',
  15.             'LI', 'LK', 'LR', 'LS', 'LT', 'LU', 'LV', 'LY', 'MA', 'MC', 'MD', 'ME', 'MF', 'MG', 'MH', 'MK',
  16.             'ML', 'MM', 'MN', 'MO', 'MP', 'MQ', 'MR', 'MS', 'MT', 'MU', 'MV', 'MW', 'MX', 'MY', 'MZ', 'NA',
  17.             'NC', 'NE', 'NF', 'NG', 'NI', 'NL', 'NO', 'NP', 'NR', 'NU', 'NZ', 'OM', 'PA', 'PE', 'PF', 'PG',
  18.             'PH', 'PK', 'PL', 'PM', 'PN', 'PR', 'PS', 'PT', 'PW', 'PY', 'QA', 'RE', 'RO', 'RS', 'RU', 'RW',
  19.             'SA', 'SB', 'SC', 'SD', 'SE', 'SG', 'SH', 'SI', 'SJ', 'SK', 'SL', 'SM', 'SN', 'SO', 'SR', 'SS',
  20.             'ST', 'SV', 'SX', 'SY', 'SZ', 'TC', 'TD', 'TF', 'TG', 'TH', 'TJ', 'TK', 'TL', 'TM', 'TN', 'TO',
  21.             'TR', 'TT', 'TV', 'TW', 'TZ', 'UA', 'UG', 'UM', 'US', 'UY', 'UZ', 'VA', 'VC', 'VE', 'VG', 'VI',
  22.             'VN', 'VU', 'WF', 'WS', 'YE', 'YT', 'ZA', 'ZM', 'ZW', 'XA', 'YU', 'CS', 'AN', 'AA', 'EU', 'AP',
  23.     );
  24.     $tabgeo_bs = function($data_array, $ip, $step){
  25.         $start = 0;
  26.         $end   = count($data_array) - 1;
  27.         while (true) {
  28.             $mid    = floor(($start + $end) / 2);
  29.             $unpack = $step ? unpack('Noffset/Cip/Ccc_id', "\x00$data_array[$mid]") : unpack('Cip/Ccc_id', $data_array[$mid]);
  30.             if ($unpack['ip'] == $ip) return $unpack;
  31.             if ($end - $start  <   0) return $ip > $unpack['ip'] ? $unpack : $unpack_prev;
  32.             if ($unpack['ip']  > $ip) $end = $mid - 1; else $start = $mid + 1;
  33.             $unpack_prev = $unpack;
  34.         }
  35.     };
  36.    
  37.     $ip_array = explode('.', $ip);
  38.     fseek($fh, ($ip_array[0] * 256 + $ip_array[1]) * 4);
  39.     $index_bin = fread($fh, 4);
  40.     $index = unpack('Noffset/Clength', "\x00$index_bin");
  41.     if($index['offset'] == 16777215) return $iso[$index['length']];
  42.     fseek($fh, $index['offset'] * 5 + 262144);
  43.     $bin = fread($fh, ($index['length'] + 1) * 5);
  44.     $d = $tabgeo_bs(str_split($bin, 5), $ip_array[2], TRUE);
  45.     if($d['offset'] == 16777215) return $iso[$d['cc_id']];
  46.     if($ip_array[2] > $d['ip']) $ip_array[3] = 255;
  47.     fseek($fh, -(($d['offset'] + 1 + $d['cc_id']) * 2), SEEK_END);
  48.     $bin = fread($fh, ($d['cc_id'] + 1) * 2);
  49.     $d = $tabgeo_bs(str_split($bin, 2), $ip_array[3], FALSE);
  50.     return $iso[$d['cc_id']];
  51. }
  52. ?>
 
 Top
Vladimir Kheifets
Отправлено: 23 Апреля, 2018 - 07:33:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


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




TamerlanTT пишет:
Всем привет!
Не срабатывает скрипт. Кроме заголовков ничего не кажет (цены,валюта).


Добрый день!
Для начала Вам нужно проверить, есть ли у Вас file tabgeo_country_v4.dat
Советую распечатать значения переменных $ip, $country_code, а для проверки JS задать значения переменой $country_code="RU" или $country_code="UA".
Если JS не сработает, смотрите ошибки в консоли браузера.
Наличие JS было бы оправдано, если бы у Вас был селектор для выбора стран. Так как это показано сейчас, лучше было бы реализовать на PHP.
Не уверен в том, что определение ISO2-кода по Ip-адресу будет во всех случаях работать достоверно.
Удачи!

(Отредактировано автором: 23 Апреля, 2018 - 09:07:18)

 
 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