Tutorials
[ Zurück ]


Login mit Md5 und DB


In diesem Tutorial möchjte ich erklären, wie man ein einfaches, aber sehr gutes Loginscript schreibt. Das Script fragt den User mithilfe einer MySql Datenbank ab, ob er vorhanden ist und das eingegebene Passwort stimmt.
Das Passwort wird mit $POST übermittelt und zusätzlich mit dem Md5 verfahren verschlüsselt, sodass ein Passwortklau nicht möglich ist, allerdings ist bei einem vergessenem Passwort auch ende.

Was brauche ich dafür?
  • Eine MySql Datenbank
  • Ein Formular zum eingeben des usernames und des Passwortes
  • Eine Datei, die die eingegebenen Werte mit der DB abgleicht
  • Eine Seite die geschützt werden soll
  • Zusätzlich kann man noch eine Datei zum verbinden mit der DB erstellen, die einem die Arbeit erleichtert

Fangen wir mit der Datenbank an:
Erstelle dazu eine neue DB und erzeuge eine Tabelle namens "user" in dieser Tabelle fügst du die Spalten "Nickname" und "passwort" ein. Als beispiel kannst du als Username "test" und als Passwort "test" nehmen (Vorsicht! In der Datenbank darf nicht "test" als Passwort eingetragen werden, sondern der Md5 Hash von test, dieser lautet "098f6bcd4621d373cade4e832627b4f6" diesen kannst du www.php-einfach.de/sonstiges_generator_md5.php generieren lassen oder du schreibst dir ein script dafür).

Danach legen wir einen PHP datei an, mit dem Namen "connect.php" diese braucht man um die verbindung zu der DB herzustellen.
 <?php
$dbhost = "db4.cwsurf.de"
$dbuser = "Dein CWcity nick"
$dbpass = "Dein DB Passwort"
$dbname = "Dein DB Name"

$connect=mysql_connect($dbhost, $dbuser, $dbpass);
if(!$connect) die("Konnte keien Verbindung herstellen!");
mysql_select_db($dbname);
?>

Diese datei führt ihr dann vor dem Code aus, der etwas mit einer DB macht. Dies macht man mit einem include(""); befehl, indem Fall würde er lauten: include("connect.php");

Der nächste Schritt ist das Formular:

<html>
<form action="login.html" method="post">
Dein Username:<br/>
<input type="text" size="24" maxlength="50" name="username"><br/><br/>

Dein Passwort:<br/>
<input type="password" size="24" maxlength="50" name="password"><br/>

<input type="submit" value="Login">
</form>
</html>

Diese *.html datei nennen wir "index.html", in ihr sind jetzt lediglich 2 Eingabefelder zu sehen.

Der nächste Schritt ist die Überprüfung der eingegebenen Werte, dazu legen wir eine Datei mit dem Namen "login.html" an.

<?php
    session_start();
    include("connect.php");

    if(isset($_POST['username']) AND isset($_POST['password'])) {
        $username = $_POST["username"];
        $passwort = $_POST["password"];

        if(preg_match('/[<>]/',$username)) {
        echo 'Eingabe abgelehnt, Eingabe enthält eines der folgenden Zeichen: <>';
        exit();
		} 
		
		if(preg_match('/[<>]/',$passwort)) {
        echo 'Eingabe abgelehnt, Eingabe enthält eines der folgenden Zeichen: <>';
        exit();
		} 
		
        $passwort=md5($passwort);
        
        $abfrage = "SELECT
                        Nickname,
                        Passwort
                    FROM
                        user
                    WHERE
                        Nickname = '".$username."'
                        AND
                        Passwort = '".$passwort."'";
        $ergebnis = mysql_query($abfrage) OR die(mysql_error());
        $row = mysql_num_rows($ergebnis);

        if($row == 1) {
            $_SESSION["username"] = $username;
			?>
        <html>   
        <head>
		   <meta http-equiv="refresh" content="0; URL=geheim.php"> 
		</head>	
		</html>	
			<?php
        } else {
            echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.html?seite=login\">Login</a>";
        }
    }
?>

In der erste Codezeile muss immer  session_start(); stehen, um die Loginsession zu starten.
In der Zeile drunter includen wir unser connect.php um die verbindung mit der DB aufzunehmen.

Zeile 5-7 weisen die eingegebenen Inhalte einer Variablen zu.
Teile 9-17 überprüft ob diese zwei Zeichen in der eingabe vorhanden sind, somit kann man die eingabe gegen Code schützen, der die Website hacken könnte.

In Zeile 19 verschlüsseln wir das Passwort mit dem Md5 verfahren und amchen es somit unleserlich.

Jetzt wird von zeile 21-31 aus der DB abgefragt, ob ein Username und ein Passwort vorhanden ist, welches den eigaben entspricht, ist dies der Fall wird als Ergebnis 1 ausgegeben.
Zeile 33 und 34 überprüft, ob das Ergebnis 1 ist, ist dies der Fall wird der Session username der Aktive Nickname der Person, die sich eingelogt hat zugewiesen, und der eigentliche code ist fast fertig.
Ich habe danach noch eine Automatische weiterleitung eigenfügt, damit der user nicht auf Weiter oder einen anderen Link klicken muss, danach die alles umfasende If-Abfrage schließen und ein else hinzufügen, dass ausgegeben wird, wenn der Login nicht erfolgreich war.

Jetzt wird man auf geheim.php weitergeleitet, dort schreibt man wieder session_start(); an den Anfang, und macht eine if-Abfrage, ob die Session registriert wurde.

<?php
session_start();

if(!isset($_SESSION["username"]))
   {
   echo "Bitte erst <a href=\"index.html?seite=login\">einloggen</a>";
   exit;
   } 
?>

Unter die If-Abfrage schreibt man jetzt den Inhalt, den nur ein Registrierter user sehen darf.

Ich hoffe, dass das Tutorial geholfen hat, bei Fragen bitte einfach ein Kommentar abgeben oder mir eine CWmail schreiben

Alle angaben ohne Gewähr, und ohne Sicherheit, dass dieses Verfahren absulut sicher ist!

 


Erstellt:15.05.09 22:53
Autor: The-Village

Letzte Änderung: 22.05.09 09:05
Geändert von: The-Village

Bewertungen:5
Bewertung: 2.0

Freigeschaltet: Ja
Views 5255

Klicke einfach auf einen Stern!
Wollen Sie wirklich das Tutorial löschen?
Wollen Sie wirklich dieses Tutorial zulassen?
Betreff: Report tutorial [id = 98] !
Absender:
Kommentar:
Wollen Sie wirklich dieses Tutorial zulassen?
Absender:
Kommentar:
Folgende User sind hier gerade aktiv:
-

ANZEIGE