Alain: was ist daran verkehrt?

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

--
..."Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)
  1. 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

    1. 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

      --
      SELFforum - Das Tor zur Welt!
      Theoretiker: Wie kommt das Kupfer in die Leitung?
      Praktiker: Wie kommt der Strom in die Leitung?
      1. 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

        1. 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

          --
          SELFforum - Das Tor zur Welt!
          Theoretiker: Wie kommt das Kupfer in die Leitung?
          Praktiker: Wie kommt der Strom in die Leitung?
          1. Hallo Rolf,

            Du bist der Torsten aus Thüringen? Wenn ich mich recht erinnere...

            Ja, deine Erinnerung trügt dich nicht :-)

            Grüße
            Torsten

  2. 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

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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

      --
      ..."Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)
      1. 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

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. 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.

          --
          ..."Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)
    2. 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

      --
      ..."Zwei Dinge sind unendlich, das Universum und die menschliche Dummheit, aber bei dem Universum bin ich mir noch nicht ganz sicher." (Albert Einstein)
  3. 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

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
    http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/