Login System mit PHP/MySQL

  • Hallo Breadfisch,


    ich möchte euch nun ein kleines Tutorial machen, über das erstellen eines Logins mit MySQL.


    Wofür kann ich das benötigen ?


    - User Control Panel
    - Control Panel für den Admin
    - Generell eine Erfahrung reicher :D


    Was benötige ich dazu ?


    - MySQL Datenbank - hier GRATIS
    - MySQL basierendes Script
    - Schreibprogramm (Textdokument, hat jeder normale Rechner auf dem PC), Empfehle aber Notepad ++


    [align=center]Verzeichnis
    1. MySQL-Verbindung aufbauen
    2. index.php erstellen


    So wenn du alles hast dann können wir anfangen.


    Abschnitt: 1.0 (MySQL-Daten in Strings eintragen)

    Spoiler anzeigen
    Als erstes erstellen wir eine Datei namens "mysqlconnect.php"
    In dieser Datei werden wir auf deine MySQL- Datenbank zugreifen.

    Spoiler anzeigen
    Im folgenden Teil geben wir nun die Erforderlichen Daten zum zugreifen an.

    PHP
    <?php$SQL_HOST = 'DEINE DB-IP';$SQL_USER = 'LOGINNAME';$SQL_PW = 'PASSWORT';$SQL_DB = 'TABELLE';?>

    Spoiler anzeigen

    (Bitte in die ' ' eintragen und nicht entfernen)
    $SQL_HOST = 'DEINE DB-IP'; = Deine IP für die Datenbank. Standartmäßig "localhost"
    $SQL_USER = 'LOGINNAME'; = Dein Loginname, den du verwendest um auf die Datenbank zuzugreifen
    $SQL_PW = 'PASSWORT'; = Dein Passwort, das du verwendest um auf die Datenbank zuzugreifen
    $SQL_DB = 'TABELLE'; = Die Tabelle wo deine Accounts und weiteres drinliegen


    Abschnitt: 1.1 (Verbindung zur Datenbank aufbauen)

    Spoiler anzeigen
    Als nächtes erstellen wir die Verbindung zu Datenbank

    SQL
    $checkconnect = mysql_connect("$SQL_HOST", "$SQL_USER", "$SQL_PW");

    Spoiler anzeigen
    So hiermit geben wir den Befehl zur Datenbank zuzugreifen, mit den eingegeben Daten wie wir bei Punkt 1.0 gemacht haben.
    Das $checkconnect kommt später noch zum Einsatz.


    Abschnitt: 1.2 (Verbindung zur Tabelle aufbauen)

    Spoiler anzeigen
    Als nächtes erstellen wir die Verbindung zu Datenbank

    SQL
    $checkdb = mysql_select_db("$SQL_DB");

    Spoiler anzeigen
    So hiermit geben wir den Befehl zur Tabelle zuzugreifen, mit den eingegeben Daten wie wir bei Punkt 1.0 gemacht haben.
    Das $checkdb kommt später noch zum Einsatz.

    Spoiler anzeigen
    so jetzt besteht theoretisch Verbindung, dennoch wissen wir nicht ob es geklappt hat oder nicht.
    Also fügen wir noch die Errormeldungen ein, dazu brauchen wir $checkconnect und $checkdb


    Abschnitt: 1.3 (Errormeldungen einfügen)

    Spoiler anzeigen
    Als nächtes erstellen wir die Verbindung zu Datenbank

    PHP
    if($checkconnect == false){	echo 'Verbindnung zur Datenbank fehlgeschlagen !';	exit;}if($checkdb == false){	echo 'Verbindnung zur Tabelle fehlgeschlagen !';	exit;}

    Spoiler anzeigen
    Wie man sieht ist es ähnlich wie mit der PAWN Sprache.
    Da fragen wir ab ob $checkconnect == false ist, d.h. das die Datenbank nicht kontaktiert werden konnte, geben wir ein Text
    mit echo ""; aus. das exit; heißt, das ab da das Script zu ende sein soll. Es würde sich ja nicht lohnen, wenn die Datenbank nicht funktioniert.



    Abschnitt: 2.0 (mysqlconnect.php in die index.php einbringen)

    Spoiler anzeigen
    So jetzt erstellen wir eine Datei namens "index.php", die öffnet sich automatik, wenn du auf deine Link gehst. (http://www.DEINLINK.domain/)

    Spoiler anzeigen
    Natürlich wollen wir ja auf die Datenbank zugreifen ohne alles zu wiederholen was wir im Abschitt 1 gemacht haben.
    also fügen wir mysqlconnect.php als Include in die index.php ein, dies geht so.

    PHP
    <?php Include("mysqlconnect.php"); ?>

    Spoiler anzeigen

    So das war es auch in dem Abschnitt, d.h wenn man auf die index.php zugreift, erstellen wir immer eine Verbindung zu Datenbank.


    Abschnitt: 2.1 ($_GET einfügen)

    Spoiler anzeigen
    Wofür ist dieser Befehl gut ?

    Spoiler anzeigen
    Der Befehl wirkt dazu, das wir nicht edliche an Dateien erstellen müssen, und alles in der index.php stattfindet.
    Bsp: "http://www.DEINLINK.domain/?site=login" das bewirkt die Funktion, sowas geht man ja von Facebook oder anderen Professionellen Seiten.

    Spoiler anzeigen
    Genug geschrieben, jetzt bauen wir die Funktion ein.

    PHP
    <?php$seite = $_GET["site"];if(!isset ($seite)){	$seite = "site";	echo '<meta http-equiv="refresh" content="0; URL=?site=site">'; }?>

    Spoiler anzeigen

    $seite = $_GET["site"]; = Wir erstellen eine Variable, wo die aktuelle Seite gespeichert wird.
    if(!isset ($seite)) = Wir überprüfen ob die Variable $seite nichts enthält. Sollte dies der Fall sein geschiet folgendes.
    $seite = "site"; = Hier beschreiben wir die Variable $seite mit folgendem Inhalt site
    echo '<meta http-equiv="refresh" content="0; URL=?site=site">'; = Hiermit Verlinken wir uns auf folgende Seite http://www.DEINLINK.domain/?site=site

    Spoiler anzeigen
    http-equiv="refresh" = Wir werden weitergeleitet
    content="0; URL=?site=site" = Nach 0 Sekunden (im content angegeben) sollen wir auf die URL weitergeleitet werden


    Abschnitt: 2.2 (Session erstellen)

    Spoiler anzeigen
    So was wir noch benötigen sind Session`s

    Spoiler anzeigen
    Dazu geben wir folgendes im Script ein. (Ganz oben)

    PHP
    <?php session_start(); ?>

    Spoiler anzeigen

    Hiermit geben wir den Befehl, das wir die Session´s benutzen wollen.


    Abschnitt: 2.3 (Loginformular erstellen)
    [expander]Super habe jetzt soviel gemacht und sehe nichts auf meiner Seite, will der mich hänseln ?
    Nein, will ich nicht. Das waren nur die Vorbereitungen. Jetzt geben wir der Seite was zu Wiedergeben.


    Als erstellen wir ein bisschen HTML um der Seite was zu sehen zu geben.


    So wenn ich jetzt auf die Seite gehe sehe ich oben nur im Tabmenü "Seitenname", wenn dies so ist hast du alles richtig befolgt.


    also fügen wir folgendes in den body ein (<body>)


    if(!isset ($_SESSION['username']) && $seite == "site") = Die Abfrage ob wir auf der GET-Seite "site" sind, und der SESSION "username" nicht vergeben ist.
    <form action=\"?site=login\" method=\"post\"> = Bei bestätigung werden wir weitergeleitet auf die GET-Seite "login" und unsere Methode ist ein "POST", d.h. wir wollen unsere Eingabe and die GET-Seite "login" senden.


    Danach erzeugen wir eine "else if" die uns zum Login führt.


    $name = $_POST["bname"]; = Der Name wo wir im Feld Username eingegeben haben wird in der Variable $name gespeichert.
    $pw = $_POST["passwort"]; = Das Passwrot wo wir im Feld Passwort eingegeben haben wird in der Variable $pw gespeichert.
    $sql_query = "SELECT * FROM accounts WHERE Name LIKE '$name'"; = Hiermit fragen in der Datenbank folgendes ab.
    SELECT = Was abgefragt werden soll (* = alles in der Tabelle abfragen)
    FROM = Wo die Accountdaten drinliegen, also wer der Benutzer zu finden ist. ("accounts" bitte ändern)
    WHERE = Welche Spalte soll abgefragt werden, in dem Falle die Spalte Name
    LIKE = Könnte man auch durch ein "=" ersetzen. Das Heißt die Spalte Name mit dem in der Variable $name gespeicherten User abfragen


    $result = mysql_query($sql_query); = Hier wandeln wir den Wert um
    $menge = mysql_num_rows($result); = Hier Zählen wir wieviele User es gibt mit dem Namen.
    if($menge == 1) = Gibt es einen User mit dem Namen, werden wir weitergeleitet. Ist dies nicht fall erscheint die "else"
    $row = mysql_fetch_object($result); = Hier wandeln wir die mysql_query erneut um, damit wir sie im PHP-Code benutzen können.
    if($row->Passwort == $pw) = Hier fragen wir ab, ob das eingegebene Passwort mit dem in der Datenbank übereinstimmt
    $_SESSION["username"] = $name; = Hier geben wir dem SESSION "username" den Wert, den wir in der Variable $name gespeichert haben.



    Danach erzeugen wir eine weitere "else if"

    PHP
    else if(isset ($_SESSION['username']) && $seite == "site")
    {
    $name = $_SESSION['username'];
    echo "Herzlich Willkommen $name";
    }



    DOWNLOADS:
    - index.php
    - mysqlconnect.php


    Virustotal
    - index.php
    - mysqlconnect.php