Whouzuo: 001 = 1 und password_hash

Beitrag lesen

Hello,

Wenn du die Chance hast, verwende eine vernünftige Sprache, bei der nicht solche komischen Typkonvertierungen durchführt. Bei Zeichenketten würde man erwarten, dass der Ausdruck ("01" == "1") FALSE ergibt und nicht TRUE.

Wenn Du den typsicheren Vergleich nimmst, der dann hier angemessen wäre, stimmt das auch.

wieso? das sind beides strings, also warum sollte php hier eigentlich konvertieren? gibt es irgendeine andere sprache, die strings bei einem vergleich implizit zu ints konvertiert?

"01" === "1" -> false,

PHP ist als "Spezialsprache" für die Arbeit im Internet (hauptsächlich HTTP/s) entstanden. Da per HTTP alle Parameter als Zeichenketten ("Strings") übertragen werden, muss ständig interpretiert werden.

ja, aber vom Entwickler, nicht von der Sprache. sonst passiert nämlich genau das, was hier passiert ist: die Sprache tut etwas, das für den Entwickler nicht intuitiv ist. nach heutigen Maßstäben ist das nicht mehr akzeptabel, darum sollte man auf andere Sprachen setzen, wenn man kann.

Man muss auf Empfängerseite (Server) _wissen_