Was heisst das?
Alain
- cgi
0 Bjoern0 MM0 Michael Schröpl0 Alain
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
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
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
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
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
($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
($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
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.
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