Альтернативный общий план, который я добавляю только как независимый ответ, потому что взорванный «комментарий к ответу» не будет принимать новые строки без публикации всего редактирования, хотя он еще не закончен.
UPDATE table A
JOIN table B ON {join fields}
JOIN table C ON {join fields}
JOIN {as many tables as you need}
SET A.column = {expression}
Пример:
UPDATE person P
JOIN address A ON P.home_address_id = A.id
JOIN city C ON A.city_id = C.id
SET P.home_zip = C.zipcode;
Вы находитесь на *, отклоняют машину? этот вид вещи, вероятно, лучше оставляют уровню ОС, с помощью чего-то как iptables
править:
в ответ на комментарий, да (вид). однако, идея состоит в том, что iptables может работать независимо. можно установить определенный порог для регулировки (например, запросы блока на порте 80 TCP, которые превышают x запросы/минута), и это все обрабатывается прозрачно (т.е., приложение действительно не должно знать, что что-либо об этом, чтобы иметь динамическое блокирование происходит).
я предложил бы iptables метод, если бы Вы имеете полный контроль над полем и предпочли бы позволять своему брандмауэру обработать регулировку (преимущества, Вы не должны встраивать эту логику в свое веб-приложение, и это может сохранить ресурсы, поскольку запросы отбрасываются, прежде чем они поразят Ваш веб-сервер),
иначе, если Вы будете ожидать блокироваться, то не будет огромный компонент, (или Ваше приложение является портативным и не может гарантировать доступ к iptables), затем имело бы больше смысла встраивать ту логику в Ваше приложение.
Смотрите на fail2ban. Платформа Python, которая позволяет Вам повышать блоки таблиц IP от конца файлов журнала для шаблонов ошибочного поведения.
Я думаю, что это должна быть комбинация имени пользователя плюс блок IP. Не просто IP.
Вы смотрите на пользовательский код локаута. Существуют приложения в мире с открытым исходным кодом, которые содержат различные разновидности такого кода. Возможно, необходимо посмотреть на некоторых из тех, хотя требования довольно тривиальны, так отметьте комбинацию IP/имени пользователя и используйте это для блокирования IP для x количества времени. (Обратите внимание, что я сказал что блок IP, не пользователь. Пользователь может попытаться стать онлайн через допустимую IP/username/pw комбинацию.)
Реальная действительность, Вы могли даже сохранить трассировки пользовательских логинов, и при входе в систему от неизвестного IP с 3 забастовок плохая username/pw комбинация, заблокировать тот IP для однако долго, Вам нравится за то имя пользователя. (Действительно обратите внимание, что много ISPs совместно использует дюйм/с, таким образом....),
Вы могли бы также хотеть поместить задержку аутентификации, так, чтобы IP не мог делать попытку входа в систему несколько раз каждый 'y' секунды или около этого.
Я разработал систему для клиента, который отслеживал, ударяется о веб-сервер и динамично запрещенные IP-адреса в операционной системе / уровень брандмауэра в течение переменных промежутков времени для определенных преступлений, таким образом, да, это определенно возможно. Как Owen сказал, правила брандмауэра являются намного лучшим местом, чтобы сделать этот вид вещи, чем в веб-сервере. (К сожалению, клиент принял решение обладать трудным авторским правом на этом коде, таким образом, я не имею право совместно использовать его.)
Я обычно работаю в Perl, а не PHP, но, пока у Вас есть интерфейс командной строки к Вашему механизму правил брандмауэра (как, скажем,/sbin/iptables), необходимо смочь сделать это довольно легко с любого языка, который имеет способность выполнить системные команды.
допустите ошибку этот вид системы легок и распространен, я могу дать Вам мой достаточно легко
его просто и кратко объяснил здесь http://www.alandoherty.net/info/webservers/
сценарии, как записано arn't загружаемый {как никакой commentry, в настоящее время добавляемый}, но, отбрасывают меня электронное письмо от сайта выше, и я брошу код в Вас и с удовольствием помогу с debugging/taloring ему к Вашему серверу