Требуется сделать два php-модуля для WordPress и PrestaShop со следующим функционалом и логикой работы:

1. По умолчанию мы не даем доступ всем новым пользователям на сайт.

2. Всех, кто не прошел проверку, переадресуем на другой URL, установленный в настройках модулей.

3. Некоторым пользователям, IP которых определяется как IP из разрешенных регионов РФ (субъектов Российской Федерации), мы предоставляем доступ к сайтам.

4. В обоих случаях мы записываем результаты проверки в сессию и куки, и IP-больше не проверяем, пользуемся результатами проверки при первом заходе на сайт.

5. Проверку IP-адреса нужно делать GET-запросом, например:

http://ipgeobase.ru:7020/geo?ip=83.149.35.6

Данный сервис дает ответ в формате XML:

83.149.32.0 - 83.149.35.255

RU

Екатеринбург

Свердловская область

Уральский федеральный округ

56.837814

60.596844

6. Результат ответа сервиса не нужно парсить с помощью подключаемых XML-библиотек, чтобы не тормозить сайт. Нас интересует лишь строковая переменная между тегами .... К примеру «Свердловская область». Получаем переменную при помощи регулярного выражения.

7. Далее при помощи SQL-запроса, узнаем – есть ли в таблице «regions» в поле «ipgeobaseru» запись совпадающая с данной строковой переменной. Если такая запись есть и в полях «accessPS» (для модуля PrestaShop) и «accessWP» (для модуля WordPress) содержится значение «1», то пользователя пускаем на сайт, проверок IP-больше не делаем, используя механизмы сессии и куки. Время жизни куки не более 1 месяца.

Если регион – пустой, то доступ запрещаем и переадресуем на URL, см. п.2.

8. Уточнения

8.1. Таблица «regions» было сделана ранее для нашей CRM и название регионов уже было прописано в поле «regionName». Так как у сервиса «http://ipgeobase.ru:7020/geo?ip=» нет кодов/ID регионов и соответствующей таблицы регионов, а значение выдается сразу текстом, то мы добавили в таблицу «regions» дополнительное поле «ipgeobaseru» и названия регионов CTRL+C, CTRL+V скопировали из http://ipgeobase.ru/cgi-bin/region_list.cgi - «Алфавитный указатель регионов Российской Федерации». Таким образом решилась проблема части регионов, к примеру, у нас в базе была просто «Адыгея», а ipgeobase.ru будет выдавать в XML-ответе «Республика Адыгея», аналогично решилась проблема с сокращениями «Ненецкий АО», стал «Ненецкий автономный округ». Поэтому текстовый поиск по региону должен работать на 99%, так как названия субъектов РФ уже взяты и занесены в таблицу с сайта ipgeobase.ru.

8.2. Для наших сайтов будут использоваться версии движков сайтов самые последние – WordPress 4.3.1 и PrestaShop 1.6.1.1. Для отладки кода их можно взять с официальных сайтов: https://ru.wordpress.org/ и https://www.prestashop.com/. Нужна будет краткая инструкция по установке.

8.3. Столь странные требования к блокировке предъявляются в связи с тем, что в тех регионах РФ, которые мы блокируем, продажа нашего продукта идет через дилеров. И конечные клиенты, в регионах в которых работают наши дилеры со своей ценовой политикой, не должны видеть даже цены, которые мы предлагаем в регионах «без дилеров».

8.4. Модули не имеют отображения во фронт-офисе сайтов. Зато в бек-офисах WordPress и PrestaShop должна быть страница с настройками модулей – регионы РФ с включенным флажками для разрешенных регионов (настройки хранятся в таблице БД «regions»), включение/выключение работы модуля, URL-переадресации, включение/выключение ведения лога, поля БД где нужно смотреть разрешен ли доступ («accessPS», «accessWP» или может быть потом будут другие поля). Настройки модулей, кроме регионов, хранятся в текстовом файле в папке модуля.

8.5 Ведется лог работы проверки IP в формате:

Дата-время| IP | регион | от куда пришел и другие подробности, которые могут помочь удалить от туда ссылку. Ещё поля - на ваше усмотрение.

8.6. Нужно процедурное программирование (ООП замедляет PHP, на наш взгляд). Должны быть комментарии к функциям и ключевым блокам кода. При делении кода на функции нужно предусмотреть возможность дальнейшего расширения – написания модулей к другим движкам.

10 лет назад
parsing8
Киселев 
43 года
12 лет в сервисе
Был
10 лет назад

Заявки фрилансеров

Нет заявок фрилансеров
  • Похожие заказы

  • Нашему проекту strongwine.ru требуется программист. Сайт на HOST CMS. Требуется человек который оперативно будет вносить правки, исправления, установку новых модулей и т.д. - сообща с нашим СЕО-программистом. Сайт новый, поэтому на первом этапе работы должно ...

    Закрыт
    9 лет назад
  • Требуется установить cms, прикрутить к ней шаблонный дизайн. CMS аргументированно выбираете вы сами, дизайн выберем вместе. Наполнять сайт не надо. Заливаем на хостинг, проверяем работоспособность. Будущий сайт должен быть похож на ...

    Завершен
    9 лет назад
  • Здравствуйте. на сайте http://krekhovetskyi.net/ под рубриками есть типы: "Аниме", "Мультфильмы", "Фильмы", "Сериалы". нужно добавить еще два - это "Мультсериалы" и "Аниме-сериалы". вставить нужно сразу ...

    Завершен
    9 лет назад
  • Есть макет в html. Требуется установка его на вордпресс. Желательно сегодня. Пишите сроки и стоимость работы. Макет состоит из 1 страницы (адаптивный), для вордпресс нужно предусмотреть наличие колонки справа для второстепенных. ...

    Завершен
    10 лет назад
  • Доброго дня! Есть сайт на wordpress. Вроде проведены работы по оптимизации (минификация, кэш и т.п.). Но что-то не так со скоростью все равно - время ответа от сервера по 2 секунды. Сайт ...

    Закрыт
    9 лет назад