Hauptmenü

Untermenü

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.

zurück zum vorherigen Abschnitt