was ist daran verkehrt?
Alain
- perl
Hallo,
Ich wollte mal fragen,warum das zweite beispiel nicht funtzt,obwohl es eigentlich
genau dasselbe ist?
Es soll bewirken,dass das script nur von einer bestimmten IP ausgeführt werden darf.
erstes beispiel funktioniert tadellos:
erstes beispiel:
sub checkIP($$) {
my ($action, $username) = @_;
my $mega=$ENV{'REMOTE_ADDR'};
my @ip=split(/./,$mega);
if (not(($ip[0] eq '64') and ($ip[1] eq '38') and ($ip[2] eq '240') or ($ip[2] eq '241')))
{
report($BAD_IP);
logger("HACKER|$LOCALTIME|$username|$mega", $ERROR_LOG_FILE);
exit;
}
}
---------------------------
zweites Beispiel:
sub checkIP($$) {
my ($action, $username) = @_;
my $mega=$ENV{'REMOTE_ADDR'};
my @ip=split(/./,$mega);
if (($ip[0] ne '64') and ($ip[1] ne '38') and ($ip[2] ne '240') or ($ip[2] ne '241'))
{
report($BAD_IP);
logger("HACKER|$LOCALTIME|$username|$mega", $ERROR_LOG_FILE);
exit;
}
}
--------------------------
Gruss vom Alain
Hallo Alain,
Ich wollte mal fragen,warum das zweite beispiel nicht funtzt,obwohl es eigentlich
genau dasselbe ist?
sub checkIP($$) {
^^^^
Bist du sicher, dass das so richtig ist?
Grüße
Torsten
hi Torsten,
Ich wollte mal fragen,warum das zweite beispiel nicht funtzt,obwohl es eigentlich
genau dasselbe ist?
sub checkIP($$) {
^^^^
Bist du sicher, dass das so richtig ist?
Damit wird festgelegt, dass die sub _genau_ 2 Argumente kriegt.
Siehe auch
http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?dis.5.1.2
Viele Grüße, Rolf
Hallo Rolf,
sub checkIP($$) {
Bist du sicher, dass das so richtig ist?
Damit wird festgelegt, dass die sub _genau_ 2 Argumente kriegt.
Ah, wieder mal was gelernt.
Grüße
Torsten
hi Torsten,
sub checkIP($$) {
Bist du sicher, dass das so richtig ist?
Damit wird festgelegt, dass die sub _genau_ 2 Argumente kriegt.Ah, wieder mal was gelernt.
Diesen Satz sage ich auch täglich mindestens 3x , wenn nicht noch mehr ;-)
Du bist der Torsten aus Thüringen? Wenn ich mich recht erinnere...
Viele Grüße, Rolf
Hallo Rolf,
Du bist der Torsten aus Thüringen? Wenn ich mich recht erinnere...
Ja, deine Erinnerung trügt dich nicht :-)
Grüße
Torsten
Hi,
if (not(($ip[0] eq '64') and ($ip[1] eq '38') and ($ip[2] eq '240') or ($ip[2] eq '241')))
if (($ip[0] ne '64') and ($ip[1] ne '38') and ($ip[2] ne '240') or ($ip[2] ne '241'))
Boole'sche Algebra für Anfänger: !(a && b) === !a || !b
Cheatah
Hallo,
Boole'sche Algebra für Anfänger: !(a && b) === !a || !b
dann wärs so
if (($ip[0] ne '64') and ($ip[1] ne '38') and ($ip[2] ne '240') or (($ip[2] ne '241')))
besser?
Und zu @Torsten ,jau es soll so sein.Naja dieser code stammt nicht wircklich von mir
aber ich wollte ihn etwas einfacher schreiben als das mit if(not(...
Gruss vom Alain
Hi,
dann wärs so
if (($ip[0] ne '64') and ($ip[1] ne '38') and ($ip[2] ne '240') or (($ip[2] ne '241')))
besser?
ja, aber immer noch nicht richtig. Was für das eine UND gilt, gilt auch für die anderen. Überlege Dir auch, was Du bezwecken willst: Es reicht, wenn _eines_ der IP-Segmente falsch ist.
Cheatah
Hallo,
ja, aber immer noch nicht richtig.
aber jetzt if (($ip[0] ne '64') and ($ip[1] ne '38') and (($ip[2] ne '240') or ($ip[2] ne '241')))
Mahlzeit und
Gruss vom Alain
P.S.Habs zwar oben nochmal geschrieben.
Hallo nochmal,
sorry so
if (($ip[0] ne '64') and ($ip[1] ne '38') and (($ip[2] ne '240') or ($ip[2] ne '241')))
hab ich gemeint.Wärs so ok?
Gruss vom Alain
Hi,
if (not(($ip[0] eq '64') and ($ip[1] eq '38') and ($ip[2] eq '240') or ($ip[2] eq '241')))
if (($ip[0] ne '64') and ($ip[1] ne '38') and ($ip[2] ne '240') or ($ip[2] ne '241'))
Weil Du die DeMorgan-Gesetze mißachtet hast und daher eine vollkommen andere Bedingung geschrieben hast.
NOT(A AND B) == NOT(A) OR NOT(B)
NOT(A OR B) == NOT(A) AND NOT(B)
cu,
Andreas