PDA

Tam Sürümünü Görmek İçin : Perl IP ban


Sahin
28/09/2002, 15:53
Bir cgi dosyasına aşağıdaki gibi bir kod ekleyip bir ya da daha çok IP'ye ban koymak istiyorum ama kodu galiba içinden çıkılmaz derecede karıştırdım. Yavuz yetiş kardeş :p



#Ban Protect (Sahin 1/1)
$banned = 1;
$ip = 61.62.145.32 ;
$ip = $ENV{'REMOTE_ADDR'};
if (-e "$GB_NON_CGI_Path/entries.dat") {
open (BANPROTECT, "$GB_NON_CGI_Path/entries.dat") || die ("Couldn't open guestbook entries file.");
}
@banprotect = <BANPROTECT>;
close (BANPROTECT);
foreach $line (@banprotect) {
@entryline = split(/\|\|/, $line);
# $entryline[7] is the field in entries.dat that contains the saved ip-address
chomp $entryline[7]; # (Bugfix)
if ($entryline[7] eq $ip) {
if ($entryline[0] eq $ip) {
&StandardHTML("<center>Hata! Mesajiniz yollanamiyor!<br>Siteden banlanmışsınız!</center>");
exit;
}
}

# Ban sonu (Sahin 1/1)


Düzgün
17/10/2002, 22:04
evet geldim.
bundan farklı bi kod yazalım

#!/usr/bin/perl -w

open(FILE,"ipban.txt");
@skip = <FILE>;
close(FILE);

$check=0;
if (@skip) {
foreach $ips (@skip) {
chomp($ips);
if($ENV{'REMOTE_ADDR'} =~ /$ips/) {
$check = 1;
last;
}
}
}
if ($check == 0) {
#ip ban listesinde değil işlemler yapılsın. :)
}


kullanımı daha basit.
iyi çalışmalar..

Asil
17/10/2002, 22:08
Ama kardeş $ip = $ENV{'REMOTE_ADDR'}; ve if ($entryline[7] eq $ip) olması gerkiyor.

Asil
17/10/2002, 22:19
pardon direk ip i biliyorsak $entryline[7] olmasada olur sanırım dimi?

Düzgün
17/10/2002, 23:25
tamamdır.

Sahin
18/10/2002, 00:28
Teşekkürler hocam :super: