• DONATE to NULLED!
    Форуму и его команде можно помочь, мотивировать модераторов разделов.
    Помогите модератору этого раздела killoff лично.

Помощь Делаем модуль вывода баннера по стране и городу

Kristinka77

Гуру форума
Регистрация
30 Янв 2015
Сообщения
174
Реакции
65
Для просмотра ссылки Войди или Зарегистрируйся , про эти базы я в курсе. Я выше ещё интересовалась как создать свой собственный тег для шаблона модуля, например есть переменная $country как её вывести в шаблоне чтоб из неё выводилось название страны, не нашла где прочитать про создание своих тегов для собственного модуля.

Название темы убило ))) Тема для Kristinka77 ))) Переименовала её в более потребный вид )))

Короче модуль такой сделала, папка называется geogeo, в ней файл IP2Location.php , target.php , IP2LOCATION-LITE-DB11.BIN

Файл target.php имеет такое содержимое:

PHP:
<?php

$ip = $_SERVER["REMOTE_ADDR"];

require_once 'IP2Location.php';
$loc = new IP2Location('IP2LOCATION-LITE-DB11.BIN', IP2Location::FILE_IO);

echo 'Country Code: ' . $loc->lookup($ip, IP2Location::COUNTRY_CODE) . '<br />';
echo 'Country Name: ' . $loc->lookup($ip, IP2Location::COUNTRY_NAME) . '<br />';

echo 'Region Name: ' . $loc->lookup($ip, IP2Location::REGION_NAME) . '<br />';
echo 'City Name: ' . $loc->lookup($ip, IP2Location::CITY_NAME) . '<br />';
echo 'Latitude: ' . $loc->lookup($ip, IP2Location::LATITUDE) . '<br />';
echo 'Longitude: ' . $loc->lookup($ip, IP2Location::LONGITUDE) . '<br />';

echo 'Zip Code: ' . $loc->lookup($ip, IP2Location::ZIP_CODE) . '<br />';
echo 'Time Zone: ' . $loc->lookup($ip, IP2Location::TIME_ZONE) . '<br />';

?>

Папку с этим добром поместила в папку \engine\modules

Всё...на этом застряла, нужно как то сделать так чтоб в шаблоне myshablon.tpl, который подключается в боковой колонке выводилсь информация о том откуда зашёл посетитель на сайт, с какой страны, города и т д. Но это в учебных целях для меня. А вообще хочу по этим переменным в этот шаблон выводить баннер, как по странам так и по городам можно, потому что переменная
PHP:
$loc->lookup($ip, IP2Location::CITY_NAME)
содержит название города посетителя.
 
Последнее редактирование модератором:
Прочитав название темы понятно что тема больше относится к ТДС:
TDS (Traffic Direction System) — система распределения трафика. Из определения понятно, что система будет полезна тем, кто работает с трафиком. TDS представляет из себя скрипт.

Думаю что на ДЛЕ такое делать нецелесообразно, когда можно поставить ТДС, настроить всё как надо и потом на сайте выводить то что надо будет по ГЕО фильтру...
 
ну почему же, у меня на сайте сейчас эта система работает очень неполохо, на главной странице сайта такой код

PHP:
<?php

$ip = $_SERVER["REMOTE_ADDR"];

require_once 'IP2Location.php';
$loc = new IP2Location('IP2LOCATION-LITE-DB11.BIN', IP2Location::FILE_IO);


if (($loc->lookup($ip, IP2Location::COUNTRY_CODE) == "CH") or ($loc->lookup($ip, IP2Location::COUNTRY_CODE) == "TW"))
  {
  include("СТРАНИЦА ДЛЯ КИТАЙЦЕВ.html");
  exit;
  }

А ДАЛЬШЕ СТРАНИЦА ДЛЯ ВСЕХ ОСТАЛЬНЫХ

?>

Поэтому можно сделать и модуль на основе этого и показывать баннер или любую картинку в зависимости от страны и города
 
Кстати вот есть готовое решение Для просмотра ссылки Войди или Зарегистрируйся но для новых версий ДЛЕ нет поддержки да и криво наботал он на старых версиях, я пробовала. Но принцип действия у него тот же что я хочу сделать в своём модуле. Мне только как то эти переменные с городами и странами надо превратить в теги чтоб в них помещать баннеры, картинки или текст.
 
Записывал сильно уставший, мог нести бред... Скорее всего именно это и делал :)

@Kristinka77, надеюсь ты найдёшь ответы на все свои вопросы по данной теме )
 
Последнее редактирование:
Для просмотра ссылки Войди или Зарегистрируйся , пока пол ролика ты цитируешь документацию, смотрю дальше....Но как ты говоришь ПЭ ХЭ ПЭ меня убивает )))))))))))))))
 
Ну так в любом случае, чтобы про DLE не говорили - это будет либо документация, либо исходный код :)

В конечном итоге ответ то получен?
 
Ну так в любом случае, чтобы про DLE не говорили - это будет либо документация, либо исходный код :)

В конечном итоге ответ то получен?

Тексты выводит нормально, но вот мой модуль не хочет работать, ошибки выдают вот эти строки

require_once 'IP2Location.php';
$loc = new IP2Location('IP2LOCATION-LITE-DB11.BIN', IP2Location::FILE_IO);

если запустить из корневого каталога этот скрипт, то всё работает, а вот из папки с модулями не хочет

PHP:
<?php

$ip = $_SERVER["REMOTE_ADDR"];

require_once 'IP2Location.php';
$loc = new IP2Location('IP2LOCATION-LITE-DB11.BIN', IP2Location::FILE_IO);

echo 'Country Code: ' . $loc->lookup($ip, IP2Location::COUNTRY_CODE) . '<br />';
echo 'Country Name: ' . $loc->lookup($ip, IP2Location::COUNTRY_NAME) . '<br />';

echo 'Region Name: ' . $loc->lookup($ip, IP2Location::REGION_NAME) . '<br />';
echo 'City Name: ' . $loc->lookup($ip, IP2Location::CITY_NAME) . '<br />';
echo 'Latitude: ' . $loc->lookup($ip, IP2Location::LATITUDE) . '<br />';
echo 'Longitude: ' . $loc->lookup($ip, IP2Location::LONGITUDE) . '<br />';

echo 'Zip Code: ' . $loc->lookup($ip, IP2Location::ZIP_CODE) . '<br />';
echo 'Time Zone: ' . $loc->lookup($ip, IP2Location::TIME_ZONE) . '<br />';

?>

Вот такая куча ошибок вылезает:

PHP:
Fatal error: Uncaught exception 'Exception' with message 'IP2Location.class.php: Unable to open file "IP2LOCATION-LITE-DB11.BIN".' in C:\Users\....\OpenServer\domains\11-2.dle\engine\modules\IP2Location.php:168 Stack trace: #0 C:\Users\.....\OpenServer\domains\11-2.dle\engine\modules\hello.php(7): IP2Location->__construct('IP2LOCATION-LIT...', 0) #1 C:\Users\......\OpenServer\domains\11-2.dle\engine\classes\templates.class.php(276): include('C:\\Users\\......') #2 [internal function]: dle_template->load_file(Array) #3 C:\Users\.....\OpenServer\domains\11-2.dle\engine\classes\templates.class.php(920): preg_replace_callback('#\\{include file...', Array, '...') #4 C:\Users\......\OpenServer\domains\11-2.dle\engine\modules\main.php(547): dle_template->compile('main') #5 C:\Users\.....\OpenServer\domains\11-2.dle\engine\init.php(857): require_once('C:\\....\\...') #6 C:\Users\....\OpenServer\domains\11-2.dle\index.php(30): require_once('C:\\User in C:\Users\......\OpenServer\domains\11-2.dle\engine\modules\IP2Location.php on line 168
 
Последнее редактирование:
Имейте привычку указывать полный путь, а не относительный...

К примеру
include ENGINE_DIR . '/modules/search.php'; // Файл: /engine/modules/search.php
require_once ROOT_DIR . '/engine/init.php'; // Файл: /engine/init.php

Если IP2LOCATION-LITE-DB11.BIN лежит в корне (убить за это - его любой желающий скачает, да и вообще разрешение .bin - зло!), то нужно писать такой код:
PHP:
$loc = new IP2Location(ROOT_DIR . 'IP2LOCATION-LITE-DB11.BIN', IP2Location::FILE_IO);
Если в папке с модулем:
PHP:
$loc = new IP2Location(ENGINE_DIR . '/modules/IP2LOCATION-LITE-DB11.BIN', IP2Location::FILE_IO);
 
Гыыыы )))))))))) Заработала родимая ))))))))) Теперь бы вместо RU картинку бы какую соответствующую вывести, например условие еслии RU, то вывести картинку с таким то именем, если US то картинку с именем таким то... И будет модуль геотаргетинга баннеров )))) Не хуже чем у REZERа ))))

ihVuNbQ.jpg


Говоришь да и вообще разрешение .bin - зло! а что делать если на халяву дают такую базу только в таком формате? )))

И ещё вопрос такой...Если айпи не определён, то вываливается вот такая ошибка:

Catchable fatal error: Object of class IP2LocationRecord could not be converted to string in C:\Users\.....\Desktop\OpenServer\domains\11-2.dle\engine\modules\hello.php on line 12

А 12-ая строка это вывод: echo 'Country Code: ' . $loc->lookup($ip, IP2Location::COUNTRY_CODE) . '<br />';

Эту строку убираешь следующая строка с такой же ошибкой. Как сделать так чтоб если айпи не определился чтоб это игнорировалось, чтоб весь сайт не валился из - за этого?

PHP:
<?
$ip = $_SERVER["REMOTE_ADDR"];

require_once ENGINE_DIR.'/modules/IP2Location.php';
$loc = new IP2Location(ENGINE_DIR.'/modules/IP2LOCATION-LITE-DB11.BIN', IP2Location::FILE_IO);

echo 'Ваш ip адрес: ' . $ip . '<br />';

echo 'Country Code: ' . $loc->lookup($ip, IP2Location::COUNTRY_CODE) . '<br />';
echo 'Country Name: ' . $loc->lookup($ip, IP2Location::COUNTRY_NAME) . '<br />';

echo 'Region Name: ' . $loc->lookup($ip, IP2Location::REGION_NAME) . '<br />';
echo 'City Name: ' . $loc->lookup($ip, IP2Location::CITY_NAME) . '<br />';
echo 'Latitude: ' . $loc->lookup($ip, IP2Location::LATITUDE) . '<br />';
echo 'Longitude: ' . $loc->lookup($ip, IP2Location::LONGITUDE) . '<br />';

echo 'Zip Code: ' . $loc->lookup($ip, IP2Location::ZIP_CODE) . '<br />';
echo 'Time Zone: ' . $loc->lookup($ip, IP2Location::TIME_ZONE) . '<br />';

?>

Оффтоп.

Блин, уже утро, я пошла спать, проснусь почитаю советы профи Горбушки )
 
Последнее редактирование модератором:
Назад
Сверху