Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] In Benutzeraccount einloggen (https://www.delphipraxis.net/87525-%5Bphp%5D-benutzeraccount-einloggen.html)

malo 1. Mär 2007 19:22


[PHP] In Benutzeraccount einloggen
 
Hi!

Ich hab ein kleines Problem und stehe grad irgendwie aufm Schlauch...

Ich will auf einer Webseite einen Dienst anbieten, in den man sich mithilfe eines Benutzeraccounts einloggen muss. Das Anlegen/Verwalten der Benutzer ist nicht das Problem, sondern vor allem das Anmelden.

Ich dachte bisher immer, ich müsste eine Session-ID erstellen, die in der Datenbank und in einem Cookie abspeichern und bei jedem Seitenaufruf SID und Cookies vergleichen (evtl. noch Uhrzeit vergleichen).

Nur wie erstelle ich am besten eine Session-ID?

Dafür hab ich dann Google angeschmissen und hab mir auch einiges über Sessions in PHP durchgelesen. Doch da steht nirgendwo, dass man irgendwas in einer Datenbank speichern muss. Im Grunde steht da gar nichts, wie irgendwas gespeichert wird.

Wie gesagt, irgendwie steh ich da grad auf'm Schlauch. Kann ich die PHP-Session-Funktionen anwenden und erhalte dadurch eine SID, die auf dem Server bereits gespeichert ist, oder muss ich das irgendwie in einer Datenbank noch abspeichern?

mfg
malo

mkinzler 1. Mär 2007 19:28

Re: [PHP] In Benutzeraccount einloggen
 
Die Sessions werden Serverseitig in dateien abgelegt. Ich würde dir den Einsatz von PEAR/Auth vorschlagen.

Sebioff 1. Mär 2007 19:31

Re: [PHP] In Benutzeraccount einloggen
 
Sessions:
eigentlich musst du nur session_start(); aufrufen; der Server generiert dann eine session-ID, und sollte die sich auch solange merken, bis du den Browser schließt/die Seite verlässt.

Dann könntest du in der Session nach dem Login z.b. speichern, zu welchem Account diese Session zugeordnet ist. Da Sessions serverseitig verwaltet werden sollte das eigentlich sicher sein.

malo 1. Mär 2007 19:35

Re: [PHP] In Benutzeraccount einloggen
 
Dann ist es nicht notwendig, die Session in der Datenbank abzulegen?

Diese Idee ist mir nämlich gekommen, als ich mir diverse Datenbanken angesehen hab, die eine entsprechende Tabelle "Sessions" besitzen, wo i.d.R. userid, sessionid und ggf. IP und Zeit drinstehen, u.A. phpBB, aber auch andere Systeme. Das hat dann entsprechend für Verwirrung gesorgt :?

mkinzler 1. Mär 2007 19:39

Re: [PHP] In Benutzeraccount einloggen
 
In der Auth-Klasse des Pear-Repositories kannst du festlegen, wie die Benutzer-Session-Zuordnung erfolgt und wie sie abgelegt wird (z.B. Datenbank)

Sebioff 1. Mär 2007 19:41

Re: [PHP] In Benutzeraccount einloggen
 
Die sessionid in der Datenbank zu speichern halte für ein einfaches Anmelde/Login-Script für sinnlos (sobald eine session abgelaufen ist lässt sie sich meines Wissens nach sowieso nicht wieder reaktivieren, oder?).

Diese "Sessions"-Tabelle dient wahrscheinlich irgendwelchen statistischen Zwecken...

mkinzler 1. Mär 2007 19:45

Re: [PHP] In Benutzeraccount einloggen
 
Es wird ja auch nicht die sessions ansich gespeichert (diese ist eine Datei auf dem Server= sondern die Benutzerdaten und Daten die sessionübergreifend bestehen bleiben sollen.

malo 1. Mär 2007 19:59

Re: [PHP] In Benutzeraccount einloggen
 
Und wie komme ich dann anhand meiner Session-ID wieder an die Daten, die auf dem Server hinterlegt sind? Mit session_start() wird ja eine neue SID generiert, aber ich bräuchte ja die Daten, die bereits da sind.

mkinzler 1. Mär 2007 20:03

Re: [PHP] In Benutzeraccount einloggen
 
Diese daten legst du in eine Datenbank ab und rekonstruhierst diese in der neu erstellten session.

Sebioff 1. Mär 2007 20:14

Re: [PHP] In Benutzeraccount einloggen
 
Na, beim Login hast du ja wohl ein Formular, in das Benutzername und Passwort eingegeben werden.
Dann schaust du, ob es bei deinen gespeicherten Daten einen Account gibt, auf den dieser Benutzername und das Passwort zutreffen.
Wenn das der Fall ist, startest du deine Session und speicherst darin den Benutzernamen.

Auf einer anderen Seite kannst du dann, wenn du wissen willst, unter welchem Benutzernamen der Betrachter eingeloggt ist (z.b. weil du weitere Daten aus der Datenbank auslesen willst), wieder die Session starten und den vorher gespeicherten Wert auslesen.

Z.b. Seite a.php (wo eingeloggt wird) in Pseudo-PHP-Code:

Zitat:

session_start();
if (benutzername_existiert and passwort_richtig){
$_SESSION['username']="benutzername";
}
Auf Seite b.php kannst du den Benutzernamen dann wieder auslesen:
Zitat:

session_start();
echo"Dein Benutzername ist: ".$_SESSION['username'];
Da du weißt wie der Benutzername lautet kannst du dann auf Seite b.php ja auch weitere, zu diesem Benutzernamen gehörige Daten aus deiner Datenbank auslesen (bei sowas sollte man dann allerdings mit User-IDs arbeiten, nicht mit Strings...egal, versuch das erstmal; wenns klappt, kannst dus ja immernoch ändern :))


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz