Alain: Was heisst das?

hallo,

Ich habe bezüglich einem cgi folgende frage,
was bedeutet eigentlich dieser code?

($count_last > $abusecount && length($username) > 3)

versteh diesen satz nicht?

würde das

($count_last > $abusecount )

nicht genügen?

gruss Alain

...guten appetit

  1. hallo,

    Ich habe bezüglich einem cgi folgende frage,
    was bedeutet eigentlich dieser code?

    ($count_last > $abusecount && length($username) > 3)

    es werden 2 überprüfungen gemacht
     1) $count_last > abusecount
     2) länge vom $username > 3

    '&&' heisst, beides muss wahr sein.

    grüssle
    bjoern

  2. Hallo.
    Nein das würde nicht genügen.

    In dieser Bediengung müssen nämlich 2 Bedingungen erfüllt sein.

    1.) $count_last > $abusecount
       $count_last muss größer sein als $abusecount
       UND
    2.) length($username) > 3
       Die Länge von $username muss größer als 3 sein.

    Erst wenn diese beiden Bedingungen erfüllt sind, wird das ausgeführt, was danach kommt ...

    LG,
    MM

  3. Hi,

    ($count_last > $abusecount && length($username) > 3)

    wie sind eigentlich die Operator-Prioritäten in dieser Sprache definiert?

    Den angegebenen Ausdruck würde ich schon aus Lesbarkeitsgründen heftiger
    klammern wollen - wer weiß, ob nicht das "&&" am Ende die höchste Priorität
    hat ...

    würde das
    ($count_last > $abusecount )
    nicht genügen?

    Um was zu erreichen? Aufgabenstellung, bitte.

    Viele Grüße
          Michael

    1. Hi,

      hallo,
      Danke erstmal an Dich und die anderen für die antwort,

      ($count_last > $abusecount && length($username) > 3)

      wie sind eigentlich die Operator-Prioritäten in dieser Sprache definiert?

      Operator-Prioritäten?
      meinst du das?
      $abusecount =          6;
      $date       = date;
      $date_today = join( " ", (split(" ",$date)) [1,2] );
      ($ip_last,$count_last,$date_last) = split(/\*/,$logins{$username});
      if ($date_last ne $date_today)
      {
      $count_last=0;
      }

      $logins{$username} = ("ip_now*$count_last*$date_today");
          dbmclose(logins);
          flock(logins,8) if ($doflocks);

      Den angegebenen Ausdruck würde ich schon aus Lesbarkeitsgründen heftiger
      klammern wollen - wer weiß, ob nicht das "&&" am Ende die höchste Priorität
      hat ...

      wie einklammern?
      was sollte sonst dort stehen?

      würde das
      ($count_last > $abusecount )
      nicht genügen?

      Um was zu erreichen? Aufgabenstellung, bitte.

      gruss vom Alain

      Viele Grüße
            Michael

      1. ($count_last > $abusecount && length($username) > 3)

        wie sind eigentlich die Operator-Prioritäten in dieser Sprache definiert?
        Operator-Prioritäten?

        Aus der Grundschule auch bekannt als Punkt vor Strichrechung.

        4 + 3 * 2

        ist dementsprechend 10 (3*2=6; +4=10) und nicht 14 (4+3=7; *2=14), weil das Mal vor dem Plus gerechnet wird.

        Bei Deiner obigen Befehlszeile wäre die Frage genauso zu stellen, welcher der zwei/drei Operatoren soll zuerst ausgewertet werden? Die beiden Größer-als außen oder das Und in der Mitte. Auch hier ist das ein himmelweiter Unterschied.

        Den angegebenen Ausdruck würde ich schon aus Lesbarkeitsgründen heftiger
        klammern wollen - wer weiß, ob nicht das "&&" am Ende die höchste Priorität
        hat ...
        wie einklammern?

        (4+3)*2 ist etwas anderes als 4+(3*2). Mit Klammern ändert man die Prioritäten bei der Auswertung.

        würde das
        ($count_last > $abusecount )
        nicht genügen?

        Wenn Dich nicht interessiert, ob der Nutzername länger als drei Zeichen ist, ja.

        Gruß,
          soenk.e

        1. ($count_last > $abusecount && length($username) > 3)

          hallo soenk.e,

          Aus der Grundschule auch bekannt als Punkt vor Strichrechung.

          4 + 3 * 2

          ist dementsprechend 10 (3*2=6; +4=10) und nicht 14 (4+3=7; *2=14),

          weil das Mal vor dem Plus gerechnet wird.

          ok verstanden,aber wie sieht das im obigen beispiel aus
          in formel betrachtet? ---> ein beispiel?

          Bei Deiner obigen Befehlszeile wäre die Frage genauso zu stellen,

          welcher der zwei/drei Operatoren soll zuerst ausgewertet werden?
          Die beiden Größer-als außen oder das Und in der Mitte.

          grösser als aussen?
          entschuldige,aber ich versteh das nicht ganz .

          Auch hier ist das ein himmelweiter Unterschied.

          (4+3)*2 ist etwas anderes als 4+(3*2).

          Mit Klammern ändert man die Prioritäten bei der Auswertung.

          Wenn Dich nicht interessiert,

          ob der Nutzername länger als drei Zeichen ist, ja.

          Gruss Alain

          Gruß,
            soenk.e

          1. hi Alain,

            aber wie sieht das im obigen beispiel aus
            in formel betrachtet? ---> ein beispiel?

            möglich wäre so etwas:
            (($count_last > $abusecount) && (length($username) > 3))
            um es ganz deutlich zu machen

            grösser als aussen?
            entschuldige,aber ich versteh das nicht ganz .

            "größer als" bezieht sich auf den Operator ">", das ist das "größer-als-Zeichen". Und es steht "außen" in deinem Beispiel. Wenn man sich über die Prioritäten nicht ganz klar ist, also nicht genau weiß, ob erst "&&" oder erst ">" befolgt wird, sollte man eben Klammern setzen

            Grüße aus Berlin

            Christoph S.

            1. aber wie sieht das im obigen beispiel aus
              in formel betrachtet? ---> ein beispiel?
              möglich wäre so etwas:
              (($count_last > $abusecount) && (length($username) > 3))
              um es ganz deutlich zu machen

              Womit wir dann wieder bei Michaels Antwortfrage sind: Diese Reihenfolge ist abhängig von der verwendeten Sprache, die Du allerdings nicht angegeben hattest.
              Für PHP ist das zum Beispiel unter http://www.php.net/manual/de/language.operators.php#language.operators.precedence beschrieben, für Perl unter http://selfhtml.teamone.de/cgiperl/sprache/operatoren.htm#rangfolge (was ist eigentlich http://aktuell.de.selfhtml.org/archiv/doku/6.1/tecf.htm#a8 für eine Leiche?), Javascript http://selfhtml.teamone.de/javascript/sprache/operatoren.htm#rangfolge.

              Gruß,
                soenk.e