if(getenv("http_client_ip")) { $ip = getenv("http_client_ip"); } elseif(getenv("http_x_forwarded_for")) { $ip = getenv("http_x_forwarded_for"); } else { $ip = getenv("remote_addr"); }
ну и проверяй потом, соответствует, или нет
пробовал, работает. Теперь, я еще и записываю в файл ip
всех кто в гостевой, так что уже не должно быть проблем .
http_client_ip - этой переменной сервер пытается определить адрес usera на прямую исключая пркси...
сорри что так поздно..... но вы в курсе что будет если "http_client_ip" передать в качестве get или post перематров?
Во-первых это зависит от порядка egpcs
Во-вторых в приведенном примере http_client_ip берется через getenv() то есть get и post на него не влияют.
И еще по поводу общей темы. У меня был случай когда код
if(getenv("http_client_ip")) { $ip = getenv("http_client_ip"); } elseif(getenv("http_x_forwarded_for")) { $ip = getenv("http_x_forwarded_for"); } else { $ip = getenv("remote_addr"); }
неработал. Проблема была в том что человек сидел за каким-то нестандартным прокси и
он определял http_x_forwarded_for как строку "undefine".
Поскольку это была именно строка if(getenv("http_x_forwarded_for")) возвращало true, ну а дальше все понятно.
Поэтому я еще делал проверку чтобы было соответствие формату ip ddd.ddd.ddd.ddd
Я на свое м сайте использую простую систему из двух файлов
1. ban.php ( прикреплен к header.php в самом начале, т.е. открывается В Е З Д Е первым.
< ?php $ban=getenv("remote_addr"); if ($ban=="ip забаненного ") { include "banau.php";/ если твой ip - забанен , то вставлаю файл с авторизацией. } ?>
2. banau.php самая обыкновенная авторизация. Так что этот подлец которого Я забанил ко мне не ходит.
Еще можно было бы ему в куки записывать при входе на страничку которая выдаеться при трех неудачных попытках авторизоваться < ?
setcookie ("banned", "yes"); ?>
alesh вроде бы всё хорошо
но если человек поматюгался у него порвалась связь и он заново зашел ему назначился другой ИП и всё заново
а потом хороший человек подключился и ему присвоили ИП подлеца что делать?
Тут ещё требуется протоколировать дату и баннить спамера на 2-24 не более
Ну тогда нада банить по ип И по кукам.
что-то типа
< ? $ban=getenv("remote_addr"); setcookie ("banned", "yes"); setcookie ("ip", "$ban"); ?> if (@$http_cookie_vars["banned"] == ' ) { // смотри на здоровье! ... } else { include "banau.php"; } ?>
Ну и добавить сюда еще и второй цикл для кука $ip
И тогда будет двойная проверка.
А по другому никак. Ну можно еще надеятся, что все недоброжелатели сидят на выделенках с прямыми айпишниками
А, ну и еще прикрепить сюда проверку по ip! если у него он постоянный все таки
И того в итоге получиться......
< ?php $ban=getenv("remote_addr"); if ($ban=="127.0.0.1" & $http_cookie_vars["banned"] =="yes" $) { include "banau.php"; setcookie ("banned", "yes"); setcookie ("ip", "$ban"); } ?>
сидит за анонимной проскеё и суёт ей вшивые адреса то отключая всю проскю появляется возможность заблокироват большую корпоративную сеть
Постоянные ссылки
При копировании ссылка на TeaM RSN обязательна!
Оставить комментарий
Вы должны войти, чтобы оставить комментарий.