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"); } ну и проверяй потом, соответствует, или нет __________________ Евгений aka razor, http://eugeny.com пробовал, работает. Теперь, я еще и записываю в файл 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"); ?> _________________ http://www.alesh.ru 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"); } ?> сидит за анонимной проскеё и суёт ей вшивые адреса то отключая всю проскю появляется возможность заблокироват большую корпоративную сеть
|