PHP/MySQL - register_globals - Lösungen
1. Die Abschnitte
2. Was aber, wenn ...
... der genutzte Code nicht mehr funktioniert, weil er schon ein paar Jahre auf dem Buckel hat und auf einem neuen System laufen soll? Nun, diese Frage zu beantworten ist nicht ganz so einfach. Es hängt dabei meines Erachtens von den Umständen ab. Daher werde ich bei den folgenden Möglichkeiten euch meine persönliche Meinung zu diesem Thema kundtun.
3. $HTTP_IRGENDWAS_VARS
Solltet eure Script die alte Form der "Superglobalen" nutzen, so besorgt einen vernünftigen Editor und ersetzt die entsprechenden
tsWebEditor zum Beispiel macht das ganz hervorragend, sogar rekursiv über
Stellen ganz einfach mit der neuen $_IRGENDWAS
-Schreibweise. Der
unterschiedliche Verzeichnistiefen hinweg. Das ist ein ganz einfaches "Suchen & Ersetzen" und bei sauberem Code nur eine Frage von
wenigen Sekunden.
4. Alter Müllcode ...
... der auf der PHP3-Schreibweise basiert, sollte normalerweise entsorgt werden, weil die Risiken einfach zu groß sind. Dabei gibt es mehrere Alternativen, die von der Komplexität, Größe und Art der Anwendung abhängen.
OpenSource-Anwendungen
... werden in vielen Fällen weiter entwickelt. Daher sollte man in dem Fall nach entsprechenden Updates Ausschau halten. Gibt es trotzdem keine neuen Versionen, so empfiehlt es sich, ein wenig zu recherchieren. In vielen Fällen existieren alternative Lösungen, die auch auf dem neuesten Stand sind.
Alte Codeschnipsel
Umprogrammieren oder wegschmeißen und nach Neuem suchen! Bitte, bitte! Macht auf gar keinen Fall den Fehler, euch irgendeinen Schrott Marke "Opa erzählt vom Krieg" zu besorgen, und dann die Moderatoren in den einschlägigen Foren damit zu nerven. Besorgt euch was Neues oder macht es selber.
Refaktorisierung
Dies heißt schlicht und ergreifend "Umprogrammieren". Allerdings muss der Aufwand in einer vernünftigen Relation zum Ergebnis stehen. Wenn ihr zum Beispiel Anwendung XY in drei Tagen neu schreiben könnt, so ist es absolut hirnlos, den alten Code umzuprogrammieren, wenn das fünf Tage dauert. Und bei kommerziellen Anwendungen stellt sich auch immer die Frage:
"Wer bezahlt das überhaupt?" [Quelle: ein Programmierer/Controller/Geschäftsführer]
Monsteranwendungen
Manchmal hat man vor langer Zeit mal eine große Anwendung für einen Kunden programmiert. Die dann auch noch im Laufe der Zeit wild gewachsen ist. Bei solchen Monsterprojekten ist das letztendlich einfach eine Kostenfrage. Wie lange dauert es, wie groß ist der Nutzen für den Kunden und ist er bereit, dafür zu zahlen.
5. Für die Bildungsresistenten
Wer aber aus was für Gründen auch immer davor zurückschreckt, seinen Code entsprechend umzuschreiben, und sei es nur Faulheit oder Bequemlichkeit, für den gibt es eine einfache, aber hochgradig gefährliche Alternative.
Datei bla.php
<?php
echo '<a href="blubber.php?id=dumdidum&subid=tralala">bla</a>';
?>
Datei blubber.php
<?php
foreach($_GET as $key => $value)
{
${$key} = $value;
}
echo $id.'---'.$subid;
// Ergebnis = dumdidum---tralala
?>
Das funktioniert sowohl bei GET
-, POST
- als auch auch SESSION
-Werten. Wer sich fragt, was
das ${...}
, dem sei gesagt, dass es sich hierbei um so genannte variable
Variablen handelt.
Warnung!!!
Eigentlich gehöre ich für diesen Tipp erschlagen! Meine eindringliche Bitte an euch, macht das wirklich nur im Notfall! Und beschwert euch nicht später bei mir, wenn sich jemand diese riesigen Sicherheitslöcher ausnutzt und eure Scripte für irgendeinen Blödsinn missbraucht.