Forum Webscript.Ru

Программирование => PHP => Тема начата: Enemy от 08 Ноября 2001, 18:13:55

Название: проверка IP
Отправлено: Enemy от 08 Ноября 2001, 18:13:55
Меня достал один тип который постоянно оставляет свои маты в моей гостевой :(...

Как можно проверить какой IP, и запретить доступ к странице, или переслать на другую?
Название: проверка IP
Отправлено: Britva от 08 Ноября 2001, 18:33:05
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
Отправлено: Макс от 08 Ноября 2001, 20:07:55
Britva А что это за HTTP_CLIENT_IP? Первый раз слышу.
Название: проверка IP
Отправлено: Britva от 08 Ноября 2001, 21:51:24
Макс
Это я из xmb взял, и тоже до этого не слышал :)
если пишут, значит есть :)
Название: проверка IP
Отправлено: Enemy от 09 Ноября 2001, 17:16:04
Цитировать
ну и проверяй потом, соответствует, или нет


Спасибо,
пробовал, работает. Теперь, я еще и записываю в файл IP
всех кто в гостевой, так что уже не должно быть проблем :).
Название: проверка IP
Отправлено: DimovD от 10 Ноября 2001, 14:22:41
HTTP_CLIENT_IP - этой переменной сервер пытается определить адрес usera на прямую исключая пркси...
Название: проверка IP
Отправлено: Chpock от 16 Февраля 2002, 13:37:31
сорри что так поздно..... но вы в курсе что будет если "HTTP_CLIENT_IP" передать в качестве GET или POST перематров?
Название: проверка IP
Отправлено: Макс от 16 Февраля 2002, 15:09:03
Во-первых это зависит от порядка 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
Название: проверка IP
Отправлено: alesh от 13 Марта 2002, 14:25:50
Я на свое м сайте использую простую систему из двух файлов
1. Ban.php ( прикреплен к header.php  в самом начале, т.е. открывается В Е З Д Е первым.

$ban=getenv("REMOTE_ADDR");
if ($ban=="ip забаненного ") {
include "banau.php";/ если твой ip - забанен , то вставлаю файл с авторизацией.
}
?>

2. banau.php  самая обыкновенная авторизация. Так что этот подлец которого Я забанил  ко мне не ходит.  

Еще можно было бы ему в куки записывать при входе на страничку которая выдаеться при трех неудачных попытках авторизоваться setcookie ("banned", "yes"); ?>
Название: проверка IP
Отправлено: AlieN от 13 Марта 2002, 14:29:06
alesh вроде бы всё хорошо
но если человек поматюгался у него порвалась связь и он заново зашел ему назначился другой ИП и всё заново а потом хороший человек подключился и ему присвоили ИП подлеца что делать?
Тут ещё требуется протоколировать дату и баннить спамера на 2-24 не более :)
Название: проверка IP
Отправлено: AlieN от 13 Марта 2002, 14:30:53
А если он сидит за анонимной проскеё и суёт ей вшивые адреса то отключая всю проскю появляется возможность заблокироват большую корпоративную сеть
Может просто отключить мат в гостевой?
Название: проверка IP
Отправлено: alesh от 13 Марта 2002, 14:35:23
Ну тогда нада банить по ип И по кукам.
что-то типа

$ban=getenv("REMOTE_ADDR");
setcookie ("banned", "yes");
setcookie ("ip", "$ban"); ?>
if (@$HTTP_COOKIE_VARS["banned"] == \'\' ) { // смотри на здоровье!
...
}
else {
include "banau.php";
}
?>


Ну и добавить сюда еще и второй цикл для кука $ip

И тогда будет двойная проверка.
А по другому  никак. Ну можно еще надеятся, что все недоброжелатели сидят на выделенках с прямыми айпишниками :)
Название: проверка IP
Отправлено: alesh от 13 Марта 2002, 14:39:50
А, ну и еще прикрепить сюда проверку по ip! если у него он постоянный все таки :)

И того в итоге получиться......



$ban=getenv("REMOTE_ADDR");
if ($ban=="127.0.0.1" & $HTTP_COOKIE_VARS["banned"] =="yes" $) {
include "banau.php";
setcookie ("banned", "yes");
setcookie ("ip", "$ban");
}
?>
Название: проверка IP
Отправлено: alesh от 13 Марта 2002, 14:43:52
Цитировать

Может просто отключить мат в гостевой?


это не возможно практически, только теоретически. Потому , что  Велика и СильНа Наша РУсска Языка. Можно извратиться так , что никакой цензор не поможет :(

Но если он такой
Цитировать

 сидит за анонимной проскеё и суёт ей вшивые адреса то отключая всю проскю появляется возможность заблокироват большую корпоративную сеть

И это действительно так, то
1. Надо просто стереть его сообщение в гостевой
2. Забанить его и написать по всем вопросам обращайтесь banned@host.ru
и Сидеть себе спокойно :) Кому надо напишет :)
Название: проверка IP
Отправлено: AlieN от 13 Марта 2002, 14:55:39
alesh

Цитировать
Цитата:

Может просто отключить мат в гостевой?


Модератором
Название: проверка IP
Отправлено: alesh от 13 Марта 2002, 15:57:24
Ну, мы же говорили о "программных" возможностях :))
Название: проверка IP
Отправлено: Britva от 13 Марта 2002, 18:26:14
http://detail.phpclub.net/technique/01-08-10/
Название: проверка IP
Отправлено: 4e6yPaToP от 24 Мая 2006, 12:04:10
а подскажите плиз как сделать так: есть страничка php.
когда посетитель на неё заходит, если ip человека мне неизвестно (нет в каком-то файле-списке соответствий IP-ник) чел перенаправляется на страничку приветствия, где он должен ввести свое имя. а если он уже есть в списке соответствий, его нормально пускает без всяких приветствий. т.е просто сделать чтоб я знал кто из сети под каким IP сидит
Название: проверка IP
Отправлено: ferryman от 24 Мая 2006, 14:29:25
Условный переход if() else ....
Название: проверка IP
Отправлено: CGVictor от 24 Мая 2006, 21:32:29
4e6yPaToP ferryman
Зачем при этом продолжать тему 2001 года?
Тема закрыта, хотите - создавайте новую.