Forum Webscript.Ru
Программирование => Perl => Тема начата: от 16 Декабря 2001, 09:50:00
-
Здравствуйте , У меня такой вопоросик:
Я работаю в локальной сети где у всех постоянные IP ...
нужен скрипт который открывал IP.txt
такого вида:
193.34.3.3
193.34.3.1
....
и если в этом файле указан ip посетителя то пускал на страницу а если
нет то отправлял на другую.
не моглибы вы мне помочь написав как сделать пороверку IP?
-
#!/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;
}
-
Мне так кажется (могу и ошибаться), что строчкой
my $ip=; мы получаем немного не то. Если строчки будут разделены \\n, то переменная ip будет равна значению первой строки файла.
Посему предлагаю
my $ip=; заменить на
my $ip=join("",);
и $ip=~/$ENV{\'REMOTE_ADDR\'}/ заменить на
$ip=~/$ENV{\'REMOTE_ADDR\'}/g
-
нет, вы не правы.
Мне так кажется (могу и ошибаться), что строчкой
my $ip=; мы получаем немного не то. Если строчки будут разделены \\n, то переменная ip будет равна значению первой строки файла.
;)
обратите внимание на:
undef $/;
это строковый ограничитель. По умолчанию он \\n
и если бы я его не поставил в undef, то вы были бы правы, но я то поставил и файл считывается за раз.
$ip=~/$ENV{\'REMOTE_ADDR\'}/g
зачем? Нам же хватит одного единственного совпадения. Нерационально.
-
Второе вытекает из первого :)
Ограничитель не увидел.
-
Привет
А можно ли сделать из выше указоного скрипта переадресацию с ип на ту страничку которая у него в файле записана?
Файл типа такого формата:
192.168.1.2 http://localhost/user1
192.168.1.3 http://localhost/user2
192.168.1.4 http://localhost/user3
С уважением.
-
Demius, можно
-
:
Здравствуйте , У меня такой вопоросик:
Я работаю в локальной сети где у всех постоянные 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 (\'Подождите ...\');
}
}
Но вот в последнем я могу ошибаться