Jeder Programmierer hat mal klein angefangen und dabei Code produziert, für den er sich im Nachhinein schämt, und von dem er hofft, dass er nie an die Öffentlichkeit gerät.
Der PHP Hacker ist aus der Versenkung zurückgekehrt und hat alle Entwickler dazu aufgerufen ihren schlimmsten Code Schnipsel am Developers Shame Day zu veröffentlichen. Neueinsteiger sollen sehen, dass auch die Profis von heute mal klein angefangen haben und es keine Schande ist, wenn der Code am Ende doch nur Murks ist.
Ich habe mich also daran gemacht und meine Archive der letzten 10 Jahre durchforstet um das richtige zu finden. Und nach langem Suchen habe ich nun endlich den passenden Code Schnipsel gefunden, bei dem ich alles falsch gemacht habe, was man nur falsch machen kann. Er ist aus dem Jahr 2001 und gehört zu einem meiner ersten PHP Projekte.
function shoutbox ($messages,$info,$id,$ip_test) {
global $template, $ip, $PHP_SELF, $werbeart_1,$werbeart_2, $appurl, $appname, $admin_email, $admin_name;
while (list($key,$value) = each($info)) {
$$key = $value;
}
if (!$css)
$css_file = "no_css.css";
else
$css_file = $id . ".css";
$i = 1;
for ($z=0; $z<count($messages); $z++) {
$thx = $messages[$z];
$thx[name] = replace($thx[name]);
$thx[url] = replace($thx[url],1);
$datum = get_time($thx[datum],1,1);
if ($thx[url]) {
$uname = "<b title="Geschrieben: $datum"><a href="$thx[url]" target="_blank">" . $thx[name] . ":</a></b>";
} else {
$uname = "<b title="Geschrieben: $datum">" . $thx[name] . ":</b>";
}
$thx[chat] = replace($thx[chat]);
$time = time() - $deletetime;
if ($thx['datum'] > $time && $thx[ip] == $ip && $ip_test) {
$thx[chat] = $thx[chat] . "<br><a href="" . $PHP_SELF . "?id=$id&action=$action&mode=delete&mid=" . $thx[id] . "">Nachricht löschen</a>";
}
if ($smilies) {
$thx[chat] = smile($thx[chat],$smilietheme,$smiliecolor);
}
$color = $info[('table_' . $i)];
@eval ("$entry .= "".$template->get("shoutbox_entry")."";");
if ($i == 1) $i++; else $i--;
}
if ($newpost)
$scroll = 999999;
else
$scroll = 0;
if ($werbeart_1 && $werbung) {
$werbung_1 = @implode("",@file("./temp/banner_1.htm"));
}
if ($werbeart_2 && $werbung) {
$werbung_2 = @implode("",@file("./temp/banner_2.htm"));
}
if ($hp)
@eval ("$hp_feld = "".$template->get("shoutbox_hp")."";");
if ($rbutton)
@eval ("$reset = "".$template->get("shoutbox_reset")."";");
if ($old && !$help)
@eval ("$links = "".$template->get("shoutbox_links_1")."";");
if (!$old && $help)
@eval ("$links = "".$template->get("shoutbox_links_2")."";");
if ($old && $help)
@eval ("$links = "".$template->get("shoutbox_links_3")."";");
if ($reload)
@eval ("$reload = "".$template->get("shoutbox_reload")."";");
else
unset($reload);
@eval ("$inhalt = "".$template->get("shoutbox_view")."";");
return $inhalt;
}
Auch wenn die Fehler eigentlich offensichtlich sind, will ich sie dennoch einmal auflisten, allein der Vollständigkeit wegen.
while
!)count
im Schleifenkopfeval
is evilMit dem Code Schnipsel dürfte ich wahrscheinlich an der Spitze aller Negativbeispiele liegen, aber jeder fängt mal klein an und wird mit der Zeit immer besser. Damals habe ich noch für mich persönlich programmiert, heute mache ich es beruflich. So kann sich die Zeit ändern.
Das Bild wurde der Seite sxc.hu entnommen und stammt vom Benutzer ”dreamer07”