Блокировка по ip-адресу. Как допилить user profile?

  • 8 Ответов
  • 242 Просмотров

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

*

Оффлайн Fill_

Здравствуйте!
Использую стандартный плагин user profile.
При регистрации новых пользователей необходимо реализовать запись их IP-адресов (в таблицу jos_user).

Следующая задача - реализовать запрет на регистрацию, под уже имеющимся в базе данным IP-адресам.

Догадываюсь, что искать ответ необходимо в файлах :
/components/com_users/models/registration.php
/public_html/libraries/joomla/user/user.php

Но как то не догоняю. Появились уже сомнения. Может кто подскажет, в какой функции непосредственно выполняется запись в базу данных? Может есть примеры?

Чтобы исключить лишние вопросы, скажу сразу, что моя задача заключается именно в запрете на несколько регистраций по одному IP-адресу. Возможность регистрироваться одному человеку несколько раз с разных устройств - меня не беспокоит (такова специфика проекта).

*

Оффлайн AlekVolsk

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

*

Оффлайн Fill_

Внешний IP адрес пользователя. Динамический или статический значения не имеет.

*

Оффлайн robert

Напишите плагинчик на событие onUserBeforeSave и проверяйте IP.
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн Fill_

В файле: /public_html/libraries/joomla/user/user.php
             В функции: public function bind(&$array), после блока IF:

                    if (strlen($username) > 150)
         {
            $username = substr($username, 0, 150);
            $this->set('username', $username);
         }

                  Добавил:
         if ( empty( $array['IP_reg'] ) ) {
                        $array['IP_reg'] = $_SERVER['REMOTE_ADDR'];
         }


В файле: /public_html/plugins/user/profile/profile.php
              В функции: public function onUserBeforeSave, в самом начале добавил код:

            $ip=(string)$_SERVER['REMOTE_ADDR'];
      $db = JFactory::getDbo();
      $query = $db->getQuery(true)
         ->select($db->quoteName('username'))
         ->from($db->quoteName('jos_users'))
         ->where($db->quoteName('IP_reg'). ' = '. $db->quote($ip));
   
      $db->setQuery($query);
      
      $list = $db->loadResult();
      
      if (!empty($list))
      {
         return false;
      }

                            
В БД, в таблице jos_users добавил столбец IP_reg

В случае регистрации пользователя с уже имеющимся IP адресом в базе, вылетает сообщение - Не удалось зарегистрировать пользователя, и соответственно пользователь не регистрируется.

Опыта доработки/разработки модулей, плагинов, компонентов Joomla у меня нет, поэтому подозреваю, что у данного способа могут быть слабые места?
А еще хотелось бы, чтобы вылетало сообщение - Не удалось зарегистрировать пользователя. Пользователь с Вашим IP уже зарегистрирован. В каком направлении смотреть?
« Последнее редактирование: 13.02.2017, 01:36:25 от Fill_ »

*

Оффлайн robert

Плагины нужны для расширения функционалов без правки ядра, а вы хакнули само ядро, так что писать плагин уже нет смысла.
Думаю, что во избежание создания нового поля можно засунуть IP в таблицу profile, а сообщение можно сгенерировать таким образом:
Код: (php-brief) [Выделить]
JFactory::getApplication()->enqueueMessage('сообщение', 'тип');
  • Не будь паразитом, сделай что-нибудь самостоятельно!
  • В личке и по Skype не даю советов.

*

Оффлайн Septdir

  • *******
  • 2086
  • [+]106 / [-]0
  • JoomlaZen
    • Просмотр профиля
    • Игорь «Septdir» Бердичевский
IP у многих статика, но после блокировки ру тренера даже домохозяйки её обходят. Да и делается это в 1 клик. Это раз. Два люди выходят в сеть с разных мест даже если предположить что везде IP статический то все равно их может быть несколько. Что уж говлрить про кафе. Поэтому такая проверка не только бессысленна но и нанесет вред.  Ибо скажем из кафе на вашем сайте можно не зарегистрироваться. Что же реализации. Читайте про плагины для юзеров.
P.S. да и вообще сейчас в ходу авторизация через соц . сети есть даже сайты где обычной реги просто нет.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты: Сайт | skype:septdir | Telegram | VK | Facebook | Twiter | Все контакты

*

Оффлайн Fill_

IP у многих статика, но после блокировки ру тренера даже домохозяйки её обходят. Да и делается это в 1 клик. Это раз. Два люди выходят в сеть с разных мест даже если предположить что везде IP статический то все равно их может быть несколько. Что уж говлрить про кафе. Поэтому такая проверка не только бессысленна но и нанесет вред.  Ибо скажем из кафе на вашем сайте можно не зарегистрироваться. Что же реализации. Читайте про плагины для юзеров.
P.S. да и вообще сейчас в ходу авторизация через соц . сети есть даже сайты где обычной реги просто нет.

Повторюсь еще раз - специфика проекта. Пускай хоть 100 раз зарегистрируется, но с разных IP-адресов. Пускай заходит хоть откуда, но регистрируется с разных IP.
Читайте про плагины для юзеров. - ссылочку?

*

Оффлайн Septdir

  • *******
  • 2086
  • [+]106 / [-]0
  • JoomlaZen
    • Просмотр профиля
    • Игорь «Septdir» Бердичевский
По гуглить совсем не? Потратил 15 секунд https://docs.joomla.org/Plugin/Events/User
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты: Сайт | skype:septdir | Telegram | VK | Facebook | Twiter | Все контакты