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

samell79

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

rsn

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

samell79

  • Осваиваюсь на форуме
  • 23
  • 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

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

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

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

samell79

  • Осваиваюсь на форуме
  • 23
  • 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

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

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

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

samell79

  • Осваиваюсь на форуме
  • 23
  • 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

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

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

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

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

rsn

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

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

samell79

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

samell79

  • Осваиваюсь на форуме
  • 23
  • 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

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

rsn

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

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

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

samell79

  • Осваиваюсь на форуме
  • 23
  • 0 / 0

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

rsn

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

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

samell79

  • Осваиваюсь на форуме
  • 23
  • 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

  • Осваиваюсь на форуме
  • 23
  • 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

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

samell79

  • Осваиваюсь на форуме
  • 23
  • 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

  • Завсегдатай
  • 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

  • Осваиваюсь на форуме
  • 23
  • 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

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

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

Fedor Vlasenko

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

В коде страницы первый заголовок h1 находится ниже h3

Автор ALEXRAW

Ответов: 18
Просмотров: 271
Последний ответ 14.04.2021, 20:12:20
от ALEXRAW
Код PHP в заголовках страницы в браузере (title)

Автор virfolk

Ответов: 12
Просмотров: 314
Последний ответ 06.04.2021, 16:01:14
от sivers
Ошибка при отправке страницы в индексацию GSC

Автор OZlaim1

Ответов: 0
Просмотров: 65
Последний ответ 23.03.2021, 11:53:28
от OZlaim1
Как вывести заголовок страницы браузера в произвольном месте через php?

Автор kiev

Ответов: 4
Просмотров: 93
Последний ответ 12.02.2021, 16:50:57
от kiev
Как в хлебных крошках вывести заголовок страницы?

Автор zahar_92

Ответов: 4
Просмотров: 128
Последний ответ 10.02.2021, 09:20:25
от zahar_92