tk: Login und registrierskript

Beitrag lesen

Hallo Tino,

Ich habe 2 kleine Probleme, beim Login geht alles, bis auf die Rückleitung, denke das da ein metha fehlt aber komme selber nicht drauf wo das eingepflanzt werden muss,

Was meinst du mit "Rückleitung"? Im Code steht keine Weiterleitung o.ä.. Und was ist ein »metha«? Und wo willst du das "ein[…]pflanz[en]"?

und beim registrieren will es mir das ganze nicht in die Datenbank schreiben.

Definiere "will nicht". Fehlermeldung? Verhalten soll/ist?

@mysql_connect($db_server,$db_user,$db_passwort);

von der nicht vorhandenen bzw. (wie hier) mangelhaften Fehlerbehandlung (nein, das Unterdrücken von Fehlern ist nicht sinnvoll) sei im Folgenden mal abgesehen ...

$pruefung = mysql_db_query("nutzer",'SELECT passwort FROM login
             WHERE username="'.$user.'"');

Die Funktion mysql_db_query() ist bereits seit PHP 4.0.6(!) - also seit 10(!) Jahren - veraltet. Ersetze sie durch mysql_select_db() und mysql_query(), erstere kennst du ja schon. Außerdem darfst du niemals und unter keinen Umständen Daten die von außen kommen ungeprüft bzw. nicht entschärft in einen Query einbauen, siehe auch http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel. Bei allen weiteren Querys gilt das natürlich genauso.

setcookie("username", $user, time()+3600);
  setcookie("passwort", $pass, time()+3600);

Die Zugangsdaten in einem Cookie zu speichern ist keine gute Idee: zum einen werden die Daten dann bei jedem Request unverschlüsselt zum Server geschickt und zum anderen musst du dann bei jedem Request prüfen ob die Zugangsdaten gültig sind. Besser wäre es dem User eine Session zu verpassen und in dieser dann zu speichern wenn er eingeloggt ist.

<div id="center">
<!--

Wofür ist der Kommentar? Damit kommentierst du Fehler- und Erfolgsmeldungen die weiter unten ausgegeben werden aus.

$check = mysql_db_query('nutzer','SELECT user FROM teilnehmer
                                   WHERE user="'.$_ POST['kennung'].'"');

Neben dem oben geschriebenen: zwischen »$_« und »POST« ist ein Leerzeichen zu viel.

if($anzeige[0] == $_ POST['kennung'])

dito.

print('<script language="Javascript">
          alert("Die eingegebene Kennung ist bereits vorhanden");
         </script>');

Warum gibst du Fehlermeldungen nicht ganz normal als Text aus sondern per Javascript (mit fehlendem type-Attribut)? User Ohne Javascript bekommt der User nur eine leere Seite vorgesetzt ...

print('<script language="Javascript">
           alert("Ihre Daten wurden übernommen");

Zu diesem Zeitpunkt kannst du noch garnicht wissen, ob die Daten korrekt gespeichert wurden.

$pers = mysql_db_query("nutzer",'INSERT INTO teilnehmer
           (user, nachname, vorname, email) VALUES
           ("'.$_POST['kennung'].'","'.$_POST['$nachname'].'","'.
               $_POST['$vorname'].'","'.$_POST['$email'].'")');

Hier ist zuviel Geld (genauer: Dollar) im Spiel ...

}
  }
}
}

Du solltest dir angewöhnen weiter einzurücken. Ein Leerzeichen pro Ebene ist etwas wenig um den Überblick zu behalten.

Gruß,
Tobias