Forum Webscript.Ru

Программирование => Perl => Тема начата: от 16 Декабря 2001, 09:50:00

Название: пороверка IP
Отправлено: от 16 Декабря 2001, 09:50:00
Здравствуйте , У меня такой вопоросик:
Я работаю в локальной сети где у всех постоянные IP ...
нужен скрипт который открывал IP.txt
такого вида:
193.34.3.3
193.34.3.1
....
и если в этом файле указан ip посетителя то пускал на страницу а если
нет то отправлял на другую.
не моглибы вы мне помочь написав как сделать пороверку IP?
Название: так?
Отправлено: Green Kakadu от 16 Декабря 2001, 10:18:40
#!/usr/bin/perl -w

my $bad_user=\'http://bad_user_page\';
my $ok_user=\'http://ok_user_page\';
undef $/;
open(IPLIST, "my $ip=;
close IPLIST;
unless($ENV{\'REMOTE_ADDR\'}){&go_to($bad_user);}
if ($ip=~/$ENV{\'REMOTE_ADDR\'}/){&go_to($ok_user);}
&go_to($bad_user);


sub go_to {
   print "Location: $_[0]\\n\\n";
   exit;
}
Название: пороверка IP
Отправлено: Боря Елкин от 16 Декабря 2001, 11:24:36
Мне так кажется (могу и ошибаться), что строчкой
my $ip=; мы получаем немного не то. Если строчки будут разделены \\n, то переменная ip будет равна значению первой строки файла.

Посему предлагаю
my $ip=; заменить на
my $ip=join("",);

и  $ip=~/$ENV{\'REMOTE_ADDR\'}/ заменить на
$ip=~/$ENV{\'REMOTE_ADDR\'}/g
Название: нет
Отправлено: Green Kakadu от 16 Декабря 2001, 16:12:39
нет, вы не правы.
Цитировать
Мне так кажется (могу и ошибаться), что строчкой
my $ip=; мы получаем немного не то. Если строчки будут разделены \\n, то переменная ip будет равна значению первой строки файла.

;)
обратите внимание на:
Цитировать
undef $/;

это строковый ограничитель. По умолчанию он \\n
и если бы я его не поставил в undef, то вы были бы правы, но я то поставил и файл считывается за раз.

Цитировать
$ip=~/$ENV{\'REMOTE_ADDR\'}/g

зачем? Нам же хватит одного единственного совпадения. Нерационально.
Название: пороверка IP
Отправлено: Боря Елкин от 16 Декабря 2001, 16:23:32
Второе вытекает из первого :)
Ограничитель не увидел.
Название: пороверка IP
Отправлено: Demius от 26 Октября 2005, 17:54:53
Привет
А можно ли сделать из выше указоного скрипта переадресацию с ип на ту страничку которая у него в файле записана?
Файл типа такого формата:
192.168.1.2 http://localhost/user1
192.168.1.3 http://localhost/user2
192.168.1.4 http://localhost/user3
С уважением.
Название: пороверка IP
Отправлено: glebushka от 26 Октября 2005, 23:19:10
Demius, можно
Название: пороверка IP
Отправлено: Psixolog от 27 Октября 2005, 05:50:56
Цитировать
:
Здравствуйте , У меня такой вопоросик:
Я работаю в локальной сети где у всех постоянные IP ...
нужен скрипт который открывал IP.txt
такого вида:
193.34.3.3
193.34.3.1
....
и если в этом файле указан ip посетителя то пускал на страницу а если
нет то отправлял на другую.
не моглибы вы мне помочь написав как сделать пороверку IP?

Содержание ip.txt
192.168.0.1||
192.168.0.2||
192.168.0.3||

open(IP, "ip.txt");
@IP=;
close(IP);
for ($i=0; $i<=$#IP; $i++) {
@IPS = split(/\\|\\|/,@IP[$i]);
$ips = $ENV{REMOTE_ADDR};
if ($ips eq "$IPS[0]"){
print (\'Подождите ...\');
}
}


или
Содержание ip.txt
192.168.0.1||http://localhost/1.html||
192.168.0.2||http://localhost/2.html||
192.168.0.3||http://localhost/3.html||


open(IP, "ip.txt");
@IP=;
close(IP);
for ($i=0; $i<=$#IP; $i++) {
@IPS = split(/\\|\\|/,@IP[$i]);
$ips = $ENV{REMOTE_ADDR};
if ($ips eq "$IPS[0]"){
print (\'Подождите ...\');
}
}

Но вот в последнем я могу ошибаться