php-resource.de

PHP Tutorial: Login/Memberbereich mit Sessions

Adminmodul für das eigene Gästebuch, Controlpanel eines Forum oder einfach nur für ein geschützer Bereich.

|22.08.2002 | webmaster1@ | 32298 | KAT : PHP | | Kommentare 1


3

3

<?php
$zeileholen 
mysql_fetch_array($result,MYSQL_ASSOC); 
mysql_close($conn);
?>

So, in $zeileholen wird mittels mysql_fetch_array das Ergebnis des Querys eingelesen. MYSQL_ASSOC signalisiert php dass $zeileholen ein assoziatives Array werden soll. Dies ist eigentlich am besten handlebar, da $zeileholen[„pass“] dann den Wert von pass bekommt usw.. Dass ist übersichtlicher wie $zeileholen[1] zB. , denn dann ist ist die Reihenfolge so wie man es im SELECT Statement angibt, ändert man die Reihenfolge oder fügt etwas neues ein kann das Script ganz schön ins schleudern kommen.

Mit mysql_close($conn) wird dann die Verbindung wieder abgebaut. Sie wird nichtmehr gebraucht. Dieser Befehl muss eigentlich nicht angegeben werden weil nach beenden des Scripts sowieso alle Verbindungen gekappt werden. Es ist aber von der Performance her besser, gerade wenn man viele Verbindungen benutzt und dazu noch einen lahmen Server hat.

<?php
if (!$zeileholen)
{
die (
"Sorry, aber dieser Name ist leider nicht bekannt !");
}
?>

So hier haben wir wieder die ‚negierte’ if Abfrage, denn auch mysql_fetch_array gibt ein FALSE zurück wenn kein Datensatz gefunden wurde. Naja und wenn jemand nicht in der Datenbank steht dann geht’s auch nicht weiter, also die(..).

<?php
if ($zeileholen["pass"] <> $passwort)
{
die (
"Sorry, aber dieses Passwort passt nicht zum Usernamen !");
}
?>

So, hier wird jetzt abgefragt ob das Passwort aus der Datenbank mit dem $passwort übereinstimmt, bzw. es wird wieder abgefragt ob es nicht gleich ist, warum das haben wir weiter oben ja schon besprochen. Hier sieht man auch schön wie übersichtlich es ist wenn da steht $zeileholen[„pass“]. Ich meine, der der das Script geschrieben hat, erkennt auch $zeileholen[1] aber einer der das Script vorher nicht kannte, sieht auf einen Blick was aus der Datenbank kommt, darauf sollte man auch achten, man ist nicht allein auf der Programmiererwelt.

<?$level $zeileholen["level"];
?>

Hier wird jetzt der Wert level, aus der DB, in die Variable $level gespeichert, dies mache ich damit ich es als Sessionvariable registrieren kann.

<?php
session_register
('username');
session_register('level');
?>

So, hier werden jetzt die Variablen $username und $level als Sessionvariablen registriert, sie stehen jetzt in allen weiteren Scripten zur verfügung welche eine Session mit session_start() starten bzw. aufrufen. Hier liegt ein kleine Falle, und zwar ist beim session_register Befehl darauf zu achten dass das $ im Variablenname wegfällt.

<?php
header 
("Location:admin.php");
?>
?>

Und zu guter letzt wird mittels des header Befehls zum Hauptscript admin.php weitergeleitet. Für den header Befehl gibt dasselbe wie für session_start , es darf kein HTML Code davor stehen, gegenseit ‚beissen’ sie sich nicht und von anderen php Befehlen lassen sie sich auchnicht ‚beissen’ solange kein HTML Code erzeugt wird, zB. mit echo !

admin.php

<?php
session_start
();
?>

Wieder muss die Session gestartet werden, der Server schaut jetzt nach ob der User schonmal da war.

<html>
<head>
<title>Adminzone</title>
</head>
<body>

Nachdem, die Session gestartet wurde darf auch HTML zum Einsatz kommen.

<?php
if (!session_is_registered('username'))
{
die (
"Sorry, aber sie haben sich wohl nicht eigeloggt, oder ?");
}
?>

Mit session_is_registered kann man überprüfen ob Sessionvariablen gespeichert sind. Ist in etwa dasselbe wie isset für normale Variablen. Wiedermal kommt die ‚negierte’ if Abfrage zum Einsatz, wenn es keine gespeicherte Sessionvariable gibt dann hat man sich ja auchnicht eingeloggt, also hat man auch keine Rechte. Ansonsten ....

<?php
echo "Hi ".$username." !";
echo 
"<br> Dein Userlevel ist ".$level;
?>

... wird man herein gebeten. Der Userlevel hat hier eigentlich keine Verwendung, er ist eigentlich nur als beispiel eingebaut, zB. um bestimmte Funktionen zur Verfügung zu stellen. Mit Level 1 wird dies ausgegeben, mit Level 2 das usw.

<?php
?>
<br>
<input type="button" name="logout" value="logout" onClick="location.href='logout.php'">
</body>
</html>

Nun noch ein Button, weil ausloggen sollte man sich aus Sicherheitsgründen schon ! Nun kommt noch das Auslogscript und wir sind durch
logout.php

<?php
session_start
();
Session da ?
session_destroy();
?>

Dann müssen wir sie löschen ;)

<?php
header
("Location:login.html");
?>

Und dann gehen wir wieder weiter zum login-Screen zurück und unsere Rundreise ist beendet. Diese Scripts haben jetzt noch keinen richtigen Nutzen, allerdings muss man eigentlich nur die admin.php erweitern und über die $level Variable kann man schon jede Menge Individualität einbauen. Ich hoffe das Tutorial ist zu gebrauchen, gerne nehme ich Verbesserungen und comments entgegen.

Mit freundlichen Grüßen
Joel
Navigation -> Seitenanzahl : (3)

  «  1 2 3  
Kommentare zum Tutorial
Tutorial kommentieren
 
27.10.2009 14:40:06 Hallo kann mir jemand helfen? ich habe alles so schritt für schritt gemacht wie in diesem Tu ...

Alle Kommentare anzeigen ...
 
Über den Autor
webmaster1@

webmaster1@

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

Die RIGID-FLEX-Technologie

Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Neu | Berni

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