Ограничить доступ к функционалу для пользователя по IP-адресу

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

Позвольте мне более подробно остановиться на том, что нашему "анонимному/гостевому" пользователю разрешено искать записи в базе данных только 3 раза в сутки. Есть ли способ, которым я могу использовать IP-адрес для отслеживания попыток пользователей, ограничивая их после 3 попыток, а затем истечение срока действия через 24 часа?

Веб-сайт построен на PHP, но какой бы язык ни поддерживал эту функциональность, я открыт для этого.

ИЗМЕНИТЬ:

Эта идея исходит от клиента, у него есть список «продавцов», хранящих их продукцию, и они хотят сделать эту информацию доступной для пользователей веб-сайта. Однако он не хочет, чтобы конкуренты воспользовались его системой и «подрезали» его запасы. Отсюда ограничение. Если вы можете предложить лучший способ добиться того же, это было бы потрясающе

Привет, Дэн


person Dan Hanly    schedule 28.02.2011    source источник
comment
Задумывались ли вы, что происходит, когда несколько человек за одним и тем же брандмауэром посещают ваш сайт в качестве гостей, например, несколько учащихся из одной школы? Такой подход, скорее всего, помешает большинству студентов выполнить поиск в базе данных даже один раз.   -  person kojiro    schedule 28.02.2011
comment
Пожалуйста, объясните, почему гостям разрешено искать только 3 раза в сутки. Я уверен, что члены SO могут дать вам гораздо более приятные решения, чем ограничение на основе IP-адреса.   -  person Sander Marechal    schedule 28.02.2011


Ответы (1)


Вы должны использовать глобальную переменную $_SERVER, например:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
  // restrict
}

Но вы должны учитывать примечание Кодзиро: не рекомендуется ограничивать IP-адресом.

Изменить: быть конструктивным.

Если вы хотите сделать это на низком уровне, вы можете использовать файлы cookie. Эти переменные хранятся в браузере пользователя, и если пользователь очистит файлы cookie локально, он сможет обойти ваше ограничение.
http://www.php.net/manual/en/function.setcookie.php

Лучшим решением является использование сеансов для этого фильтра:
http://php.net/manual/en/session.examples.basic.php

person Eduard7    schedule 28.02.2011