Ist ein einfaches "&" bei einer Abfrage ein Fehler?
Enrico
- php
0 JürgenB
0 Enrico
0 Sven Rautenberg
Hallo,
auf dieser Seite habe ich beim zweiten Tipp ("Check for suspicious activity and immediately...") im unteren schwarzen Kästchen folgende Abfrage gefunden:
If ($_SESSION['_USER_LOOSE_IP'] != long2ip (ip2long ($_SERVER['REMOTE_ADDR']) & ip2long ("255.255.0.0"))
Ist das einfache "&" hier ein Fehler?
Ich kenne das "&" bei Abfragen nur als "&&" in der Bedeutung von "und".
Gruß,
Enrico
Hallo Enrico,
Ist das einfache "&" hier ein Fehler?
keine Ahnung, ob da ein bitweises Und ein Fehler ist.
Gruß, Jürgen
Hallo Jürgen,
keine Ahnung, ob da ein bitweises Und ein Fehler ist.
Hm, ok, jetzt weiß ich zumindest, dass es auch ein bitweises "Und" gibt.
Nachdem in den Kommentaren aber nichts vermerkt ist, dass hier ein Fehler vorliegt, nehme ich an, dass das richtig ist.
Gruß,
Enrico
Moin!
auf dieser Seite habe ich beim zweiten Tipp ("Check for suspicious activity and immediately...") im unteren schwarzen Kästchen folgende Abfrage gefunden:
If ($_SESSION['_USER_LOOSE_IP'] != long2ip (ip2long ($_SERVER['REMOTE_ADDR']) & ip2long ("255.255.0.0"))
Ist das einfache "&" hier ein Fehler?
Nein. "ip2long()" erzeugt aus einer IP-Adresse die zugehörige Integerzahl, wenn man die dezimalen Zahlwerte als Bytes auffasst. Das zweite "ip2long()" erzeugt ein Bitmuster, welches UND-verknüpft mit der IP-Adresse des Users, die letzten beiden Zahlwerte der IP auf 0 setzt, also praktisch ausblendet.
Das Verfahren hat ein paar kleine Problemchen:
Erstens: Was ist mit IPv6? Wird nicht berücksichtigt, sollte es aber besser.
Zweitens: Ein sogenanntes /16-Netz ist einigermaßen riesig - ist es überhaupt sinnvoll, so eine Prüfung dann noch durchzuführen? Andererseits: Setzt man die Grenze enger, kriegt man eventuell korrekte Benutzer ausgeloggt, die nur regulär ihre IP gewechselt bekommen haben.
Insofern bleibt da bei mir ein wenig schaler Beigeschmack: Wer gibt denn heutzutage noch solche komischen Tipps und erklärt sie so schlecht?
- Sven Rautenberg