Götz: Admin Login

Beitrag lesen

Hallo Magnus!

Das Formular mit (name="loginname") und (name="loginpass") hab ich gemacht, es wird auch an die Datei login_result.php3 übergeben und folgendes steht nun in der Datei.

Benutzt ihr _wirklich_ noch PHP3?
(Wenn ich mir Deinen Quellcode anschaue kann ich mit Sicherheit sagen: Nein. Warum also .php3 als Dateiendung?)

Quellcode:
[...]
if($_POST[loginname] && $_POST[loginpass]) {

Hier würde ich empty() bevorzugen.
Das gibt wenigstens einen boolschen Wert zurück.

[...]
$result = mysql_query("SELECT * FROM login WHERE loginname='$_POST[loginnamedb]' AND loginpass='$_POST[loginpassdb]'", $db);

In dieser Zeile stehen gleich mehrere Sachen, die man vermeiden sollte.
Siehe dclp FAQ: 16.14. Warum soll ich nicht SELECT * schreiben? und dclp FAQ: 16.18. Wie kann ich bösartigen Code in SQL-Abfragen unterbinden?.

if(loginname=='$_POST[loginnamedb]' && loginpass=='$_POST[loginpassdb]') {

Da der String $_POST[loginname] wohl kaum dem Inhalt der (gar nicht gesetzten) Konstanten loginname entspricht ist schon allein der erste Ausdruck falsch. Wg. fauler Auswertung ist der zweite unerheblich (ist aber genauso falsch).
Du solltest Dir auf jeden Fall mal PHP Manual: Types / Strings durchlesen.
Außerdem solltest Du dringend das error_reporting hochsetzen, dann bekommst Du wenigstens brauchbare Meldungen angezeigt.

Es sollte vielleicht eher
if ($_POST['loginname'] == $loginpass && [...])
heißen.

Wobei im geposteten Code-Stück weder $loginname noch $loginpass gesetzt werden.
Außerdem verwendest Du einmal den Index loginname und einmal loginnamedb. Was soll das?

Kurz zusammengefaßt: Dein Code ist von vorn bis hinten kaputt.
Ihr solltet euch beide mal genauer mit PHP befassen, denn die Fehler sind derart offensichtlich, daß ich mich wirklich wundere, daß einer "Ausbilderin" das nicht auf den ersten Blick auffällt.
Daß der Code unübersichtlich ist und das die Fehlersuche nicht unbedingt vereinfacht muß man gar nicht mehr dazusagen.
Deswegen empfehle ich Euch auch gleich noch die Lektüre der PEAR Documentation: Chapter 4. Coding Standards empfehlen. Man muß ja nicht alles übernehmen, aber sie sind auf jeden Fall ein guter Ausgangspunkt.

MfG
Götz

--
Losung für Montag, 29. November 2004
Das soll mein Ruhm und meine Wonne, mein Preis und meine Ehre sein unter allen Völkern auf Erden, wenn sie all das Gute hören, das ich Jerusalem tue. (Jeremia 33,9)
Der Seher Johannes schreibt: Der Engel zeigte mir die heilige Stadt Jerusalem herniederkommen aus dem Himmel von Gott, die hatte die Herrlichkeit Gottes. (Offenbarung 21,10-11)
(Losungslink)