Museumscode entwanzen
Tom
- php
Hello,
und schon wieder habe ich einen PHP-Code, der mir wirklich Denksportaufgaben abverlangt. Nicht wtwa, weil er so kompliziert wäre, sondern weil dort Sachen funktionieren, die eigentlich so nicht OK sind.
Vielleicht hat ja noch jemand in Erinnerung, was alles warum geht...
Aufruf einer Seite durch:
index.php?cmd=newsletter
Auswertung in der index.php:
if ($cmd == newsletter)
{
...
}
Eine Konstante 'newsletter' ist nicht definiert.
PHP-Version ist 4.3.9
Register_Globals ist, wie man raten kann, eingeschaltet.
Wieso die Bedingung wahr werden kann, ist mir nicht einsichtig.
Ich war der Meinung, dass diese Lücke bereinigt wäre, oder?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Wieso die Bedingung wahr werden kann, ist mir nicht einsichtig.
Ich war der Meinung, dass diese Lücke bereinigt wäre, oder?
Falls Sie eine undefinierte Konstante verwenden, nimmt PHP an, dass Sie den Namen der Konstanten selber meinen. Wenn das passiert wird eine Notice ausgegeben. Benutzen Sie die Funktion defined() um herauszufinden, ob eine Konstante definiert ist.
http://www.php-center.de/de-html-manual/language.constants.html
dann wäre der teil der doku nicht mehr gültig. soll aber gültig bleiben, wegen abwärtskompatibilität.
Hello,
Falls Sie eine undefinierte Konstante verwenden, nimmt PHP an, dass Sie den Namen der Konstanten selber meinen. Wenn das passiert wird eine Notice ausgegeben. Benutzen Sie die Funktion defined() um herauszufinden, ob eine Konstante definiert ist.
Danke.
Man kann dieses Verhalten ja scheinbar auch nicht abschalten.
Kann man darin einen wirklichen Sinn finden?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
hi,
Man kann dieses Verhalten ja scheinbar auch nicht abschalten.
aber zumindest eine entsprechende E_NOTICE müsste dir doch ausgegeben werden? (sofern nicht unterdrückt)
das sollte es doch zumindest ermöglichen, die stellen, an denen dieses vorkommt, beim "debuggen" auffinden und bereinigen zu können.
gruß,
wahsaga
Hello,
Man kann dieses Verhalten ja scheinbar auch nicht abschalten.
aber zumindest eine entsprechende E_NOTICE müsste dir doch ausgegeben werden? (sofern nicht unterdrückt)
das sollte es doch zumindest ermöglichen, die stellen, an denen dieses vorkommt, beim "debuggen" auffinden und bereinigen zu können.
Das tue ich ja auch.
Ich baue am Anfang immer meinen "Debug-Code" ein, der mir dann auf zentrales Flag alle Meldungen einschaltet und die globalen Arrays ausgibt. Anders bist Du in solchen Projekten ohne Dokumentation, mit register_globals=on und JavaScript bis zum Abwinken zum Untergang verdammt.
Ich hätte eben nur gerne gewusst, ob es eine geschicktere Methode gibt. Die Fehler habe ich bisher immer noch alle gefunden, aber das dauert eben.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom