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@ | 32577 | KAT : PHP | | Kommentare 1


2

3

Wie man an der action der Form erkennen kann geht es bei verify.php weiter, dort wird jetzt die Session gestartet und die Daten überprüft und als Sessionvariablen gespeichert.
verify.php

<?php
session_start
();
?>

So, hier wird die Session gestartet, es ist wichtig das kein HTML Code davor steht. Es gibt auch behauptungen dass garkein Code davor stehen darf, was allerdings quatsch ist. Vor dem session_start darf nur kein Code stehen der irgendwie im Browser angezeigt wird.

<?php
include('var.inc.php');
?>

Hier werden die ‚globalen’ Variablen included. Dies macht Sinn bei grösseren Projekten bei denen bestimmte Daten von vielen Scripten benötigt werden, zB. Die Daten zur Konnektierung zur Datenbank, durch das includen hat man den Vorteil dass man die Daten nur einmal verändern muss, anstatt das man jedes Script ändern müsste.

<?php
if ((!isset($username)) OR (!isset($passwort)))
{
die (
"Sorry, aber ohne Name bzw. Passwort geht hier nichts !");
}
?>

Hier wird überprüft ob die Variablen $username und $passwort existieren. Ist dies nicht der Fall dann bricht das Script ab, denn wo nix da ist braucht man auch nix zu überprüfen. Man sollte dies eigentlich mit allen Variablen tun die von einem anderen Script erwartet werden denn es kann zu unangenehmen Fehlern kommen wenn das Script auf Variablen zugreifen will die nicht existieren, das sieht nicht schön aus.

<?php
$conn 
= @mysql_connect($dbserver,$bduser,$dbpass);
if (!
$conn)
{
die (
"Sorry, Verbindungsversuch zur Datenbank ist fehlgeschlagen !");
}
?>

Hier wird eine Verbindung zum MySQL-Server aufgebaut, das @ Zeichen unterdrückt eine Fehlermeldung wenn der Versuch fehlschlägt, dies geschieht wieder aus Schönheitsgründen, naja und dann wird geschaut ob die Verbindung zustande kam. if(!$conn) ist wieder so ein kleiner Kniff, denn eigentlich will man ja wissen ob es geklappt hat, aber es sinnvoller zu schaun ob es nicht geklappt hat, denn dann brechen wir das Script ab und müssen nur einen Befehl in die if-Klammer setzen, ansonsten müssten wir alle weiteren Befehle einklammern. Das ! Zeichen negiert den Ausdruck $conn, falls dieser also FALSE ist dann wird der if Ausdruck TRUE, denn Minus mal Minus ist ja auch Plus.
Es werden hier viele logische Elemente benutzt die es lohnt sich vor Augen zu führen da man sich dadurch eine Menge an Programmierarbeit sparen kann. Ausgenutzt wird das mysql_connect ein FALSE zurück gibt wenn die Verbindung nicht zustandekommt. Da aber der if Befehl überprüft ob der Ausdruck TRUE ist müssen wir ihn negieren , also Fragen wir „WENN (if) NICHT (!) VERBINDUNG ($conn) DANN TUE DIES (die)“. Es macht öfters sinn sich die Programmzeilen, gerade bei Abfragen, in ‚Deutsch’ zu übersetzten, dann wird der es manchmal einfachen, besonders bei komplexeren logischen Ausdrücken.

<?php
mysql_select_db
($dbname,$conn);
?>

Hier wird dann die Datenbank ausgewählt, dieser Befehl ist nötig wenn mehrere Datenbanken auf den DB-Server existieren. Damit wird die erstellte Verbindung $conn mit der Datenbank $dbname ‚verbunden’. Es kann ja durchaus sein dass man mehrere Verbindungen zu verschiednen Datenbanken aufbaut.

<?php
$query 
"SELECT pass, level FROM zugriff WHERE name = '".$username."'";
$result mysql_query($query,$conn);
?>

Diese beiden Zeilen senden eine SQL Abfrage an die Datenbank. Ich mache das immer so das ich eine Variable $query erzeuge die dann im mysql_query Befehl abgesendet wird, theoretisch kann man auch alles direkt eintragen, das würde dann so aussehen :

<?php
$result 
mysql_query("SELECT pass, level FROM zugriff WHERE name = '$username'",$conn);
?>

Ich finde allerdings das dadurch die Übersicht verloren geht, ausserdem erstrecken sich kompliziertere Abfragen oft über mehrere Zeilen und dann sieht es wirklich nimmer gut aus ! Die SQL Abfrage macht folgendes sie ruft aus der Datenbank zugriff die Werte pass und level ab die in den Datensatz stehen wo die Spalte name mit $username gleich ist. SQL ist eigentlich ein gebrochenes Englisch und man kann sich dies zunutze machen wenn man mal wieder bei einem Query nicht weiterkommt. Ich übersetzte mir den Kram dann ins deutsche, hier wäre es ungefähr so :

„LIES (SELECT) pass und level AUS DER DATENBANK (FROM) zugriff WO (WHERE) name GLEICH (=) ‚$username’ IST“.

So kann man sich das schön herleiten finde ich.

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