0 Пользователей и 1 Гость просматривают эту тему.
  • 22 Ответов
  • 1096 Просмотров
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
Для предотвращения блокировки всего сайта в Казахстане необходимо заблокировать 1 страницу сайта для пользователей из Казахстана или, лучше перенаправить их на другую страницу, к которой нет претензий в Казахстане.
Как это сделать на Joomla 3, без платных Geo IP, например путем встроенных расширений сервера vps Debian 9 и Joomla?
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
На сервере стоит GEOIP ?
Покажите полный вывод такого мини-скрипта:
Код
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
?>
Возможно, будет интересно: Интеграция с Ozon
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
Здравствуйте.
syntax error near unexpected token `newline' - из консоли

Запустить скрипт с joomla вот:
Array
(
    [HTTP_AUTHORIZATION] =>
    [HTTP_HOST] => www.сайт.ru
    [HTTP_X_FORWARDED_FOR] => 37.118.71.44
    [HTTP_CONNECTION] => close
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_COOKIE] => ........
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    [SERVER_SIGNATURE] =>
    [SERVER_SOFTWARE] => Apache/2.4.25 (Debian) mod_fcgid/2.3.9 OpenSSL/1.0.2s
    [SERVER_NAME] => www.сайт.ru
    [SERVER_ADDR] => ip сервера
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => мой ip
    [DOCUMENT_ROOT] => /home/admin/web/сайт.ru/public_html
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] =>
    [CONTEXT_DOCUMENT_ROOT] => /home/admin/web/сайт.ru/public_html
    [SERVER_ADMIN] => info@сайт.ru
    [SCRIPT_FILENAME] => /home/admin/web/сайт.ru/public_html/ваш скрипт.php
    [REMOTE_PORT] => 20558
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.0
    [REQUEST_METHOD] => GET
    [QUERY_STRING] =>
    [REQUEST_URI] => /lock.php
    [SCRIPT_NAME] => /lock.php
    [PHP_SELF] => /lock.php
    [REQUEST_TIME_FLOAT] => 1572459973.985
    [REQUEST_TIME] => 1572459973
)
« Последнее редактирование: 30.10.2019, 21:35:24 от samell79 »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Нет, не получается )
То есть вывод преждевременный.
Что-то не так Вы запустили.

Создайте в корне сайта (там же где robots.txt) файл test.php
Отредактируйте этот файл, поместив в него код, который я писал выше.
Откройте страницу: vash-site.kz/test.php (здесь vash-site.kz замените на свой домен)

Что там выводится?
« Последнее редактирование: 30.10.2019, 21:33:16 от rsn »
Возможно, будет интересно: Интеграция с Ozon
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
Уже понял где ошибся,
вот ответ сервера (убрал HTTP_COOKIE и ссылки на сайт)


[HTTP_AUTHORIZATION] =>
    [HTTP_HOST] => www.сайт.ru
    [HTTP_X_FORWARDED_FOR] => 37.118.71.44
    [HTTP_CONNECTION] => close
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_COOKIE] => ........
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    [SERVER_SIGNATURE] =>
    [SERVER_SOFTWARE] => Apache/2.4.25 (Debian) mod_fcgid/2.3.9 OpenSSL/1.0.2s
    [SERVER_NAME] => www.сайт.ru
    [SERVER_ADDR] => IP сервера
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => мой IP
    [DOCUMENT_ROOT] => /home/admin/web/сайт.ru/public_html
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] =>
    [CONTEXT_DOCUMENT_ROOT] => /home/admin/web/сайт.ru/public_html
    [SERVER_ADMIN] => info@сайт.ru
    [SCRIPT_FILENAME] => /home/admin/web/сайт.ru/public_html/test.php
    [REMOTE_PORT] => 20558
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.0
    [REQUEST_METHOD] => GET
    [QUERY_STRING] =>
    [REQUEST_URI] => /test.php
    [SCRIPT_NAME] => /test.php
    [PHP_SELF] => /test.php
    [REQUEST_TIME_FLOAT] => 1572459973.985
    [REQUEST_TIME] => 1572459973
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Да, здесь GEOIP нет.
Вижу 2 оптимальных варианта для Вас на выбор:

1) Сменить хостинг на такой, где есть GeoIP по-умолчанию, например Beget.com.

2) Воспользоваться бесплатным решением Sypex Geo. Можно даже в крон поставить задачу по ежемесячному обновлению его базы.
Потребуются кое-какие навыки в PHP.
Возможно, будет интересно: Интеграция с Ozon
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
У меня же vps, возможно GeoIP и установить.
А вот подключить к странице Joomla - сложнее

С оф. сайта debian

Список файлов пакета geoip-database в jessie для архитектуры all

/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIPv6.dat
/usr/share/doc/geoip-database/changelog.Debian.gz
/usr/share/doc/geoip-database/copyright
/usr/share/lintian/overrides/geoip-database

Да, там лежат эти файлы
« Последнее редактирование: 30.10.2019, 22:09:53 от samell79 »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Тогда не вижу препятствий.
Подключайте GeoIP.

В массиве $_SERVER будет [GEOIP_COUNTRY_CODE] => KZ (если посетитель из Казахстана)
В любом подходящем php сфайле (можете в index.php) делаете проверку

if ($_SERVER['GEOIP_COUNTRY_CODE'] == 'KZ') {
   // редирект
}

Также можно и через .htaccess настроить.
Возможно, будет интересно: Интеграция с Ozon
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
необходимо заблокировать 1 страницу сайта ... или, лучше перенаправить их на другую

Если одну страницу, тогда можно либо прописать её параметры в index.php (чтобы только для неё срабатывало), либо конкретно в её коде вставить проверку.
Если это страница, допустим, со стандартным материалом, можно воспользоваться плагином DirectPHP (установить его) и прямо в тексте страницы добавить php код.
Возможно, будет интересно: Интеграция с Ozon
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
Это мне по силам  ^-^, только какой будет код в странице?
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
Сообщение
Установка плагина успешно завершена.

This plugin allows direct embedding of PHP commands right inside Joomla content page for dynamic contents. To see examples of using this plugin, please refer to: http://www.kksou.com/php-gtk2/Joomla/DirectPHP-plugin.php

Остался код для страницы, можно себя в РФ попробовать перенаправить, а потом подставить Казахстан !
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Возможно, будет интересно: Интеграция с Ozon
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Когда настроите в $_SERVER будет присутствовать GEOIP_COUNTRY_CODE,
код на странице можете разместить примерно такой:

Код
<?php
if ($_SERVER['GEOIP_COUNTRY_CODE'] == 'KZ') {
   // редирект   
   header('Location: /new_path');
}
?>

Лучше написать это в начале материала
Возможно, будет интересно: Интеграция с Ozon
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/

GeoIP настроили?
Читаю мануал //packages.debian.org/jessie/all/geoip-database/filelist, не вижу как установить пакеты
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Что ж, мне остаётся только пожелать успехов )

Если вдруг не получится, имейте в виду вариант с Sypex Geo, выше я писал. Это не так сложно, как могло показаться  ;)
Возможно, будет интересно: Интеграция с Ozon
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
Спасибо rsn, но я уже не могу понять как установить эти пакеты из базы:
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIPv6.dat
/usr/share/doc/geoip-database/changelog.Debian.gz
/usr/share/doc/geoip-database/copyright
/usr/share/lintian/overrides/geoip-database

пробую так apt-get install geoip-database
« Последнее редактирование: 30.10.2019, 22:44:53 от samell79 »
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
установил GeoIP командой:
sudo apt-get install php-geoip php7.0-dev libgeoip-dev

по запросу
root@sport:~# php -m | grep geoip
geoip

Ставлю на страницу код
<?php
if ($_SERVER['GEOIP_COUNTRY_CODE'] == 'RU') {
   // http://www.сайт.ru/th.html
   header('Location: /new_path');
}
?>

И сам себя не перенаправляю. В чем ошибка ? Скорее всего в связке кода  <?php
if ($_SERVER['GEOIP_COUNTRY_CODE'] == 'KZ') {
   // редирект   
   header('Location: /new_path');
}
?>
и плагина DirectPHP,  в исходном коде странице кода php нет.
« Последнее редактирование: 31.10.2019, 00:06:33 от samell79 »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Что теперь выдает print_r($_SERVER); ?
Возможно, будет интересно: Интеграция с Ozon
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
    Array
(
    [HTTP_AUTHORIZATION] =>
    [HTTP_HOST] => www.сайт.ru
[HTTP_X_FORWARDED_FOR] => 37.118.61.44
    [HTTP_CONNECTION] => close
    [HTTP_CACHE_CONTROL] => max-age=0
    [HTTP_UPGRADE_INSECURE_REQUESTS] => 1
    [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
    [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
    [HTTP_COOKIE] => ...
    [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    [SERVER_SIGNATURE] =>
    [SERVER_SOFTWARE] => Apache/2.4.25 (Debian) mod_fcgid/2.3.9 OpenSSL/1.0.2s
    [SERVER_NAME] => www.сайт.ru
    [SERVER_ADDR] => 5.1....
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 37.118.61.44
    [DOCUMENT_ROOT] => /home/admin/web/сайт.ru/public_html
    [REQUEST_SCHEME] => http
    [CONTEXT_PREFIX] =>
    [CONTEXT_DOCUMENT_ROOT] => /home/admin/web/сайт.ru/public_html
    [SERVER_ADMIN] => info@p
    [SCRIPT_FILENAME] => /home/admin/web/сайт.ru/public_html/lock.php
    [REMOTE_PORT] => 59858
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.0
    [REQUEST_METHOD] => GET
    [QUERY_STRING] =>
    [REQUEST_URI] => /lock.php
    [SCRIPT_NAME] => /lock.php
    [PHP_SELF] => /lock.php
    [REQUEST_TIME_FLOAT] => 1572516327.205
    [REQUEST_TIME] => 1572516327
)

По сути тоже как и было, получается модуль geoip не подключен !? GeoIPEnable On в .htaccess - 500 error.
Личные сообщения на форуме не работают, что бы было веселее, хотел предложить rsn 500 р в яд - за помощь...
« Последнее редактирование: 31.10.2019, 13:53:57 от samell79 »
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Код
<?php
function getIP(){
    if (!empty($_SERVER['HTTP_CLIENT_IP'])){
        //check IP from share internet
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
        //to check IP is pass from proxy
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
if(function_exists('curl_init')) {
    $curl = curl_init('http://api.sypexgeo.net/json/' . getIP());
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(array()));  // $args
    $response = curl_exec($curl);
    curl_close($curl);
    $response = json_decode($response, true);
}
var_dump($response['country']);
*

samell79

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
  • https://4in.ru/
Если выполнить php


вот ответ:

array(23) { ["id"]=> int(185) ["iso"]=> string(2) "RU" ["continent"]=> string(2) "EU" ["lat"]=> int(60) ["lon"]=> int(100) ["name_ru"]=> string(12) "Россия" ["name_en"]=> string(6) "Russia" ["name_de"]=> string(8) "Russland" ["name_fr"]=> string(6) "Russie" ["name_it"]=> string(6) "Russia" ["name_es"]=> string(5) "Rusia" ["name_pt"]=> string(7) "Rússia" ["timezone"]=> string(13) "Europe/Moscow" ["area"]=> int(17100000) ["population"]=> int(140702000) ["capital_id"]=> int(524901) ["capital_ru"]=> string(12) "Москва" ["capital_en"]=> string(6) "Moscow" ["cur_code"]=> string(3) "RUB" ["phone"]=> string(1) "7" ["neighbours"]=> string(41) "GE,CN,BY,UA,KZ,LV,PL,EE,LT,FI,MN,NO,AZ,KP" ["vk"]=> int(1) ["utc"]=> int(3) }
« Последнее редактирование: 31.10.2019, 14:21:37 от samell79 »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Ну вот ) Получается, после выполнения запроса к Sypex Geo, $response['country']['iso'] выводит Вам код страны.
Используйте это.

А эту строчку var_dump($response['country']); можете удалить или закомментировать.
Возможно, будет интересно: Интеграция с Ozon
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
можно использовать js
если все будет плохо
Код
fetch('https://extreme-ip-lookup.com/json')
  .then(response => response.json())
  .then(({country}) => {
  alert(country)
  });
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Шаблон для данной страницы недоступен. сообщите об этом Администратору сайта

Автор 62411

Ответов: 2
Просмотров: 192
Последний ответ 30.03.2024, 13:15:16
от web1
Как установить header Cache-Control только для одной страницы по URL?

Автор Slava77

Ответов: 0
Просмотров: 132
Последний ответ 23.03.2024, 00:16:36
от Slava77
Как вставить модуль в код нужной страницы php?

Автор zvi

Ответов: 9
Просмотров: 3865
Последний ответ 21.02.2024, 11:03:08
от saynez
Долго грузятся страницы категорий

Автор SuperRomario

Ответов: 4
Просмотров: 1507
Последний ответ 03.07.2023, 17:59:07
от Wood
Получить текущий номер страницы плагина "Разрыв страницы" (pagebreak)

Автор sertlan

Ответов: 1
Просмотров: 450
Последний ответ 12.06.2023, 18:14:09
от sertlan