dedlfix: Neuer Artikel: Kontextwechsel erkennen und behandeln

Beitrag lesen

Hi!

beide Vorgehen haben auf 32-Bit-Systemen das Problem eines zu geringen Wertebereichs.

Haben? Können haben, müssen aber nicht. Außerdem kommt es auch noch auf den Feldtyp im DBMS an. Wer INT verwendet hat dieses Problem nicht. Wer BIGINT (oder allgemein: Zahlen jenseits der 32 Bit) verwendet, muss sowieso erhöhte Aufmerksamkeit walten lassen, nicht nur an dieser Stelle.

Daher würde ich an dieser Stelle
$sql = sprintf("SELECT feldliste FROM tabelle WHERE feld='%s'", mysql_real_escape_string($zahl));
favorisieren.

Ja, wenn es notwendig ist, aber pauschal findet das nicht meine Unterstützung. (Meine Devise: Nachdenken vor Nachmachen. - "Das hab ich schon immer so gemacht" ist nicht immer der beste Ratgeber.)

noch was: durch die Umwandlung nach Integer handelt man sich möglicherweise Probleme bei Fehleingaben ein. Steht in $zahl z.B. "1foo", wird das durch intval() nach 1 umgewandelt, wodurch alle Datensätze, wo feld 1 entspricht, zurückgegeben werden, was für den gemeinen Nutzer nicht unbedingt nachvollziehbar ist. Eine zusätzliche Prüfung wäre hier nötig.

Das hat nicht direkt was mit dem Kontext zu tun, sondern ist Aufgabe einer fachlichen Prüfung. Ebenso wie Berechtigungsprüfungen sind Wertebereichsprüfungen gemäß fachlicher Anforderungen notwendig, die im Vorfeld erledigt werden müssen/sollten. Die kontextgerechte Behandlung ist dann noch der letzte notwendige Schritt, bevor die Daten auf Reisen gehen. Wenn jemand die fachliche Prüfung mit der Behandlung für den Kontextwechsel verbindet und das im Einzelfall "rechtfertigen" kann - bitte schön. Eine pauschale Empfehlung will ich nicht geben, weil die fachlichen Anforderungen unterschiedlich sein können und werden.

Lo!