Tom: Verhalten von PHP-Funktionen abhängig vom Compiler?

Beitrag lesen

Hello,

Naja, der Text sagt es doch schon: Wenn ein Überlauf auftritt, dann reagiert PHP anders. Die Frage ist halt: Wann tritt ein Überlauf auf?

[Viel Code]
Wenn mich nicht alles täuscht, ist das ein MD-5 crypt-Algorythmus

Naja, das sieht nicht nach MD5 aus, aber es ist definitiv eine Form von Hash-Algorithmus.

Übrigens: Du hast vergessen, die CRYPT_MAGIC-Konstante zu posten, so ist der Code relativ nutzlos.

Das war eigentlich Absicht. Man kann ja irgendeine nehmen, um den angeblichen Verhaltensunterschied nachzuvollziehen, sofern man eine PHP-Versionen hat, die wahlweise mit unterschiedlichen Compilerversionen compiliert wurde. Oder sehe ich das falsch?

Zudem: Ohne Dir zu nahe tretenzu wollen, die Funktion ist doch irgendwie Käse, oder?

Tust Du nicht. Die Funktion ist nicht von mir. Aber sowas ging mir vorhin auch durch den Kopf...
Leider kann ich im Moment nix ausprobieren.

Wenn $url ein String ist (was der Name der Funktion nahe legt), dann wird $url[2] bei 'http://www.heise.de/' (als Beispiel) zum Zeichen 't' ausgewertet, was dann - wenn's in einen Integer verwandelt wird - 0 ergibt. Und sizeof() ist bei Strings auch nicht extrem nützlich. Und einer Funktion, die crypt_url() heißt einen Hash von Bytewerten zu übergeben ist doch auch seltsam...?

Da hat wahrscheinlich einer Pascal und PHP gemischt. *tztz*
Aber da war sizeof(), soweit ich mich erinnere, für Dateigrößen.
Laut PHP-Manual müsste immer 1 rauskommen bei Strings.

Server 1 PHP 4.3.3 läuft nicht
Server 2 PHP 4.4.0 läuft wunschgemäß

Urgs. Das ist nicht Dein Ernst? PHP 4.4.0? 4.3.3? Sicherheit, anyone? Aktuellste PHP-Version der 4er-Reihe ist 4.4.7. Alle Versionen davor ist Selbstmord und selbst 4.4.7 ist sicherheitstechnisch bedenklich (zumindest ohne zusätzliche Patches, weil die PHP-Leute z.B. Reference Counting Overflows partout nicht fixen wollen, die meisten Distros bieten selbstgepatchte Versionen an, vgl. http://news.php.net/php.internals/29582).

Hab ich nicht wirklich Einfluss drauf...

Und naja, ansonsten: Was heißt "läuft nicht" vs. "läuft wunschgemäß"?

Das bedeutet, dass der Client die Funktion auf seine übermittelten Daten anwendet und der Server das auch tut und dadurch feststellen können soll, ob der Client berechtigt ist. Darum kann der Client auch nicht einfach die Funktion austauschen. Dann würde es nicht mehr zusammenpassen.

Aber das mit 0 + 0 + 0 + 0 ist schon lustig.

Wofür willst Du den Kram überhaupt einsetzen? Warum sind Dir die vorgefertigen Hashfunktionen, die PHP bietet (md5, sha1, crc32, ...) nicht ausreichend?

Diese Funktionen sind Bestandteil eines Partnervertrages und kommen von diesem Partner (Server).
Ich habe sie vom Client mit der Bitte, nach dem Fehler zu suchen, bekommen.

Diese Frage stammte von mir:

Wie kann man feststellen, mit welcher GCC-Vewrison PHP compiliert wurde?

Noch gar nicht. Aktuell wird auf der Mailingliste diskutiert, dass diese Information in Zukunft gespeichert wird: http://news.php.net/php.internals/33168 Kommt also frühestens 5.2.6.

Harzliche Grüße vom Berg
http://bergpost.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
Ein Jammer ist auch, dass die Dummen so selbstsicher und die Klugen voller Zweifel sind. Das sollte uns häufiger zweifeln lassen :-)