PHP Login mit AJAX{4}
Ich habe bereits in diesem Artikel erklärt, wie man ein PHP Login mit einer MySQL Datenbank erstellt. Nun möchte ich in diesem Artikel erklären, wie man ein PHP Login mit einer schöneren Benutzeroberfläche programmiert. Der Vorteil besteht darin, dass die Seite nicht neu geladen wird, wenn man sich einloggt. Zusätzlich werden wir das Passwort mit md5 verschlüsseln, um es nicht einfach so lesbar zu machen.
Für dieses Tutorial hier, brauche ich viele Dinge aus dem, welches ich oben verlinkt habe. Deshalb ist es von Vorteil, wenn man sich das Tutorial bereits durchgelesen hat, bevor man mit diesem hier beginnt.
Als erstes solltet ihr alle Dateien aus dem anderen Tutorial erstellen und testen, ob das ganze so funktioniert. Wenn ihr das getan habt, beginnen wir mit der Verschlüsselung der Daten. Man muss sich das so vorstellen, dass beim Eintragen in der Datenbank nicht das Passwort in Klartext abgelegt wird, sondern nur der Hashwert. Wenn sich nun jemand einloggen will, wird das Passwort zuerst auch zu einem md5 Hash verarbeitet und diese beiden Werte dann verglichen.
Dazu müssen wir in der Login.php folgendes verändern:
<?php include('connect.php'); $username=$_POST['username']; $password=md5($_POST['password']); $query=mysql_query("SELECT username, password FROM users WHERE username ='".$username."'") or die("konnte nicht selecten!!!"); mysql_real_escape_string($username); mysql_real_escape_string($password); $result=mysql_fetch_array($query); if(!$result['username']){ echo "Username oder Passwort falsch!"; die(); } if($password != $result['password']){ echo "Username oder Passwort falsch!"; die(); } session_register('username'); echo "Du bist erfolgreich registriert!"; ?>
Dadurch wird das empfangene Passwort direkt als Hash in der Variable gespeichert. Das dies funktionieren kann, muss das Passwort auch als md5 Hash in der Datenbank vorhanden sein. Da ich hier keine Registrierungsfunktion einbaue, muss man aus dem Passwort manuell den md5 Hash generieren. Im Web gibt es zahlreiche Websiten, die das anbieten. Falls man so etwas selber machen will, reicht dieser kleine PHP Code:
<?php echo md5('Dein Passwort'); ?>
Als nächstes müssen wir die loginform.php anpassen. Zuerst benötigen wir aber JQuery. Wenn wir es heruntergeladen haben, verschieben wir die Datei ins gleiche Verzeichniss wie die anderen Dateien und verändern die loginform.php folgendermassen:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Einfaches Loginscript -Tutorial</title> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#submit").click(function(){ $.post("login.php", {username: $("#username").val(), password: $("#password").val()}, function(data){ $("#userdata").remove(); $("#result").append(data); }); }); }); </script> </head> <body> <div id="result"> </div> <div id="userdata"> Deine Benutzerdaten:<br> Benutzername: <input type="text" size="35" id="username"><br> Passwort: <input type="password" size="35" id="password"><br> <input type="submit" value="Login" id="submit"> </div> </body> </html>
Nun sollte man alle Dateien aus dem anderen Tutorial erstellt haben, die Dateien wie hier beschrieben anpassen und die MySQL Einträge und Konfiguration vornehmen. Wenn das alles getan ist, kann man die Daten auf einen Webserver hochladen und das ganze Testen. Wenn ihr auf Login klickt, sollte die Loginmaske verschwinden und die Erfolgs-, oder Fehlermeldung erscheinen.
Falls ihr einen Fehler entdeckt oder Fragen habt, schreibt doch einfach einen Kommentar.
Jun 28, 2010 @ 20:00:41
Hey hab dein Tut benutzt. Fand es auch sehr gut also erstmal nen dickes Lob an dich.
Ich hab jetzt nur ein Problem. Ich hab das ganze auf meiner Seite eingebunden und zwar hab ich auf meiner Seite ein Div in dem ich eine Tabelle mit den Formularfeldern habe. Diese Seite ist eine Htmlseite.
Nun läd er mir irgendwie immer die ganze Seite nach, nachdem ich Login geklickt haben. d.h. er logt sich erst ein und sollte dann irgendeinen Text ausgeben.
liegt das an der Htmlseite?
Oder hast du eine andre Idee?
Vielen Dank
Jun 28, 2010 @ 20:05:41
Sry wegen doppel Post aber ich hab das mit der php Seite gerade ausprobiert und es geht auch nicht. Wenn der Server nen bisschen langsam manchmal ist dann sieht man noch wie in dem div der Inhalt geladen und auch angezeigt wird. Jedoch läd er nach kurzer Zeit den Ursprünglichen Inhalt wieder nach.
Aug 20, 2010 @ 13:08:46
Hallo
Könntest du bitte einmal deinen Code posten?
Dann kann ich mir das einmal anschauen.
Danke vielmals
Mai 11, 2011 @ 22:21:25
Kannst du mal zu dem Loginscript noch ein Registrierungstutorial posten?