Developers Shame Day: Ein „Login“

geschrieben am 3.November 2010



Als Cem zum Developers Shame Day aufrief, wusste ich eigentlich schon, in welchen Code ich gucken musste. Ich konnte die Dateien auf einer DVD auch wiederfinden. Ich muss zugeben, ich bin etwas fasziniert. Dem Zeitstempel sei dank, konnte ich auch noch entnehmen, wann die Datei etwa aktuell gewesen ist – 2001.

Ich hatte zu der Zeit ein eSport-Portal, was sich vorwiegend um Counter-Strike drehte. Es war bei 4Players gehostet und hatte im Schnitt 500.000 PIs im Monat. Der Erfolg des Portals kann aber nicht am Code gelegen haben, definitiv nicht! ;)


Ich habe mich seiner Zeit scheinbar dazu entschlossen, die include-Funktion als godfather der PHP-Funktionen zu erkoren, anders kann ich mir den Kram selbst nicht erklären. So habe ich die Dateien in etwa 2-3kb abgelegt und es gab für jeden Senf eine eigene Datei. Funktionen werden auch völlig überbewertet. Der Login der Seite ging über geschätzte 13 Dateien inkl. User-Verwaltung.
In der „user.login.php4“ konnte sich der registrierte User also anmelden. Natürlich wurde das Passwort plain in die Datenbank geschoben. Vermutlich um dem User schneller sagen zu können, wie sein Passwort ist, wenn er es vergisst. Ich weiß es nicht.

[php]
<?php
include ("header.php4");
include ("mainmenu.php4");
include ("banner.html");
include ("menu.ro.html");
echo "<tr>
<td background=layout/hintergrund.jpg valign=top>
<body bgcolor=#FFFFFF text=#000000><div align=center>
<table width=600 border=0 cellspacing=0 cellpadding=0>
<tr>
<td class=content>Username (Nick)</td>
<td>
<form name=form1 method=post action=user.check.php4>
<input type=text name=name>
</td>
</tr>
<tr>
<td class=content>Passwort</td>
<td>
<input type=password name=pass>
</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>
<br><input type=submit name=Abschicken value=Einloggen>
</td>
</tr>
</form>
</table>
</td>";
include ("rmenu.php4");
?>
[/php]

Wie bereits erwähnt, hatte ich mich auf kurze Dateien “spezialisiert”. Somit wurden die Eingaben dann auch nur in der Datenbank durchgereicht in der “user.check.php4″. Dort muss ich sagen, dass ich die Variable $timer in Zeile 3 für äußerst gelungen und kreativ halte :D
[php]
<?
include("dblogin.php4");
$timer=Time()+60*60*24*180;
if (($name != "") && ($pass != "")){
$result = mysql_query("SELECT * FROM readers WHERE username=’$name’");
if (mysql_affected_rows()){
$readers = mysql_fetch_array($result);
if ($pass == $readers[userpw]){
SetCookie("username", $readers[username], $timer);
SetCookie("userpw", $readers[userpw], $timer);
}
}
}

Header("Location: index.php4");

mysql_close();
?>
[/php]

Der einzige Wermutstropfen, der einem vielleicht bleibt ist die Tatsache, dass man selbst nach 10 Jahren noch ansatzweise sich durch den Code hangeln kann. Ob das nun schön ist oder nicht, steht auf einem anderen Papier.

Die dazu gehörige CSS-Datei umfasste 30 Zeilen und hat durchaus noch Optimierungspotenzial, eine “skilly” Sachen wie Filter oder der Typberücksichtung sind dennoch enthalten. Wie man unschwer erkennen kann, 11px Fontsize war total in!

[css]
a:active { color: lime; font-weight: bold; text-decoration: none; font-family: Arial; font-size: 11px;}

a:hover { color: #00AEFF; font-weight: bold; text-decoration: underline; font-family: Arial; font-size: 11px;}

a:visited { color: #B78A00; font-weight: bold; text-decoration: none; font-family: Arial; font-size: 11px;}

a:link { color: #B78A00; font-weight: bold; text-decoration: none; font-family: Arial; font-size: 11px;}

a:visited:hover { color: #436BFF; font-weight: bold; text-decoration: underline; font-family: Arial; font-size: 11px;}

td.date { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial }

td.topic { color: orange; font-style: normal; font-weight: bold; font-size: 11px; font-family: Arial }

td.content { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial; }

td.link { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial; filter:shadow(color=black, strenght=#4) }

p.link { color: white; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial; filter:shadow(color=black, strenght=#4) }

td.topic { color: #92929E; font-style: normal; font-weight: bold; font-size: 14px; font-family: Arial }

td.comment { color: #B78A00; font-style: normal; font-weight: normal; font-size: 11px; font-family: Arial }

.sb { scrollbar-arrow-color:#B78A00; scrollbar-base-color:#202C40; scrollbar-face-color:#202C40; scrollbar-shadow-color:#17202D; scrollbar-dark-shadow-color:#17202D; scrollbar-3d-light-color:#6E86AA; scrollbar-highlight-color:#6E86AA; margin-bottom:0; margin-left:15; margin-right:15; margin-top:0; padding-bottom:0; padding-left:0; padding-right:0; padding-top:0; color:#B78A00; font-size:11px; font-family:Arial; text-align: justify }

input, select { font-family: Arial, Helvetica; font-size: 11px; border-width:1; background-color:#211E47; color:#B78A00 }
input type=radio { font-family: Arial, Helvetica; font-size: 11px; color:#B78A00 }
[/css]

Nach diesem Zeitraum würde ich gern wissen, was wohl damals einem durch den Kopf geschossen ist, als man diese Zeilen verfasst hat. Über das Tabellenlayout mag ich nicht klagen, dass war halt damals so. Ich glaube, ich wusste schon damals, dass der heutige Tag kommen wird und habe deswegen auch alle Kommentare weggelassen… #facepalm

Mehr Code zum Developers Shame Day findest Du bei:

Danke Cem für die Idee, ich hatte mein Unterhaltungswert bereits anhand des eigenen Codes. Bin gespannt, was heute noch so den Weg ans Tageslicht findet.