PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Login Logout Script (http://www.selfphp.de/forum/showthread.php?t=3079)

KlausMotz 16.01.2003 21:11:39

Login Logout Script
 
Hallo,

ich suche eine Möglichkeit wie ich für einem Bereich einer Website ein Login realisieren kann. Es soll wie folgt funktionieren:

Bei Aufruf wird ein Login-Bildschirm angezeigt
Login-Name und Passwort sollen in einer My-SQL Datenbank gespeichert sein und überprüft werden.
Und jetzt kommts!
Das Login soll automatisch ( nicht durch klick auf eine "Logout"-Schaltfläche) ungültig werden wenn:
Der Angemeldete die Seite verlässt. Also egal ob mit der "Zurück"-Schaltfläche, durch Schliessen des Browserfenster, durch Eingabe einer anderen URL usw.

Hat jemand Tips zur Realisierung? Kennt jemand freie Script die als Anregung dienen können?

Ich habe was übers Session gelesen. Kann es mit einer Session-ID funktionieren? Wie?

Ich bin in dieser Hinsicht ein blutiger Anfännger und für jede Hilfe dankbar.

Gruß
Werner

Ben20 16.01.2003 21:15:27

Automatisch geht das nicht, da PHP ja nicht mitbekommt, wenn jemand die Seite verlässt. Du kannst aber zusätzlich zu Passwort und Username noch eine Timestamp in der DB speichern. Das Loginscript killt dann alle Logins, die älter sind als z.B. eine halbe Stunde. Das Problem dabei ist, dass dafür jemand das Loginscript aufrufen muß damit das überprüft wird. Das könntest Du aber umgehen, in dem Du einen Cronjob laufen läßt der alle halbe Stunde ein "Kontrollscript" aufruft.

Viper 16.01.2003 21:24:11

Hi!

Natürlich funktioniert das mit Sessions.
Du gibst dem User eine SessionID (session_start()).
Dann ein Loginscript mit Name/Passwort. Der User muss natürlich vorher in einer DB angelegt werden (Anmeldeformular in dem der gewünschte Name, die EMail Adresse und das gewünschte Passwort gespeichert werden)!
Dann schreibst Du in die Session den Namen und die EMail Adresse oder nur die EMail -> reicht auch ($_SESSION["email"]).
Wenn der User nun eine andere Seite aufruft erlischt die Session. Das selbe passiert auch wenn eine ander URL aufgerufen wird. Machst Du das ganze per LogOut Button löscht Du ganz einfach die Session (session_unregister["email"]).

Probiers mal aus!

Gruss, Viper

Ben20 16.01.2003 21:27:26

Für ein einfach Login geht das - aber wenn Du was in die DB schreibst (z.B. was in der Richtung: User ist eingeloggt) um den Login sicherer zu machen, wird der Inhalt nicht geändert.

KlausMotz 16.01.2003 21:28:17

Session
 
Ja aber,

kann ich der Session auch eine Gültigkeit zuweisen? Das ganze soll ja auch funktionieren wenn jemand nicht auf Logout klickt sondern z.B. einfach eine neue URL in die Adresszeile eingibt.

Ben20 16.01.2003 21:31:39

Eine Session hat im automatisch eine bestimmte Haltbarkeit - das ist in der PHP.ini festgelegt. Bei 1&1 sind das 1440 (Sekunden = 24 Minuten, nehme ich mal an). Bei Lycos sind 20 Minuten hab ich mal gehört!

KlausMotz 16.01.2003 21:35:17

Muss ich nachfragen
 
Das mit der Haltbarkeit muss ich nachfragen. Übrigens, die Domain ist auf einem Windows II-Server gehostet. Ich muss mal fragen wie es da mit den Cronjobs ist.

Ben20 16.01.2003 21:37:00

Wenn Du ein Script mit

<?php

phpinfo();

?>


auf Deinen Server legst und aufrufst, bekommst Du die Einstellung unter session.gc_maxlifetime oder so ähnlich zu sehen!

Du kannst die Haltbarkeit auch beeinflussen:

ini_set("session.gc_maxlifetime", AnzahlSekunden);



Unter Windows würde ich vermuten kannst Du den Taskplaner als Cron Ersatz verwenden.

KlausMotz 16.01.2003 21:42:28

ich werd das mit den Session mal hier in selfphp genau nachlesen. Wenn ich das jetzt richtig verstanden habe, brauche ich ja garkeinen cronjob.

Danke erstmal für die schnelle Unterstützung

Gruß
Werner

Viper 16.01.2003 22:29:06

Natürlich funktioniert das ganze auch wenn der User eine neue URL eingibt. Er verlässt Deine Seite und somit wird die Session mit der er angemeldet ist ungültig.

Viper


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:39:41 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.