Passwortgeschützter Bereich
Daniel
- php
Hi,
ich hab ein Problem. Ich möchte gerne einen dynamisch, passwortgeschützten Bereich erstellen. Soll heißen: Ich habe eine MySQL Datenbank, in der ich meine Mitglieder eintrage bzw. eintragen lasse <-- funktioniert schon. In dieser Datenbank speichere ich unter anderem Benutzername und Passwort. Ich möchte nun, das jeder registrierte User in die geschützten Bereiche kann, ohne dass ich großartig eine .htaccess oder .htpasswd Datei zu editieren. Er soll also bei der Registrierung auch in die Passwortdatei eingetragen werden.
Das ganze hab ich bis jetzt in PHP gemacht und würde das auch so gerne weiterführen.
Eine andere Sache ist noch, das der User eingeloggt bleiben soll. Er soll sich einmal zu beginn der session einloggen, und dann soll gespeichert werden, das er sich schonmal eingeloggt hat (Nur solange er sich auf meiner HP rumtreibt). Ich hab schon angefangen ein wenig mit Session_ids runzuprobieren, aber ich verstehe nicht, wie ich sowas ralisieren kann, bzw wie ich das speicher, das er schon eingeloggt ist.
Soweit erstmal
und schonmal danke im Voraus..
Gruß Dnaiel
Hallo,
Du mußt beim einloggen Benutzernamen, Passwort, Userstatus etc., alles was du bei der Session gespeichert haben möchtest mit
session_register () registrieren und mit den Daten belegen. z.B.:
session_register("SESSION_Passwort") = $passwort
Dann mußt du dies auf den relevanten Seiten nur mit den in der Datenbank eingetragenen Seiten vergleichen ...
MfG
Wolfgang
hi,
session_register("SESSION_Passwort") = $passwort
session_register ist veraltet, bei einer aktuellen PHP-version/RG off sollte das superglobale array $_SESSION verwendet werden.
gruß,
wahsaga
»» session_register ist veraltet, bei einer aktuellen PHP-version/RG off sollte das superglobale array $_SESSION verwendet werden.
was heißt veraltet? seit php 5?
Hallo Wolfgang,
»» session_register ist veraltet, bei einer aktuellen PHP-version/RG off sollte das superglobale array $_SESSION verwendet werden.
was heißt veraltet? seit php 5?
Nein, das heißt, dass seit PHP 4.2.0 register_globals auf off steht und seit PHP 4.1.0 sogar schon die angesprochene(n) Superglobals verfügbar sind (also seit knapp drei Jahren). Seit diesen Versionen sollte man auch auf die neuen, besseren Varianten zurückgreifen.
Dies kannst du auf http://de.php.net/register_globalsff. nachlesen.
Grüße
David
Joe danke !!!
Wolfgang
Hmm.. also da waren jetzt ja schon schön viele hinweise und anregungen dabei, aber leider noch keine Antwort auf die Fragem wie ich eine dynamische .htpasswd Datei erstellen kann. Da ich ja nicht permanent diese Datei Warten und neu anlegen kann (hab einfach nicht die Zeit dazu) wollte ich sowas gerne dynamisch machen.. also wenn sich jemand registriert, soll er mit benutzernamen und passwort auch in diese .htpasswd eingetragen werden.
Ich hab jetzt noch nicht weiter Programmiert, aber ich werde das mal mit dem $session_register versuchen, das erscheint mir immernoch am plausiebelsten..
Aber schon mal vielen Dank für die viele Unterstützung !!
MfG
Daniel
Hello,
Hmm.. also da waren jetzt ja schon schön viele hinweise und anregungen dabei, aber leider noch keine Antwort auf die Fragem wie ich eine dynamische .htpasswd Datei erstellen kann.
Was steht denn drin in einer solchen Datei? Hast Du schonmal reingeschaut?
Bist Du Dir der Gefahren bewusst, die Du eingehst, wenn Du dem wwwrun (oder wie der PHP-Interpreter sich nennt) Schreibrechte auf eine .htpasswd-Datei gibst?
Findet das bei einem Provider auf dem Server statt, oder hast Du selber Zugriff auf die Konfiguration? Meistens sidn die Server bezüglich open_basedir, safe_mode, tmp-Verzeichnis etc schlampig eingerichtet. Da kann dann jeder überall ran.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hello,
bist Du schon weiter gekommen?
Was ist eigentlich ein passwortgeschützter Bereich? Ist das Speicherplatz, den man nur nutzen darf, wenn man die berechtigung hat, oder sind es HTML-Seiten, die man nur einsehen kann als registrierter User, oder sind es "Ressourcen", dei einem nur als aktuell Berechtigter einsehen kann?
Ist doch eigentlich ganz egal, wo der Stuff herkommt und wohin er geht, oder? Geht den User doch nichts an, wie Du das im Hintergrund handhabst.
Da ist die Datenbank natürlich der beste Aufbewahrungsort für die berechtigugnen und auch für den "Stuff". Blobs (also Bilder und andere große Dateien) sollte man aber nicht direkt in der DB ablegen, sondern nur Ihren Aufbewahrungsort dort abspeichern.
Und das wichtigste, was man schützen muss, sind nicht die Daten als solche, sondern die Zugriffsfunktionen dafür. Ohen Methoden geht nämlich nix. und wenn Du für jeden User prüfst, welche Methode er nutzen darf, lösen sich Deine Probleme Wohlgefallen auf.
Die Session ist übrigens nicht die einfachste und beste Methode düe die Benutzeridentifikation. da werden ganz oft und immer wieder dieselben Fehler gemacht. Insbesondere, wenn es unterschiedliche Berechtigungsstufen gibt.
Am einfachsten ist es mit "Auth401" anzufangen und mit einem Kernscript (index.php). Dieses prüft bei jedem request die beiden Credentials $_SERVER['PHP_AUTH_USER'] und $_SERVER['PHP_AUTH_PW'] gegebn die Datenbank. Dort darf es nur genau einen User mit der Kombination geben und über die Abfrage (Join von zwei Tabellen) ermittelt man dann, welche Scripte der User benutzen darf. Die werden ihm dann als Menupunkte angeboten. Und wenn er mittels Post eines davon auswählt, und man wieder die Berechtigung geprüft hat, ob er es tatsächlich verwenden darf, wird es hinzugeladen und ausgeführt.
Ich hoffe, ich konnte Dir so einen kleinen Einstieg in die Denkweise von "Berechtigungen" geben.
Und nochmal: Sessions haben NICHTS mit berechtigungen zu tun, und ob ein User "angemeldet ist" hat nichts in der Session verloren. Sessions sind bei den meisten Providereinrichtungen von PHP entführbar. Wie das geht, erzähle ich hier aber nicht.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom