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

samell79

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

rsn

  • Захожу иногда
  • 238
  • 13 / 0
На сервере стоит GEOIP ?
Покажите полный вывод такого мини-скрипта:
Код
<?php
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
?>
Есть одна хорошая компания, с которой приятно иметь дело )
*

samell79

  • Новичок
  • 21
  • 0 / 0
Здравствуйте.
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

  • Захожу иногда
  • 238
  • 13 / 0
Нет, не получается )
То есть вывод преждевременный.
Что-то не так Вы запустили.

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

Что там выводится?
« Последнее редактирование: 30.10.2019, 21:33:16 от rsn »
Есть одна хорошая компания, с которой приятно иметь дело )
*

samell79

  • Новичок
  • 21
  • 0 / 0
Уже понял где ошибся,
вот ответ сервера (убрал 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

  • Захожу иногда
  • 238
  • 13 / 0
Да, здесь GEOIP нет.
Вижу 2 оптимальных варианта для Вас на выбор:

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

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

samell79

  • Новичок
  • 21
  • 0 / 0
У меня же 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

  • Захожу иногда
  • 238
  • 13 / 0
Тогда не вижу препятствий.
Подключайте GeoIP.

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

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

Также можно и через .htaccess настроить.
Есть одна хорошая компания, с которой приятно иметь дело )
*

rsn

  • Захожу иногда
  • 238
  • 13 / 0
необходимо заблокировать 1 страницу сайта ... или, лучше перенаправить их на другую

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

samell79

  • Новичок
  • 21
  • 0 / 0
Это мне по силам  ^-^, только какой будет код в странице?
*

samell79

  • Новичок
  • 21
  • 0 / 0
Сообщение
Установка плагина успешно завершена.

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

  • Захожу иногда
  • 238
  • 13 / 0
Есть одна хорошая компания, с которой приятно иметь дело )
*

rsn

  • Захожу иногда
  • 238
  • 13 / 0
Когда настроите в $_SERVER будет присутствовать GEOIP_COUNTRY_CODE,
код на странице можете разместить примерно такой:

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

Лучше написать это в начале материала
Есть одна хорошая компания, с которой приятно иметь дело )
*

samell79

  • Новичок
  • 21
  • 0 / 0

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

rsn

  • Захожу иногда
  • 238
  • 13 / 0
Что ж, мне остаётся только пожелать успехов )

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

samell79

  • Новичок
  • 21
  • 0 / 0
Спасибо 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

  • Новичок
  • 21
  • 0 / 0
установил 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

  • Захожу иногда
  • 238
  • 13 / 0
Что теперь выдает print_r($_SERVER); ?
Есть одна хорошая компания, с которой приятно иметь дело )
*

samell79

  • Новичок
  • 21
  • 0 / 0
    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

  • Давно я тут
  • 981
  • 74 / 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

  • Новичок
  • 21
  • 0 / 0
Если выполнить 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

  • Захожу иногда
  • 238
  • 13 / 0
Ну вот ) Получается, после выполнения запроса к Sypex Geo, $response['country']['iso'] выводит Вам код страны.
Используйте это.

А эту строчку var_dump($response['country']); можете удалить или закомментировать.
Есть одна хорошая компания, с которой приятно иметь дело )
*

Fedor Vlasenko

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

[Решено] Как в БД массово перенести материалы в другую категорию?

Автор dron

Ответов: 7
Просмотров: 133
Последний ответ 12.11.2019, 19:21:55
от dron
Страница доступная только для группы пользователей

Автор mikz

Ответов: 0
Просмотров: 74
Последний ответ 21.10.2019, 06:49:22
от mikz
Содержание гл страницы периодически пропадает, кроме заглавия и меню

Автор nqui

Ответов: 5
Просмотров: 159
Последний ответ 06.09.2019, 14:50:36
от nqui
Как сделать канноникал на все страницы?

Автор polezniy

Ответов: 3
Просмотров: 159
Последний ответ 23.08.2019, 21:20:31
от polezniy
Убрать дубли главной страницы Joomla 3.8.13

Автор simatic007

Ответов: 5
Просмотров: 177
Последний ответ 21.08.2019, 15:23:08
от voland