Login - Logout - Wie geht das?

FrankTheFox

Grünschnabel
Hallo,

ich möchte eine Website programmieren, für die ich die Möglichkeit des Einloggens vorsehe. Weiterhin möchte ich (wenn eingeloggt) zwei Möglichkeiten für das Ausloggen anbieten (so machen es z.B. auch Seiten wie .."Web.de" oder "freenet").

1) Ich logge mich aus (d.h. ich biete ein Skript an das einem Logout- oder Abmelden-Button steuert, bzw die Daten verarbeitet).
2) Ich vergesse das ich mich ausloggen muß(soll) und will wieder auf die Seite, die "sagt" mir aber "Sie haben vergessen sich abzumelden..." und ich muß mich dann anmelden.


Wie kann ich das mit PHP realisieren.?

Ich bin blutiger PHP-Rookie und kann mit Sessions den "User" und sein "Passwort" in der Datenbank (auf dem Server) abfragen und dann (wenn erfolgreich) die geschützten Seiten anbieten. Aber das Abmelden kriege ich einfach nicht hin. Ich schnall auch nicht wie ich das Abmelden automatisiere (der Anwender loggt sich nicht aus oder lehnt Cookies ab).

Kann mir das jemand erklären? Danke! Vielleicht auch mit einem Codebeispiel:rolleyes:


Gruß
FrankTheFox
 
Lies dir bitte erstmal das LoginTutorial im Tutorialbereich durch..
Wenn du das "verstanden" hast dann schaust du dir das Tutorial von
http://tut.php-q.net/login.html
an und wenn du DANN noch fragen hast, dann weisst du soviel dass man mit dir reden kann und du es verstehst.. wenn ich dir jetz was erkläre dann verstehst du es eh nicht da du ja wie du sagst PHP-Rookie bist... könnte evtl auch daran liegen dass ich schlecht erklären kann oder die Themen Login und gesicherte Bereiche für mich umfangreiche, wichtige und heikle Themen sind...
Poste mal bitte dein Loginscript....
Dann wissen wir wie weit du bist und welche Variante des Logouts sich am besten implemtieren lässt..

MFG
Sandro
 
da Du, wie Du schreibst, das Login über SESSION steuerst, brauchst Du nur diese zu beenden. Der Code dafür steht im Link von Jin. Die Session wird auch beendet, wenn das Fenster geschlossen ist.

Aber weshalb soll ich erinnert werden, wenn ich mich nicht abgemeldet habe? Besser ist es über eine Zeitabfrage.

Hier noch ein Link: http://www.php4-forum.de/beispiele/login.htm
 
Wenn du die Session zerstörst ( session_destroy() ) dann werden nur alle Daten aus der Session geöscht... Mit der Session zusammenhängende globale Variablen und das Session-Cookie werden nicht gelöscht..
Wenn sich jemand einloggt kannst du ganz einfach in der DB ein Status eintragen ( zb. Status = logged_in...
Wenn jemand auf deine Seite kommt und sich einloggt kannst du ohne Probleme diesen Wert auslesen und den Text ausgeben ( welchen Sinn auch immer das machen soll )
Die Session eines nicht ausgeloggten Users musst du nicht löschen, da PHP das automtisch macht ( wird in der PHP.INI über gc_maxlifetime oder mithilfe von INI_SET("gc_maxlifetime", "WERT") im Script gesetzt...

Wenn der User sich ausloggt, löscht du einfach den logged_in Status und somit wird kein Text angezeigt..

Es gibt noch mind. 5 ander Möglichkeiten dass alles zu organisieren..


MFG
Sandro


EDIT:
@Icke... wenn man den Browser schliesst, wird nicht die Session gelöscht, sondern der Cookie auf dem PC des Users... die Session auf dem Server wird erst dann gelöscht wenn für die Session die Garbage-Collection greift und diese löscht..
Wenn man den Browser schliesst und dann wieder auf die Seite geht, wird nur eine neue SessionID an den PC vergeben da der Server auf dem Client kein Cookie findet in dem die SessionID steht..

MFG
 
Zuletzt bearbeitet:
Hallo,

danke für die Antworten.

@All:

Mein Anmeldeskript ist nix besonderes sondern sieht so aus wie man es auf vielen PHP-Seiten runterladen kann (oder in PHP-Büchern zu finden ist). Eigentlich genauso wie das "Login.php" im Tutorial....

Wenn man sich anmelden will (muß) werden "UserName" und "PassWord" in einem Formular über input type="text" eingeben (und das Password....input type="password"...) und mit Post an ein Skript "MyLogin.php"
gesendet. Dort lese ich dan UserName und PassWord aus einer Datenbank-Tabelle und wenn gültig starte ich eine SESSION mit "session_start();" und erzeuge mit $_SESSION["CurrentUser"] dann den UserName und $_SESSION["NickName"].

Dann leite ich mit Header.... auf die Verwaltungsseiten!

Auf allen Seiten, die dann geschtützt sind frage ich allerdings nur ab...
"if ( ! isset ( $_SESSION["UserName"])) ... und gehe zum Anmeldeformular!


Mein Problem ist wenn ich vergesse mich abzumelden, bleibe ich solange angemeldet bis ich mich dann irgendwann abmelde (...weil ich LoginStatus in der Datenbanktabelle für den User auf TRUE setzte und den Status mit dem "UserNamen" dann auf den Seiten abfrage...), was nicht so schön ist. Ich hoffe das ich das einigermaßen verständlich erklärt habe.

Ich werden die Tutorial mir ausdrucken, ausprobieren und durchlesen..!

Gruß
FrankTheFox
 
Hi,


ich habe da eine Idee...
wenn jemand, der sich nicht abgemeldet hat, die Seite (eine der geschützten Seiten) aufruft (in dem er den Link in das Address-Feld des Browsers einträgt) kann ich doch die Sessin-ID mit der Zeit (wenn ich zum Anmeldezeitpunkt beides in einer Tabelle eintrage) abfragen und wenn die Session-ID sich geändert hat, oder das Zeitlimit überschritten ist: (z.B.: eine Stunde) muss sich der Anwender neu anmelden (mit einem Hinweis "sich beim verlassen der Sitzung in Zukunft abzumelden...")
Weil sonst kann es passieren das jemand Tage später auf die Seiten kann (und der Betreffende schon gar nicht mehr vor'm Rechner sitzt, sondern jemand die Url aus der Browser History greift).

Gruß
FrankTheFox
 

Neue Beiträge

Zurück