hotti: PHP MySql Passwortschutz

Beitrag lesen

hi,

Falls Du nochmal reinschaust...

Ich habe das halbe Netz abgesucht und leider von mysql bzw. php nicht viel Ahnung. Mit Hilfe von einem Tutorial bekomm ich das aber schon hin. Leider hab ich bislang nix in der Richtung gefunden. Kann mir jemand helfen?

Das Erste, was Du brauchst, ist eine Session, die am Einfachsten über einen Cookie zu realisieren ist: Im Cookie ist ein Schlüssel hinterlegt, über den der Serverprozess, der die Seiten ausgibt, den Browser identifizieren kann. D.h., solange der Benutzer den Browser nicht schließt und ein neues Browserfenster aufmacht, ist der Schlüssel über eine Browsersitzung immer dergleiche. In dieser 'Ausbaustufe' ist der SessionKey (Session ID, SID) nur im Cookie gespeichert, dazu brauchst Du keine Datenbank oder Datei.

Die zweite Mindestanforderung ist eine Datenquelle, in der Benutzername, Passwort und Gruppenzugehörigkeit hinterlegt ist und eine Schnittstelle dazu. Selbstverständlich sind die Passworte nicht im Klartext gespeichert. Hier musst Du schauen, was in Frage kommt, die Möglichkeiten sind sehr vielfältig, das können Dateien sein, Directories, dedizierte Server(z.B. Radius) oder Datenbanken und natürlich auch MySQL.

Die dritte Anforderung beschreibt den Speicherort, in welchem die Login's gespeichert sind, Benutzername, Zeitpunkt der Anmeldung und Gruppenzugehörigkeit. Kann Datei sein, MySQL.... hängt von den Gegebenheiten ab.

Dann schaust Du in Deine Projektverwaltung, die Seiten müssen einen Flag (Tag, Attribut) bekommen, was die authorizierte Verwendung betrifft. Das kann numerisch sein (Level) oder der Gruppenname. Beispiel für Level:

URL         Level
/foo            0   darf jeder sehen aber keine Parameter
/foo/bar        1   darf jeder sehen und Post/Get Parameter senden
/maint/admin    2   darf nur, wer in Level 2 angemeldet ist

Der Vorteil in der Verwendung von Levels gegenüber Gruppennamen besteht darin, das im Programm nur mit Zahlen operiert wird. Andererseits sind Gruppennamen besser zu merken und zu lesen.

Hast Du das, kommt der Loginprozess. Das kann ein eigenes Script sein oder der Prozess ist voll integriert in die gesamte Anwendung. Kunde gibt Name und Passwort ein und der Prozess liefert bei Erfolg die Gruppenzugehörigkeit (Level) zurück. Das wiederum wird zusammen mit dem SessionKey (SID) am Speicherort "Logins" eingetragen mit der SID als Schlüssel.

Die Anwemdung, die ja die SID kennt, hat somit jederzeit über eine Browsersitzung die Kontrolle darüber, wer mit welchem Level angemeldert ist und kann die Seite entweder native ausliefern oder mit einem anderen Inhalt.

Andere Möglichkeiten gibts bestimmt, z.B. derart, dass eine Session erst mit einer erfolgreichen Anmeldung aufgebaut wird.

Viel Erfolg,
Hotti