Remy Porters CodeSOD-Beitrag für The Daily WTF vom 6. Oktober 2026 nimmt Code aus DJs erstem bezahlten Webprojekt unter die Lupe. DJ war damals 19 Jahre alt und arbeitete an kleineren Webaufträgen für einen niedrigen Stundenlohn. Die Funktion sollte Datenbankinhalte für einen Banner auf der rechten Seite auswählen. Seitdem hat DJ viel gelernt, die alte Funktion ist jedoch erhalten geblieben.
<?php
$int = array();
$query = $sql->query("SELECT * FROM rightside");
while($row = $sql->objects('',$query)) {
$int[$row->id] = $row->id;
if ($row->id > $max) { $max = $row->id; }
}
$x = false;
while ($x == false) {
$rand = rand(0,$max);
foreach ($int as $thing) {
if ($thing == $rand) { $x = true; }
}
}
$query = $sql->query("SELECT * FROM rightside WHERE id = ".$rand);Zuerst führt die Routine über `$sql->query` das Statement `SELECT * FROM rightside` aus und verarbeitet die Datensätze mit `$sql->objects('',$query)`. Für jede Zeile verwendet sie die `id` zugleich als Schlüssel und Wert eines lückenhaften Arrays. Außerdem speichert sie die größte ID in `$max`, obwohl die Abfrage mit `SELECT *` weitere Spalten liefert. Danach erzeugt `rand(0,$max)` eine Zahl. Eine `foreach`-Schleife sucht diese Zahl im Array und wiederholt den Vorgang, bis eine vorhandene ID getroffen wird. Die abschließende Abfrage `SELECT * FROM rightside WHERE id = ".$rand` entsteht durch Stringverkettung.
Porter hält die Lösung selbst nach den PHP-Maßstäben der frühen 2000er für schlecht. Einen Teil der Verantwortung sieht er bei dem Unternehmen, das einen unerfahrenen Entwickler für sehr wenig Geld engagiert hat. Der Fall erinnert außerdem daran, dass eigene Programme aus dem Alter von 19 Jahren später unangenehm wirken können. DJ müsse dafür keine Buße leisten. Die Geschichte soll Programmierern und Arbeitgebern als Lektion dienen.




Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.