Hi.
Ich habe bis jetzt relativ einfache logins für Seiten geschrieben, die eh keiner hackt oder wo Schutz besonders wichtig wäre.
Dennoch arbeitete ich bis jetzt folgendermaßen:
- User loggt sich ein
- bei richtigem Passwort bekommt der user eine UIN geschickt.
- diese UIN wird zusammen in einem cookie namens "user_loggedin" gespeichert.
- bei jedem seitenaufruf einer geschützten seite überprüft selbige ob die UIN, die uebergeben wird auch in der Textdatei steht.
- WICHTIG: bei jedem neuen login wird geschaut ob die UIN älter als einen Tag ist, und sollte das der Fall sein wird sie erneuert.
Ich war zuerst ganz stolz auf mich (g) weil ich mir das alleine ausgedacht und als totaler phpNoob auch noch hinbekommen habe.
Dann merkte ich...der Cookie.
Viele User (ich glaube in ServicePack2 bereits standart) haben Cookies deaktiviert - so bliebe also nur die SessionID-Programmierung.
Das Prinzip verstehe ich ja:
- Bei login wird SessionID gespeichert (die nach 20 min. verfällt)
- Jeder login bekommt eine eigene Session ID (halt immer ne andere generieren)
- die Session ID's werden auf dem Server gespeichert (TextDatei? Array?)
- jede Seite uebergibt bis zum logout ihre SessionID an die folgende - und natürlich bei Aufruf an den Server, der dann überprüft ob die ID gültig ist.
Aber die Umsetzung...
Mein Problem ist ja, dass ich die SessionIDs nicht nur speichern will, sondern dass diese auch mit der Zeit verfallen sollen.
Ein Cookie verfällt wenn der Browser geschlossen wird.
Gut
Eine Serverseitige Variable muss von einem script zerstört werden und WIE kann ich einem Script sagen dass es sich alle 20 min aufrufen soll?
Ich kann doch keine Endlosschleife machen, oder?
Ich dachte noch an sowas:
PHP-Code:
<?php
//----------------SessionDeleter.php-------------------
...
//Intro u.s.w.
while ($x < 5)
{
//NICHT x hochzählen -> Endlosschleife
lookAtSessionIds(); //eine woanders deklarierte wenn-dann-lösch-funktion
wait(20); //warte 20 minuten.
}
...
<?php
Gibt es so eine wait funktion und würde ich nicht ärger mit meinem provider kreigen wenn ich da ne endlosschleife mache?
wisst ihr ne schönere lösung?
danke!
Simon