Warning: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php on line 58
Login mit Hilfe von PHP und mySQL PHP Tutorials nicht nur für Anfänger php-resource.de

php-resource.de

PHP Tutorial: Login mit Hilfe von PHP und mySQL

Dieses Tutorial soll die Grundzüge eines Login-Systems auf der Basis von PHP und mySQL unter Zuhilfenahme von Sessions klären.

|27.07.2003 | razorblade | 1185019 | KAT : PHP | | Kommentare 2


6

6

Das Ausloggen

Das Ausloggen eines Benutzers wird noch kürzer. Den unten stehenden Code speichern wir unter logout.php ab.

<?php
session_start
();
include 
'sessionhelpers.inc.php';
echo 
'Sie sind ';
if (!
logged_in())
    echo 
'nicht ';
echo 
'eingeloggt.<p />';
logout();
echo 
'Sie sind ';
if (!
logged_in())
    echo 
'nicht ';
echo 
'eingeloggt.< p/>';
echo 
'<a href="login.php">Einloggen</a>';
?>

Wie gehabt wird die Session gestartet. Danach wird wieder die Datei sessionhelpers.inc.php eingebunden, da sie die Funktion logout() beinhaltet.

Die Datei sessionhelpers.inc.php

Jetzt kommen wir endlich zu der Datei, die die Funktionalität, die wir schon mehrmals genutzt haben, beinhaltet.

Natürlich könnte man die oben verwendeten Abfragen auf jeder Seite verwenden, vor allem wenn wir sehen, wie wenig Codezeilen sie umfassen, wird sich das auch der ein oder andere fragen, daher hier gleich die Antwort:

Wenn ich die verwendeten Routinen nicht an jeder Stelle, an der sie verwendet werden, sondern nur einmal an einer zentralen Stelle einbinde, hast das mindestens diese 3 Vorteile:

  1. Sollte sich etwas ändern, muss die Änderung nur an der einen zentralen Stelle vorgenommen werden.
    So wird die Gefahr des Übersehens und des Vertippens bei einem Auftreten minimiert.
  2. Die Funktionalität ist so leichter erweiterbar, da nur eine Stelle geändert werden muss.
  3. Wird die Login-Funktionalität auch an anderer Stelle benötigt, müssen die Routinen nicht mühsam aus mehreren Skripten zusammengesucht werden.
<?php
function connect()
{
    
$con=mysql_connect('servername','benutzer','passwort') or die(mysql_error());
    
mysql_select_db('datenbank, die die Benutzertabelle enthält',$con) or die(mysql_error());
}

function 
check_user($name$pass)
{
    
$sql="SELECT UserId
    FROM users
    WHERE UserName='"
.$name."' AND UserPass=MD5('".$pass."')
    LIMIT 1"
;
    
$result=mysql_query($sql) or die(mysql_error());
    if (
mysql_num_rows($result)==1)
    {
        
$user=mysql_fetch_assoc($result);
        return 
$user['UserId'];
    }
    else
        return 
false;
}

function 
login($userid)
{
    
$sql="UPDATE users
    SET UserSession='"
.session_id()."'
    WHERE UserId="
.$userid;
    
mysql_query($sql);
}

function 
logged_in()
{
    
$sql="SELECT UserId
    FROM users
    WHERE UserSession='"
.session_id()."'
    LIMIT 1"
;
    
$result=mysql_query($sql);
      return (
mysql_num_rows($result)==1);
}

function 
logout()
{
    
$sql="UPDATE users
    SET UserSession=NULL
    WHERE UserSession='"
.session_id()."'";
    
mysql_query($sql);
}

connect();
?>

Jetzt fehlt nur noch die Erklärung:

Es gibt, wie man sieht, fünf Funktionen in der Datei.

connect()

Diese Funktion stellt eine Verbindung zum SQL-Server her.
Die Parameter servername, benutzer und passwort sind natürlich anzupassen.

check_user($name, $pass)

Diese Funktion prüft die im Formular (oder ggf. im Cookie) eingetragenen Werte und liefert entweder die eindeutige ID des Benutzers zurück, oder false, falls es keinen Datensatz gibt, der die Bedingung erfüllt.

Diese Abfrage heißt übersetzt soviel wie:

Liefere (SELECT) den Wert der Spalte UserID
aus der Tabelle (FROM) users bei der (WHERE) der Wert in der Spalt UserName und der Wert in der Spalte UserMail mit den Formulareingaben übereinstimmen.

Um die Geschwindigkeit etwas zu steigern (es ist aber auch so schon schnell), sagen wir, dass nach einem Datensatz (LIMIT 1) aufgehört werden soll mit der Suche.

login($userid)

Diese Funktion loggt einen Benutzer in unser System ein. Welcher Benutzer eingeloggt werden soll, wird über den Parameter $userid angegeben.
Die ganze Hexerei wird erledigt, indem schlicht und ergreifend die Session-ID (die eindeutig ist) in die Spalte UserSession des Benutzers geschrieben wird.

logged_in()

Diese Funktion prüft, ob der Benutzer eingeloggt ist.
Zu diesem Zweck wird abgefragt, wie viele Einträge in der Benutzertabelle mit der aktuellen Session-ID in der Spalte UserSession vorhanden sind. Wird ein Eintrag gefunden, ist der Benutzer eingeloggt.

logout()

Diese Funktion loggt den Benutzer wieder aus, indem in die Spalte UserSession der Wert NULL geschrieben wird.

Der Schluss

So, das war's auch schon.

Ich hoffe, es war einigermaßen verständlich geschrieben und hat euch weitergeholfen.

Bei Fragen zu dem Tutorial sehen wir uns im Forum.

mrhappiness

Navigation -> Seitenanzahl : (6)

  «  1 2 3 4 5 6  
Kommentare zum Tutorial
Tutorial kommentieren
 
08.09.2012 10:11:10 Super Tutorial, vielen Dank für die Mühe! Könnte man den Teil mit dem Verschlü ...
15.03.2010 06:39:54 Hey superklasse dein Tutorial! Da steht alles drin was man über PHP als Einsteiger mit progr ...

Alle Kommentare anzeigen ...
 
Über den Autor
razorblade

razorblade

Status
Premium Mitglied

Beruf
Unbekannt

Mitglied seit:
30.04.2009

letzte Aktivität
04.06.2009

 

Tutorial bewerten

Hat Ihnen dieses Tutorial gefallen? Dann bewerten Sie es jetzt! Fünf Sterne bedeutet "Sehr gut", ein Stern "Unzureichend".



 

aktuelle Artikel

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Neu | Berni

Wissensbestand in Unternehmen

Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Neu | Berni