/tutorial-login_mit_mysql_datenbank.html PHP Login MySQL - Datenbank Login php script - Password login
  PHP Kurs Logo  
 
Buttons PHP Kurs - Kapitel Trennlinie Downloads Trennlinie Was brauche ich ? Trennlinie Entwickler Jobs Trennlinie Kontakt Trennlinie Impressum Buttons
 
 
Menu
Allererste PHP Schritte
- Webserver Installation
- PHP Editor Installation

PHP Grundlagen
- PHP Grundwissen
- Mein erstes Programm
- Kommentare einfügen
- Variablen
- PHP+HTML mischen
- If Abfragen
- Rechenarten
- Arrays
- Schleifen
- Funktionen
- Klassen
- Includes
- Sessions und Cookies
- Login mit Sessions
- Login mit Datenbank
- Referer auslesen
- Wert aus Datenbank
- Variablen übergeben

MySQL Grundlagen
- Was ist das ?
- Erste Schritte
- Verbindung herstellen
- Einfache SQL Befehle
- SQL Injection

Häufig gefragt
- Was ist Adwords ?
- Interessante Links
- Wasserzeichen mod_rewrite
- Thumbnails erstellen
- PHP Gästebuch
- PHP Header
- Webseiten auslesen
- Socket Verbindungen
- E-Mail Adressen prüfen
- E-Mails versenden
- $_GET & $_POST
- Datenbank sichern
- Server DDOS Angriffe Abwehren
- Webhosting - Worauf ist zu achten ?
- Fachübersetzungen

Interessante Artikel
- Soft-Skill-Zertifizierung
- Sicherheits Workshops


PHP Login mit Datenbank Anbindung programmieren

Hier möchte ich erklären, wie man mit Hilfe einer Datenbank wie MySQL einen Login programmiert. Ihr benötigt eine Möglichkeit eure Datenbank zu bedienen. Normalerweise stellt einem jeder Hoster PHPMyAdmin (pma) zur Verfügung, welches wir hier auch weiter benutzen werden.

Als erstes müssen wir unter PHPMyAdmin eine Tabelle erstellen, wo wir alle Zugänge mit den dazugehörigen Passwörtern speichern. In diesem Fall nenne ich die Tabelle login_usernamen . Hierbei müssen wir uns noch überlegen welche Felder wir benötigen. Ich möchte gerne 5 Werte pro User speichern:

php tabelle login php

Wir sollten jedem User eine eindeutige Nummer zuweisen. Dieses Feld nenne ich id und setze es als key, sowie auf auto increment, das bedeutet dass bei jedem neuen Eintrag die id automatisch um 1 hochgezählt wird. Das unsigned bedeutet, dass der Wert niemals Minus ist. Ein Feld für den Usernamen (username), ein Feld für das Passwort (passwort). Diese beiden Felder habe ich als Char 25 definiert ; so reserviert MySQL für diesen Dateneintrag immer 25 Bytes, was sich bei großen Tabellen durchaus auf die Performance auswirken tut. Felder die bei jedem Eintrag unterschiedlich lang sein können, kann MySQL nicht so schnell berechnen wo sich ein Eintrag befindet, als wenn der Block immer eine bestimmte Größe hat. Weiterhin haben wir ein user_geloescht, wodrin wir speichern ob dieser User noch Zugang zu unserem Login hat - also ob er mittlerweile gelöscht wurde oder nicht. Manche würden den Usereintrag komplett aus der Datenbank löschen. Ich tendiere bei solchen sensiblen Daten dazu, den Eintrag nur als gelöscht zu markieren und dies abzufragen. Wenn man später etwas nachvollziehen muss, was ein bestimmter User getan hat, dann kann man dies nicht mehr nachvollziehen wenn der User komplett aus der Datenbank gelöscht wurde. Wenn der Eintrag nur als gelöscht markiert ist, dann kann man jederzeit nachvollziehen welcher User dies gewesen ist. Zuletzt speichern wir noch das Datum/Uhrzeit des letzten Logins in letzter_login . Die PHPMyAdmin Tabelle die wir dort erstellen kann dann so aussehen: (es werden mehr Felder angezeigt, ich habe dies kleiner gefasst, damit das hier auf die Seite passt)

phpmyadmin tabelle login users

So, die Tabelle ist jetzt erstellt und leer. Jetzt müssen wir diese mit Daten füllen. Wir sollten uns einen Testeintrag machen und klicken in PHPMyAdmin auf Einfügen. Eintragen brauchen wir nur einen Usernamen und ein Passwort. Dann klicken wir auf OK, um den Eintrag in der Tabelle zu speichern. Da user_geloescht auf 0 steht, ist dieser Eintrag auch gültig für unser php Programm, welches wir gleich schreiben werden.

Normalerweise sollte man das Passwort nicht sichtbar in die Datenbank schreiben. Jeder der Zugang zu der Datenbank hat, kann sich so die Passwörter ansehen. Leute die Sicherheitslücken in euren Programmierungen finden, können unter Umständen die Passwörter dann auslesen. Normalerweise sollte man die Passwörter die man dort speichert mindestens einmal mit dem Befehle md5()behandeln, und den Wert den man daraus zurück kriegt als Passwort in der Datenbank speichern. So steht nur eine wirre Zeichenfolge als Passwort in der Datenbank. Rückrechnen kann man das nicht, aber es gibt Tabellen im Netz, wo die md5 Werte mit den gängigsten Werten und den dazugehörigen Passwörtern drinne gespeichert sind. Bei zu einfachen Passwörtern kann es passieren dass Hacker euren MD5 Wert in so einer Tabelle finden und dann das Passwort ablesen können. Deshalb sollte man kompliziertere Passwörter wählen, oder sogar vielleicht andere Verschlüsselungsverfahren verwenden, z.B. SHA. Wenn der User einloggt kann man das Passwort, welches er in das Formular eingegeben hat einmal mit MD5 behandeln und dann mit dem Datenbankeintrag vergleichen. Dies soll aber nicht Gegenstand unserer Programmierung werden, da es uns erstmal nur um den Datenbankgestützten Login geht.

Unser Login mit Datenbankanbindung

Jetzt haben wir alle Vorbereitungen getroffen. Wir benötigen nur noch die Zugangsdaten zu unserer MySQL Datenbank, damit wir uns in PHP in die Datenbank einloggen können. Wir benutzen zusätzlich noch eine Session damit wir eine Möglichkeit haben dauerhaft zu speichern, ob der User bereits eingeloggt ist. Ist in dieser Session nicht gespeichert, dass der User eingeloggt ist, dann bekommt er das Login Formular angezeigt.

Datenbank öffnen: (Datei: login.php)

<?php
    $_db_host 
"localhost";            # meist localhost
    
$_db_datenbank "datenbankname";
    
$_db_username "mysql-username";
    
$_db_passwort "mysql-passwort";

    
SESSION_START();

    
# Datenbankverbindung herstellen
    
$link mysql_connect($_db_host$_db_username$_db_passwort);

    
# Hat die Verbindung geklappt ?
    
if (!$link)
        {
        die(
"Keine Datenbankverbindung möglich: " mysql_error());
        }

    
# Verbindung zur richtigen Datenbank herstellen
    
$datenbank mysql_select_db($_db_datenbank$link);

    if (!
$datenbank)
        {
        echo 
"Kann die Datenbank nicht benutzen: " mysql_error();
        
mysql_close($link);        # Datenbank schliessen
        
exit;                    # Programm beenden !
        
}

    
##################################################################
    # Die Datenbank ist geöffnet und die richtige Datenbank ausgewählt
    # Hier müssen wir nun prüfen, ob der Benutzer eingeloggt ist
    # und ob das Formular angezeigt werden muss
    ##################################################################

    # Datenbank wieder schliessen
    
mysql_close($link);
?>

Was fehlt uns noch ? Wir benötigen ein Formular für den Login und eine Loginprüfung. Damit das ganze übersichtlich bleibt, machen wir das ganze gleich richtig: Code & HTML trennen. Wir packen das Formular einfach in eine andere Datei.

Loginformular: (Datei: login-formular.html)


<form method="POST" action="login.php">
Ihr Username: <input name="username"><br>
Ihr Passwört: <input name="passwort" type=password><br>
<input type=submit name=submit value="Einloggen">
</form>

Wir versenden die Daten mit dem Formular über POST und nicht über GET, dadurch werden die Daten im Header mitgesendet und nicht über die Internetadresse. Das Feld vom passwort ist vom Typ password, was bewirkt dass bei der Eingabe die Zeichen verdeckt werden.

Wir werden in $_SESSION['login']; speichern, ob der Surfer angemeldet ist oder nicht. Wenn es auf 1 ist, dann ist er angemeldet, ansonsten bekommt er das Loginformular zu sehen. Weiterhin fragen wir ab, ob Daten über die Variable $_POST gekommen sind (hier zu mehr in meinem Kapitel POST und GET). Hierzu fragen wir ab, ob $_POST['submit']; nicht leer ist. Wenn dort etwas drinne steht, dann wurde das Loginformular benutzt und wir überprüfen, ob die eingegebenen Daten mit einem Logineintrag übereinstimmen.

Die Abfrage könnte folgendermaßen aussehen:

<?php

    
# Ist die $_POST Variable submit nicht leer ???
    # dann wurden Logindaten eingegeben, die müssen wir überprüfen !
    
if (!empty($_POST["submit"]))
        {
        
# Die Werte die im Loginformular eingegeben wurden "escapen",
        # damit keine Hackangriffe über den Login erfolgen können !
        # Mysql_real... ist auf jedenfall dem Befehle addslashes()
        # vorzuziehen !!! Ohne sind mysql injections möglich !!!!
        
$_username mysql_real_escape_string($_POST["username"]);
        
$_passwort mysql_real_escape_string($_POST["passwort"]);

        
# Befehl für die MySQL Datenbank
        # Wichtig ist, die Variablen von $_username und $_passwort
        # zu umklammern. Da wir mit Anführungszeichen den SQL String
        # angeben, nehmen wir dafür die einfachen Anführungszeichen
        # die man neben der Enter Taste auf der # findet !
        
$_sql "SELECT * FROM login_usernamen WHERE
                    username='
$_username' AND
                    passwort='
$_passwort' AND
                    user_geloescht=0
                LIMIT 1"
;

        
# Prüfen, ob der User in der Datenbank existiert !
        
$_res mysql_query($_sql$link);
        
$_anzahl = @mysql_num_rows($_res);

        
# Die Anzahl der gefundenen Einträge überprüfen. Maximal
        # wird 1 Eintrag rausgefiltert (LIMIT 1). Wenn 0 Einträge
        # gefunden wurden, dann gibt es keinen Usereintrag, der
        # gültig ist. Keinen wo der Username und das Passwort stimmt
        # und user_geloescht auch gleich 0 ist !
        
if ($_anzahl 0)
            {
            echo 
"Der Login war erfolgreich.<br>";

            
# In der Session merken, dass der User eingeloggt ist !
            
$_SESSION["login"] = 1;

            
# Den Eintrag vom User in der Session speichern !
            
$_SESSION["user"] = mysql_fetch_array($_resMYSQL_ASSOC);

            
# Das Einlogdatum in der Tabelle setzen !
            
$_sql "UPDATE login_usernamen SET letzter_login=NOW()
                     WHERE id="
.$_SESSION["user"]["id"];
            
mysql_query($_sql);
            }
        else
            {
            echo 
"Die Logindaten sind nicht korrekt.<br>";
            }
        }

    
# Ist der User eingeloggt ???
    
if ($_SESSION["login"] == 0)
        {
        
# ist nicht eingeloggt, also Formular anzeigen, die Datenbank
        # schliessen und das Programm beenden
        
include("login-formular.html");
        
mysql_close($link);
        exit;
        }

    
# Hier wäre der User jetzt gültig angemeldet ! Hier kann
    # Programmcode stehen, den nur eingeloggte User sehen sollen !!
?>

Die meisten Erklärungen habe ich versucht als Kommentar in die programmierten Zeilen einzufügen. Erst gucken wir, ob die Post Variable vom Submit nicht leer ist. Wenn da etwas drinne steht, dann wurden im Loginformular Daten eingegeben. Diese Daten packen wir in $_username und $_passwort, wobei wir diese mit mysql_real_escape(); behandeln. Dies bietet Sicherheit vor Mysql Injections, womit Hacker an eure Datenbank kommen könnten. Dann Fragen wir in einem einzigen MySQL Befehl ab, ob der Username und das Passwort zu einem Eintrag passen, wo user_geloescht=0 ist. Mit Limit 1 holen wir maximal nur einen Eintrag aus der Datenbank, damit MySQL nicht weiter nach weiteren Einträgen sucht, sobald ein Eintrag gefunden wurde. Lassen wir das weg, dann würde MySQL weiter nach gültigen Einträgen suchen - dies würde zusätzliche Rechenzeit bedeuten, gerade bei großen Tabellen mit viel Inhalt.

Man könnte auch erst nur den Usernamen suchen, wo das gelöscht Zeichen auf 0 steht und diesen Eintrag aus der Datenbank holen und DANN erst vergleichen ob das Passwort stimmt. So könnte man differenzierter Fehlermeldungen ausgeben - ob der User gar nicht erst existiert, oder ob das Passwort falsch ist. Ich würde dem Surfer aber nicht unbedingt so detailgetreue Rückmeldungen geben, so weiss im Zweifel ein Hacker auch ob ein User existiert und braucht nur die Passwörter weiter durchzuprobieren. Man könnte zur Sicherheit bei der Meldung dass der Login nicht korrekt war noch einen Zähler mit hochzählen, wie oft er die Fehlermeldung bekommen hat und den Login ab 5 Versuchen komplett für den User sperren, um wenigstens etwas mehr Sicherheit zu bekommen. Hierzu müsste man noch die IP Adresse für weitere Eingaben sperren, da er ansonsten nur einen neuen Browser aufmachen müsste, um eine neue Session zu bekommen.

Hier nochmal das komplette Programm: (ohne das Formular)

<?php
    $_db_host 
"localhost";            # meist localhost
    
$_db_datenbank "datenbankname";
    
$_db_username "mysql-username";
    
$_db_passwort "mysql-passwort";

    
SESSION_START();

    
# Datenbankverbindung herstellen
    
$link mysql_connect($_db_host$_db_username$_db_passwort);

    
# Hat die Verbindung geklappt ?
    
if (!$link)
        {
        die(
"Keine Datenbankverbindung möglich: " mysql_error());
        }

    
# Verbindung zur richtigen Datenbank herstellen
    
$datenbank mysql_select_db($_db_datenbank$link);

    if (!
$datenbank)
        {
        echo 
"Kann die Datenbank nicht benutzen: " mysql_error();
        
mysql_close($link);        # Datenbank schliessen
        
exit;                    # Programm beenden !
        
}

    
##################################################################

    # Ist die $_POST Variable submit nicht leer ???
    # dann wurden Logindaten eingegeben, die müssen wir überprüfen !
    
if (!empty($_POST["submit"]))
        {
        
# Die Werte die im Loginformular eingegeben wurden "escapen",
        # damit keine Hackangriffe über den Login erfolgen können !
        # Mysql_real_escape ist auf jedenfall dem Befehle addslashes()
        # vorzuziehen !!! Ohne sind mysql injections möglich !!!!
        
$_username mysql_real_escape_string($_POST["username"]);
        
$_passwort mysql_real_escape_string($_POST["passwort"]);

        
# Befehl für die MySQL Datenbank
        
$_sql "SELECT * FROM login_usernamen WHERE
                    username='
$_username' AND
                    passwort='
$_passwort' AND
                    user_geloescht=0
                LIMIT 1"
;

        
# Prüfen, ob der User in der Datenbank existiert !
        
$_res mysql_query($_sql$link);
        
$_anzahl = @mysql_num_rows($_res);

        
# Die Anzahl der gefundenen Einträge überprüfen. Maximal
        # wird 1 Eintrag rausgefiltert (LIMIT 1). Wenn 0 Einträge
        # gefunden wurden, dann gibt es keinen Usereintrag, der
        # gültig ist. Keinen wo der Username und das Passwort stimmt
        # und user_geloescht auch gleich 0 ist !
        
if ($_anzahl 0)
            {
            echo 
"Der Login war erfolgreich.<br>";

            
# In der Session merken, dass der User eingeloggt ist !
            
$_SESSION["login"] = 1;

            
# Den Eintrag vom User in der Session speichern !
            
$_SESSION["user"] = mysql_fetch_array($_resMYSQL_ASSOC);

            
# Das Einlogdatum in der Tabelle setzen !
            
$_sql "UPDATE login_usernamen SET letzter_login=NOW()
                     WHERE id="
.$_SESSION["user"]["id"];
            
mysql_query($_sql);
            }
        else
            {
            echo 
"Die Logindaten sind nicht korrekt.<br>";
            }
        }

    
# Ist der User eingeloggt ???
    
if ($_SESSION["login"] == 0)
        {
        
# ist nicht eingeloggt, also Formular anzeigen, die Datenbank
        # schliessen und das Programm beenden
        
include("login-formular.html");
        
mysql_close($link);
        exit;
        }

    
# Hier wäre der User jetzt gültig angemeldet ! Hier kann
    # Programmcode stehen, den nur eingeloggte User sehen sollen !!
    
echo "Hallo, Sie sind erfolgreich eingeloggt !<br>";

    
##################################################################

    # Datenbank wieder schliessen
    
mysql_close($link);
?>

Ohne die Kommentarzeilen ist das Programm natürlich viel kleiner. Man kann es in wenige Zeilen quetschen. Damit Ihr aber nachvollziehen könnt welcher Codeteil wofür ist, habe ich diese bewusst alle im Text gelassen.

Ich hoffe ich konnte euch damit ein Stückchen näher bringen, wie man die Datenbank für den Login benutzt.





<<<< zurück Kapitelauswahl vorwärts >>>>




Kommentare: (absteigend sortiert)

Hier stehen noch alte Kommentare, die direkt über die Webseite gemacht wurden. Es kann dort nicht weiter kommentiert werden. Bitte nutzt dafür die Facebook Kommentare.

.:: 27.01.14 - 13:23 Uhr :: Name: Broco ::.
Was ist eigentlich mit mysqli?
mysql ist veraltet.
Anmerkung Charly: Es ist wichtig die Basics zu lernen. Dabei lernt man die SQL Syntax und was am Ende "drunter" liegt ist völlig egal. Über Sachen wie Performance, best practice etc sollte man sich als Anfänger zumindest erstmal keinen Kopf machen.

.:: 15.01.14 - 15:50 Uhr :: Name: Alex ::.
Hallo alle zusammen!!!
Ich hätte eine Frage zum Befehl "include". Wie ich verstanden habe damit binden wir in den php-script eine andere Datei ein. Wäre das nicht riskant??? Schließlich überprüfen wir in diesem Fall nicht wo die Datei her kommt!!!

.:: 10.07.13 - 00:38 Uhr :: Name: Hakan ::.
wenn ich mich dann mit den daten einlogge sagt der mir dann jedesmal das die zugangsdaten nicht korrekt sind

.:: 10.07.13 - 00:36 Uhr :: Name: Hakan ::.
Bekomme in meiner Datenbnk beim Anlegen von einen Benutzer folgende Fehldermeldungen :

1 Datensatz eingefügt.
ID der eingefügten Zeile: 3
Warning: #1366 Incorrect integer value: '' for column 'user_geloescht' at row 1
Warning: #1264 Out of range value for column 'letzter_login' at row 1

.:: 27.04.13 - 16:16 Uhr :: Name: Maurice ::.
Bei mir kommt nach dem Login auf der Seite die Meldung:
"Parse error: syntax error, unexpected '$_anzahl' (T_VARIABLE) in D:xampphtdocslogin.php on line 31"
Kann mir jemand dabei helfen?
Habe das Loginskript von oben benutzt

.:: 20.03.13 - 21:11 Uhr :: Name: Deatmon ::.
Hi, erstmal: geiles tutorial :D
Dann: hatte immer eine meldung:

Notice: Undefined index: login in /opt/lampp/htdocs/project7/login.php on line 80

Ich habe das hier:
if ($_SESSION["login"] == 0)

Dann durch das hier ersetzt:

if (array_key_exists ('login', $_SESSION) == 0)

Jetzt kriege ich die meldung nicht mehr :)

.:: 17.03.13 - 18:27 Uhr :: Name: Richard ::.
Hi,

Bin zufällig auf dieses Tutorial gestoßen, obwohl ich etwas komplett anderes gesucht hatte. Ist gut und verständlich geschrieben, aber ich würde vorschlagen, dass du auf das sichern der Passwörter in der Datenbank näher eingehst, da einige Leute ja anscheinend vorhaben, das Script tatsächlich einzusetzen.

Besonders, dass ein von dir beschriebener Rainbowtableangriff ganz einfach durch Salting verhindert werden kann.

md5- und auch sha-hashes sind nicht dafür gedacht Passwörter zu hashen. Dafür gibt es PBKDF2.

.:: 23.01.13 - 21:41 Uhr :: Name: Patrick ::.
Hallo
darf man dieses Script kostenlos verwenden?
Ich würde das für meine Bedürfnisse etwas anpassen, habe aber noch nicht die Erfahrung so etwas komplett eigenständig zu programmieren.

Danke :)

.:: 15.12.11 - 19:24 Uhr :: Name: Harry ::.
Hat sich erledigt, hab rausgefunden, das ich in der tabelle das feld password hatte aber im php-script das feld passwort abgefragt wurde

.:: 15.12.11 - 19:04 Uhr :: Name: Harry ::.
Hi, toller Code!
Ich habe ihn mir angesehn und alle verstanden, dank Kommentare. Ich habe nur 1 proplem:
Jedesmal wenn ich versuche mich anzumelden mit dem vorher erstellten acc, kommt Falsche Logindaten. Ich habe schon eingaben und daten in der DB überprüft. Sie stimmen 1:1 überein.
Ich habe allerdings in der Tabelle password länge auf 32 erhöt, und im phpcode $_passwort = mysql_real_escape_string($_POST[\"passwort\"]);
$_passwort = md5($_passwort); eingebaut für mehr sicherheit. Würde mich über hilfe freun.
e-mail: harry@henry-hilft.de

.:: 09.11.11 - 18:31 Uhr :: Name: gebi ::.
HI !
ich bekomme immer die fehlermeldung:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\esv-aichdorf\adminbereich\login.php:3) in C:\xampp\htdocs\esv-aichdorf\adminbereich\login.php on line 9

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\esv-aichdorf\adminbereich\login.php:3) in C:\xampp\htdocs\\adminbereich\login.php on line 9
Die Logindaten sind nicht korrekt.

.:: 09.11.11 - 08:44 Uhr :: Name: maYos ::.
Sehr geil! Vielen dank für dieses sehr schöne Tutorial! Hat mir sehr geholfen...

.:: 09.11.11 - 08:44 Uhr :: Name: ma¥os ::.
Sehr geil! Vielen dank für dieses sehr schöne Tutorial! Hat mir sehr geholfen...

.:: 08.11.11 - 16:06 Uhr :: Name: Vaxhid ::.
@Charly

Wäre nett, wenn du mir helfen könntest. Hier meine E-Mail: vaxhid.memeti@hotmail.com

Sobald ich das Login im Browser starte, die Eingaben mache und auf "Einloggen" klicke, erscheint dann die login.php-Datei im Browser mit Code. Ich habe aber alles 1:1 von dir übernommmen.. :S

.:: 08.11.11 - 16:02 Uhr :: Name: Vaxhid ::.
Hallo. Ich habe folgenden Problem:

Ich habe alles 1:1 übernommen und natürlich nur die MySQL-Login-Daten abgeändert. Wenn ich dann das Login starte und mich einlogge, erscheint dann die PHP-Seite mit folgendem Text:

----> 0) { echo "Der Login war erfolgreich.
"; $_SESSION["login"] = 1; $_SESSION["user"] = mysql_fetch_array($_res, MYSQL_ASSOC); $_sql = "UPDATE login_usernamen SET letzter_login=NOW() WHERE id=".$_SESSION["user"]["id"]; mysql_query($_sql); } else { echo "Die Logindaten sind nicht korrekt.
"; } } if ($_SESSION["login"] == 0) { include("login-formular.html"); mysql_close($link); exit; } echo "Hallo, Sie sind erfolgreich eingeloggt !
"; mysql_close($link); ?> <----

Auch verändert sich nichts in der DB. Und was bedeutet diese Meldung im Browser? Bitte helfen :-)

Gruss

.:: 19.10.11 - 15:10 Uhr :: Name: stonie1901 ::.
hey,
habe ein problem mit meinem Quelltext. Immer wenn ich es ausführen will steht das loginfeld da und alles andere vom quelltext ist auch da. Bitte helft mir.

stonie1901@gmail.com

.:: 20.09.11 - 07:44 Uhr :: Name: Quallon ::.
Halli hallo,

ich habe von php nicht so viel ahnung. nur mal so in der schule \\\'n bisschen gemacht. Nun habe ich probiert mich einzuloggen - mit 2 verschiedenen accs. Doch ich bekomme immer nur -Die logindaten sind nicht korrekt -

Könnt ihr mir helfen?

.:: 04.08.11 - 20:12 Uhr :: Name: konsti ::.
Tolles tut ;)

.:: 03.08.11 - 15:13 Uhr :: Name: Ricci ::.
Hallo,

Danke für dieses gute Tutorial. Bei mir hat alles geklappt nur ich habe ein Problem nach dem LOGIN. Denn es erscheint folgendes=

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /users/cmcrew/www/login.php:1) in /users/cmcrew/www/login.php on line 7

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/cmcrew/www/login.php:1) in /users/cmcrew/www/login.php on line 7
Der Login war erfolgreich.
Hallo, Sie sind erfolgreich eingeloggt !

Bin zwar eingeloggt aber warum kommt das obere ?????

Meine 2.Frage=

Wie kann ich die Benutzer nach dem LOGIN auf bestimmte Seiten weiterleiten??? Und wenn jemand nicht registriertes den LINK der Seite kennt, dass er sich erst einloggen muss.

Bin hier und per e-mail erreichbar: wwww.kleinericardo@web.de

Danke im voraus!

.:: 12.07.11 - 10:04 Uhr :: Name: neuling ::.
Hallo!

Erstmal vielen vielen Dank, diese Seite hat mir echt geholfen...
Ich habe allerdings noch ein kleines Problem...Wie das erste Problem auf dieser Seite ich kann mich nicht einloggen...
Ich nutze aber kein phpMyAdmin ich nutze alles über die MYSQL-Workbench...

Bitte um dringende Hilfe
Vielen Dank imv voraus!

.:: 11.07.11 - 21:14 Uhr :: Name: Flavio ::.
Als erstes will ich mich bei euch für die Super Anleitung bedanken.
Sehr einfach und gut formuliert.

Bei mir klappt alles bestens.
Doch ich möchte eine seite z.B inhalt.html laden, sobald das Login erfolgt ist. Wie kann ich sicher gehen, das ein User nur mit einem Login reinkommt? Sollte das so wie es oben steht klappen?

Besten Dank im Voraus

Gruss
Flavio

.:: 27.06.11 - 09:51 Uhr :: Name: Razer ::.
Kann man einstelen das Benutzer nach login auf benutzer vorgesehene seiten weitergeleitet werden???

MFG
Razer

.:: 26.06.11 - 16:05 Uhr :: Name: Lilly ::.
Hallo :) hab folgendes Problem, Login und Datenbank sind soweit fertig gestellt, allerdings kann ich meine Registrierung auf der Datenbank am Ende nicht absenden. Ich erhalte folgende Fehlermeldung:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in /users/albusdumbledore/www/register1.php on line 52

Zeile 52 sieht folgendermaßen aus:
(von zeile 45 bis 55) :
if ($register)
{
if ($benutzer AND $email AND $passwort AND $passwortw)
{
if ($passwort == $passwortw)
{
//connect to db
$comm = mysql_connect("localhost","root","") or die();
mysql_select_db("albusdumbledore") or die();

$sql = mysql_query("SELECT * FROM Hogwarts");
$row = mysql_fetch_assoc($sql);




bitte bitte helft mir


.:: 26.05.11 - 08:44 Uhr :: Name: Marduk ::.
Ich bekomme lediglich eine Fehlermeldung: Fatal error: Maximum function nesting level of '100' reached, aborting! on line 8 Und dort steht SESSION_START() Was nun?

.:: 16.03.11 - 19:47 Uhr :: Name: Eugi ::.
Hello Leute ich hab das mit der super Erklärung super geschafft..=)

nur bin ich mir so unsicher was php angeht das ich nicht einfach denken kann xD

Wo muss ich jetzt eintragen welche Page kommen soll wenn der Login passt ?
Bzw bekomm ich gar keine benachrichtigung ob user richtig oder falsch.. hab aber alles befolgt und die DB is connected.. ?!?!?!

danke!

.:: 12.03.11 - 15:18 Uhr :: Name: Phplooser ::.
Ich hab ein Problem es kommt immer dass es den Benutzernamen schon gibt!

Code:

<?php
$verbindung = mysql_connect(\"localhost\", \"********\" , \"************\")
or die(\"Verbindung zur Datenbank konnte nicht hergestellt werden\");

mysql_select_db(\"******\") or die (\"Datenbank konnte nicht ausgewählt werden\");

$username = $_POST[\"username\"];
$passwort = $_POST[\"passwort\"];
$passwort2 = $_POST[\"passwort2\"];

if($passwort != $passwort2 OR $username == \"\" OR $passwort == \"\")
{
echo \"Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\\\"Anmeldung.htm\\\">Zurück</a>\";
exit;
}
$passwort = md5($passwort);

$result = mysql_query(\"SELECT id FROM login WHERE username = \'$username\';\");
$menge = mysql_num_rows($result);

if($menge ==10000)
{
$eintrag = \"INSERT INTO Login (username, passwort) VALUES (\'$username\', \'$passwort\')\";
$eintragen = mysql_query($eintrag);

if($eintragen == true)
{
echo \"Benutzername <b>$username</b> wurde erstellt. <a href=\\\"login.html\\\">Login</a>\";
}
else
{
echo \"Fehler beim Speichern des Benutzernames. <a href=\\\"Anmeldung.htm\\\">Zurück</a>\";
}


}

else
{
echo \"Benutzername schon vorhanden. <a href=\\\"Anmeldung.htm\\\">Zurück</a>\";
}
?>

.:: 09.02.11 - 13:35 Uhr :: Name: Prashanna ::.
hi, ich finde deine tut wirklich lesenswert und lehrreich, hab da einige Fragen.
kann man anstelle von !empty auch isset() nehmen?
if (!empty($_POST["submit"]))

und bei escapen, kann man da auch htmlspecialchars() anstelle von mysql_real_escape_string nehmen?
Danke dir schon voraus.

.:: 29.01.11 - 19:29 Uhr :: Name: Charly ::.
Hallo,

also mit Mysql_query wird der Befehl an die Datenbank gesendet, man bekommt aber noch nichts zurück. Die Datenbank verarbeitet den Befehl. Mit Mysql_num_rows prüft man wieviele Ergebnisse es zu dem letzten Befehl gibt. Das kann 1 Ergebnis oder auch 1000 sein.

Wenn man bei einem Login prüft, ob der User mit diesem Usernamen & Passwort existiert kann man abfragen, ob man ein Ergebnis zurück bekommt. Wenn die Datenbank nichts gefunden hat, dann sind die Daten falsch.

.:: 29.01.11 - 11:27 Uhr :: Name: Simon ::.
hallo,

kann mir jemand genau erklären was der Befehl
$_res = mysql_query($_sql, $link);
$_anzahl = @mysql_num_rows($_res);

macht? Da steht zwar "prüfen ob der user in Datenbank, aber ich dachte das wird schon ein paar Zahlen vorher überprüft??? und zwar mit

$_sql = "SELECT * FROM login_usernamen WHERE
username='$_username' AND
passwort='$_passwort' AND
user_geloescht=0
LIMIT 1";


verstehe da den Unterschied nicht so recht :(
tut mir leid.

aber wäre dankbar für Hilfe.


.:: 14.01.11 - 12:07 Uhr :: Name: Serv ::.
Sehr gut beschrieben alles,

jedoch bekomme ich eine Fehlermeldung bei: $_res = mysql_query($_sql, $link); und zwar \\\"mysql_query(): 2 is not a valid MySQL-Link resource\\\"
ich hab soweit eigentlich schon alles überprüft...
Anmerkung Charly: Überprüfe bitte mal die Zugangsdaten zu Deiner MySQL Datenbank bzw den SQL Query Befehl.

.:: 13.01.11 - 16:53 Uhr :: Name: Julian ::.
Hi bei mir funktioniert das Script auch perfekt bis auf einen punkt wenn ich mich mit falschen daten versuche anzumelden kommen trotzdem die Sachen die der User nur sehen sollte wenn er angemeldet ist.

.:: 30.12.10 - 15:47 Uhr :: Name: K1771R ::.
ich chek das nicht ganz
braucht ich jetzt für jeden login dings so eine tabelle oder wie

.:: 15.12.10 - 18:17 Uhr :: Name: PHPAmateur ::.
Hallo,

ich habe ein Porblem, bei einigen Nutzern,
funktioniert der Login erst nach einem zweiten Versuch. Ich konnte bisher keinen Fehler erkennen. Es müsste irgendwas auf den Client-PCs zu tun haben, denn ich komme mit allen Nutzern rein. Vielleicht kann mir ja hier jemand einen Tipp geben.

Lieben Gruß und schöne Feirtage!

.:: 06.12.10 - 16:25 Uhr :: Name: Callavsg ::.
Hallo, ich finde schön, dass du dir so viel Mühe gegeben hast!! Klasse!!

Wie kann ich machen, dass ich auf einer zweiten Seite den Usernamen des aktuellen Users anzeigen kann?

Gruß
Callavsg
Anmerkung Charly: Hallo. Der Datenbankeintrag ist nach dem Login in $_SESSION["user"] gespeichert. Du kannst z.B. mit

echo $_SESSION["user"]["username"];

den Usernamen aus dem Datenbankinhalt ausgeben. Mit einem einfachen print_r($_SESSION["user"]); bekommst Du alle vorhandenen Felder angezeigt.

.:: 05.12.10 - 14:22 Uhr :: Name: Pascal ::.
Hallo, gute Arbeit gemacht! Funktioniert alles super!! =)

Nur habe ich eine Frage, ich weiß nicht wie ich den passenden Logout dazu programmiere.

Ich glaube, ich muss in der Datenbank die Login auf "0" setzten und die Session beenden, oder nicht?
Anmerkung Charly: Du kannst die gesamte Session mit session_destroy(); zerstören. Dann sind die gesammelten Daten auch weg und der User ist ausgeloggt. Alternativ könntest Du auch die Session am Leben lassen und einfach die Variablen wo Du den Login speicherst löschen.

Zum Beispiel mit
unset($_SESSION["login"]);
unset($_SESSION["user"]);

In der Datenbank müsstest Du nichts setzen, es sei denn Du möchtest irgendwo gespeichert haben wann der User sich ausgeloggt hat.

.:: 25.11.10 - 17:28 Uhr :: Name: crossi der gerne php html und ::.
verdammt ich hab eigentlich alles richtig gemacht aber in der website wird dann das angezeigt:
[deleted :-) ]
Anmerkung Charly: Wenn bei Dir im Internet Explorer der Quelltext vom PHP angezeigt wird, dann ist PHP nicht aktiv !

Entweder läuft es nicht zusammen mit dem Apachen oder es liegt an was anderem wie zum Beispiel der short open tags ! Dann kann man einen Quelltext z.B. nur mit <?php beginnen und nicht mit <?

Bitte prüfen ob PHP richtig läuft !

.:: 25.11.10 - 17:23 Uhr :: Name: crossi der gerne php html und ::.
danke für die hilfe charly ;D

mfg

.:: 21.11.10 - 15:36 Uhr :: Name: crossi der gerne php html und ::.
Ich hab das Problem das ich niht weiß was ich bei der Variable datenbank eintragne soll ?

mfg
Anmerkung Charly: Wenn Du den Apachen, PHP & SQL bei Dir auf dem Rechner laufen hast musst Du noch eine Datenbank erstellen.

Dafür rufst Du das PHPMyAdmin erstmal auf, um Deine Datenbank administrieren zu können. Direkt auf der Startseite ist ein Eingabefeld "Neue Datenbank anlegen". Dort legst Du den Namen für die Neue Datenbank fest, die Du hinterher in der Variable datenbank eintragen musst.

Datenbanken sind in PHPMyAdmin die, die auf der linken Seite vom Bildschirm beim starten angezeigt werden. Wählst Du eine Datenbank davon aus, dann siehst Du die Tabellen IN der Datenbank.

.:: 08.11.10 - 16:37 Uhr :: Name: Dominik ::.
Ich habe folgendes Problem. Ich habe mir zwar "PHP Login mit Datenbank Anbindung programmieren" durchgelesen und übernommen, aber ich kann den Benutzernamen und das Passwort nicht in meine SQL-Datenbank eingetragen.

Ich kann folgende Optionen beim Anlegen einer neuen Datenbank auswählen:
"Link wird gelöscht, daher bitte über E-Mail beantworten"

Habe ich dabei die falschen Einstellungen gewählt?

Über eine Antwort würde ich mich sehr freuen an DomiKraus@aol.com


Gruß Dominik

.:: 29.10.10 - 21:47 Uhr :: Name: gabush ::.
Super Arbeit :)

Den Eintrag vom User in der Session speichern funktioniert ne so recht. Es wird ein leeres Array zurück gegeben. Warum das oO?

.:: 28.10.10 - 22:32 Uhr :: Name: absacker ::.
Typen wie Du waren schon keine Hilfe, als ich mir alles noch selber draufgebracht habe.

Erklärs doch richtig oder lass es stecken.

Lob an den Macher hier. So hilft man Leuten.

ach ja @:lol Namen perfekt gewählt. Du Lachnummer.

.:: 28.10.10 - 17:01 Uhr :: Name: lol ::.
@User ueber mir, dir ist schon klar, dass PHP-Code auf dem Server ausgefuehrt wird? Wenn nicht, fehlen dir noch die Grundlagen der Grundlagen. Sry

.:: 26.10.10 - 23:29 Uhr :: Name: mr. thanks ::.
Hey,

vielen Dank für Deine Mühe. Funktioniert prächtig.

Frage: hast Du eventuell eine Idee, wie man an der Stelle:

$_db_host = "localhost";
$_db_datenbank = "datenbankname";
$_db_username = "mysql-username";
$_db_passwort = "mysql-passwort";

das passwort bischen sicherer macht - also nicht klar reinschreibt? da kann ja jeder sich in die datenbank einloggen.

Merci.

.:: 29.09.10 - 16:00 Uhr :: Name: Charly ::.
Hallo Momi,

natürlich denken wir an Anfänger. Genau deshalb habe ich Wochenlange Arbeit in diese Seite gesteckt :---)

Wenn Dir die Programmierung eines Logins zu schwierig erscheint rate ich Dir zu htaccess. Google mal nach "htaccess Passwortschutz". Damit kannst Du viel einfacher einen Login machen. Wenn man das Programmieren nicht wirklich lernen will ist es die bessere Alternative.

Gruß
Charly

.:: 28.09.10 - 21:34 Uhr :: Name: momi ::.
liebe nette menschen!
was hilft mir alle,mit diese erklärungen und scripten ,wenn ich nicht mit kommen kann.
bitte hilft mir das ich auch mit kommen kann.
ich brauche ganz eifach ein php login,das ich meine user auf meine hp anbieten kann.
noch mal bitte denkt ihr an newbis.
ich werde mich freuen wenn einer oder andere mir hilft das ich selbst begreifen kann wie alles funkt.
danke in voraus
momi

.:: 11.09.10 - 11:53 Uhr :: Name: Charly ::.
@Frischling: kommt drauf an welche Fehlermeldung du bekommst ?

@Michel: wenn der User eingeloggt ist würde ich als erstes den Loginzustand in der Session speichern. Damit man immer wieder identifizieren kann dass jemand eingeloggt ist ohne nach jedem Browserklick neu eine Passwortabfrage aufpoppen zu lassen.

Ich will hier keine fertigen Skripte programmieren und verteilen - wo hakt es denn ?

.:: 01.09.10 - 13:15 Uhr :: Name: Michel ::.
Hallo,

wollte mir eine neue seite erstellen wo ich alle datendie in der DB gespeichert wrden wirder ausgeben kann.. krieg das nich hin.. die daten sollen aber nur von dem eingeloggten benutzer sein.
wäre nett wenn ir einer helfen könnte

info@derbaudealer.de
(dort kann von mir aus der code hingeschickt werden)

mfg

.:: 23.08.10 - 22:51 Uhr :: Name: Frischling ::.
Guten Abend,
ich bin da absoluter Frischling in Sachen php,
wie kann ich da dann weitermachen am Ende von dem Script ?
echo "Hallo, Sie sind erfolgreich eingeloggt !<br>";


Wenn ich da Code eingebe bekomme ich eine Fehlermeldung

Danke für Eure Hilfe

.:: 15.07.10 - 10:35 Uhr :: Name: Charly ::.
@Roman: ist ja bereits per E-Mail geklärt

@Megaman: Beim Einfügen gibt es das nicht ? Einfach sonst mal schauen unter welcher Bezeichnung sich das auto_increment befindet. Ich habe BPlaced noch nie benutzt - aber auch die setzen phpmyadmin ein ? Je nach Version kann das PHPMyAdmin etwas anders ausschauen.

Gruß
Charly

.:: 10.07.10 - 18:03 Uhr :: Name: Roman ::.
Hallo, bei mir kommt immer der Fehler:

Access denied for user 'db_benutzername'@'localhost' to database 'tabelle in der user gespeichert sind'

Den "db_benutzername" habe ich natürlich richtig eingestellt, habe Ihn nur hier verändert, wegen der Sicherheit!

.:: 10.07.10 - 13:46 Uhr :: Name: Megaman ::.
In meiner My sql datenbank von bplaced steht nirgendwo extras

.:: 23.05.10 - 11:51 Uhr :: Name: Charly ::.
Sorry für die späte Antwort:

Zu Mike:
Wenn Du beim var_dump ein NULL bekommst, dann würde ich die Zugangsdaten zur Datenbank mal checken. Da stimmt irgendwas nicht.

Zu Simon:
Wenn du die Tabelle login_usernamen mit PHPMyAdmin erstellt hast wie ganz oben erklärt, dann kannst Du in PHPMyAdmin über \"Einfügen\" Datensätze einfügen. Dort wählst Du beim Einfügen dann den Usernamen und das Passwort aus. Das Programm sucht ja in dieser Tabelle nach dem passenden Datensatz - wenn einer gefunden wird, dann ist der Login geglückt.

Gruß
Charly

.:: 16.04.10 - 15:35 Uhr :: Name: Simon ::.
Wie kann ich den Benutzername schreiben die einloggen beispiel wie schpickmich oder schlervz das versuch ofters infomiere unbedingt bei mir an simon.s6@web.de

.:: 08.04.10 - 18:41 Uhr :: Name: Raphi ::.
Sehr gut! Hat nach den Anpassungen super funktioniert!

.:: 04.04.10 - 20:10 Uhr :: Name: Mike ::.
Ich hab vor mysql_close($link); ein var-dump(($link); eingefügt und als Ergebniss ein NULL erhalten

.:: 04.04.10 - 16:45 Uhr :: Name: Mike ::.
Ich hab das ganze 1:1 kopiert und abgeändert. Jetzt bekomme ich beim 1.Starten zwar das Formular zum Einloggen, aber auch folgende Fehlermeldung direkt darunter:Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in /www/htdocs/w00c3e30/portal/index.php on line 72

Die entsprechende Zeile steht in:
# Ist der User eingeloggt ???
if ($_SESSION["login"] == 0)
{
# ist nicht eingeloggt, also Formular anzeigen, die Datenbank
# schliessen und das Programm beenden
include("sicher/login-formular.html");
mysql_close($link);
exit;
}
und ist folgende zeile:mysql_close($link); In der Datei index.php wird der Wert $link nirgends festgelegt, aber bevor man sich nicht einloggt über login.pgp hat diese Variabel keinen Wert und die entsprechende DB kann nicht geschlossen werden.

.:: 31.03.10 - 18:06 Uhr :: Name: Charly ::.
Das ist im Prinzip richtig, weil hier nur erklärt wurde wie man den Login macht. Die Zugangsdaten werden alle in der Datenbank abgespeichert. Benutzt du PHPMyAdmin ? Dann könntest du damit zum Beispiel die Tabelle die du erstellt hast auswählen und mit EINFÜGEN einen neuen Benutzer mit Paßwort anlegen. Mit diesem kannst Du dich dann einloggen.

.:: 31.03.10 - 17:29 Uhr :: Name: Nico ::.
Also das soll eig. kein Kommi werden
also habe erfolgreich alles gemacht aber man kan sich ja garnicht einloggen da man sich nürgentz eintragen kann!!! bitte helfen email: gilbi12@web.de









Content
 
  Bottom Design  


PepperTools.de Software Download | Software Shop
www.imilkowski.eu - Software Programmierung und Webdesign


 


Persönliche Empfehlung
Mit Wix.com eine kostenlose Homepage erstellen ? Einfach, schnell und ohne Vorkenntnisse.