Auto logout na 5min
Ik ben hier pas nieuw maar om te beginnen ben ik geen groentje in PHP maar ben nu ook weer niet prof. Ik heb al enkle site's gemaakt maar nu ben ik bezig aan een site met een eigen login systeem. Nu wil ik dat je na 5min automatisch word uitgelogd.
Dit heb ik nu staan :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
// Auto logout
$nu=date('Y-m-d H:i:s');
$minu=date('i')-5;
$uur=date('H');
if ($minu < 0){
$minu=01;
$uur=date('H')+1;
}
$min=date('Y-m-d '.$uur.':'.$minu.':s');
$offline=mysql_query("SELECT online, user, online2, nuIP FROM spelers WHERE online2='1'");
$offline2=mysql_fetch_object($offline);
$offline3=mysql_query("UPDATE spelers SET online2='0' WHERE online<'{$min}'");
$offline4=mysql_query("UPDATE spelers SET nuIP='' WHERE online<'{$min}'");
$nu=date('Y-m-d H:i:s');
$minu=date('i')-5;
$uur=date('H');
if ($minu < 0){
$minu=01;
$uur=date('H')+1;
}
$min=date('Y-m-d '.$uur.':'.$minu.':s');
$offline=mysql_query("SELECT online, user, online2, nuIP FROM spelers WHERE online2='1'");
$offline2=mysql_fetch_object($offline);
$offline3=mysql_query("UPDATE spelers SET online2='0' WHERE online<'{$min}'");
$offline4=mysql_query("UPDATE spelers SET nuIP='' WHERE online<'{$min}'");
Kan iemand me helpen aub ik heb verschillende mogelijkhgeiden gebruikt en vind het maar niet :s:(
Mvg
mod-edit::
Bumpen
Twee of meer keer achter elkaar in je eigen topic posten, voordat andere forumleden gereageerd hebben, heet "bumpen".
Omdat het opdringerig overkomt is bumpen pas na 24 uur toegestaan.
Bumpen kan een reden zijn voor de admins en mods om een topic te sluiten.
Gebruik het knopje om je tekst aan te passen indien nodig.
Twee of meer keer achter elkaar in je eigen topic posten, voordat andere forumleden gereageerd hebben, heet "bumpen".
Omdat het opdringerig overkomt is bumpen pas na 24 uur toegestaan.
Bumpen kan een reden zijn voor de admins en mods om een topic te sluiten.
Gebruik het knopje om je tekst aan te passen indien nodig.
Gewijzigd op 01/01/1970 01:00:00 door Mike D.
Komt een gebruiker weer online met een bestaande sessie maar zijn er al meer dan 5 minuten verstreken, verwijder de sessie en laat het opnieuw inloggen.
ps. 5 minuten is wel erg kort hoor. Niet echt gebruiksvriendelijk...
edit:
How drukte te vroeg op tab en spatie hier met mijn laptop op de bank.
Heb er geen ervaring mee omdat ik een sessie duur altijd wel prima vindt. Ook met een cookie kan je dit maximum van vijf minuten wel instellen.
Maar ik ben het eens met Blanche, 5 min is erg kort. Waarom zou je dit willen?
Gewijzigd op 01/01/1970 01:00:00 door Crispijn -
Quote:
Deze instelling kun je alleen doen in php.ini. Het gevolg is dan dus dat dat dan direct voor je hele site geldt en niet alleen dat gedeelte.Je kan toch ook een sessie instellen voor een bepaalde tijd?
Bovendien heb je op de meeste hosts geen toegang tot de php.ini dus kun je dit niet instellen. Cookies of de database oplossing zijn dan de alternatieven...
Quote:
Dat volg ik effe niet. Waarom niet gewoon een time() in de session en dan kijken of de session is verlopen? Ik zie niet in waarom je hier een database of cookie voor zou moeten gebruiken.Cookies of de database oplossing zijn dan de alternatieven...
Op die manier ben je namelijk niet afhankelijk van de session.cookie_lifetime setting in de php.ini. Mocht die namelijk op 0 staan, wordt de sessie vernietigd na afsluiten van de browser en heb je dus ook niets meer aan de time() in je sessie.
Blanche schreef op 12.11.2007 22:42:
Dan ben je op elke pagina aan het query-en. Je gebruikt je database dan precies verkeerd. Een database is voor data, niet voor het onthouden van een tijdelijke sessie.Dat zou inderdaad ook nog kunnen. Maar waarom als je al een database met een tabel gebruikers hebt, deze informatie niet gewoon wegschrijven in de database?
Blanche schreef op 12.11.2007 22:42:
Lijkt me juist heel nuttig dat je uitgelogd bent na het sluiten van je browser. Hij wil niet voor niets dat je na 5 minuten wordt uitgelogd, dat zal met veiligheid te maken hebben. Dan kun je cookies niet eens overwegen.Op die manier ben je namelijk niet afhankelijk van de session.cookie_lifetime setting in de php.ini. Mocht die namelijk op 0 staan, wordt de sessie vernietigd na afsluiten van de browser en heb je dus ook niets meer aan de time() in je sessie.
Gaat het hier puur om veiligheid, dan is uitgelogd zijn nadat de browser gesloten wordt natuurlijk heel fijn. Als het echter om gebruiksvriendelijkheid gaat is dit waarschijnlijk niet echt gewenst.
In het eerste geval is het gebruik van een sessievariabele met time() inderdaad handig, en in het laatste weer niet (om de eerder aangegeven reden). Het alternatief in dat geval is het gebruik van cookies (eerste plaats) of de database. Deze laatste geniet dan weer de voorkeur als je over langere tijd een geschiedenis bij wilt houden van het bezoek van een gebruiker.
Ben het niet met je eens. Session-gegevens in een database kan gewoon niet. Hooguit een hash voor in een cookie. Je kunt wel logs bijhouden ja, maar dat heeft niets met sessions te maken, dat is een apart proces.
PHPerik schreef op 12.11.2007 22:58:
En waarom zou je geen sessie-gegevens in je database kunnen/moeten bijhouden? Dat werkt perfect, zeker omdat je dan met een loadbalancer de site eenvoudig kunt schalen. Dat gaat met sessies in PHP (lees: webserver) niet lukken, het ene moment zit je op webserver A en het andere moment op webserver B. Via een database is de sessie echter altijd beschikbaar.Ben het niet met je eens. Session-gegevens in een database kan gewoon niet.
pgFrank schreef op 12.11.2007 23:02:
Je kunt niet op elke pagina gaan query'en naar de database als je met grote sites werkt. Je kunt het wel bijhouden, maar niet elke keer gaan query'en.PHPerik schreef op 12.11.2007 22:58:
En waarom zou je geen sessie-gegevens in je database kunnen/moeten bijhouden? Dat werkt perfect, zeker omdat je dan met een loadbalancer de site eenvoudig kunt schalen. Dat gaat met sessies in PHP (lees: webserver) niet lukken, het ene moment zit je op webserver A en het andere moment op webserver B. Via een database is de sessie echter altijd beschikbaar.Ben het niet met je eens. Session-gegevens in een database kan gewoon niet.
leesvoer
Ik heb er nog nooit problemen mee gehad, heb ondertussen al flink wat databases met een session-SCHEMA draaien waarin de sessies keurig worden bijgehouden.
@PHPerik: Ik heb er nog nooit problemen mee gehad, heb ondertussen al flink wat databases met een session-SCHEMA draaien waarin de sessies keurig worden bijgehouden.
pgFrank schreef op 12.11.2007 23:10:
Als je echt met meerdere servers werkt en sessies moet delen over die servers dan is het gebruik van een database inderdaad vaak nuttig. In de praktijk wil je echter meestal liever databaseconnecties sparen in mijn optiek, dus zie ik het voordeel er niet van in om op elke pagina een query naar de database te doen terwijl je het ook zo effe in een session (local file) kan opslaan. Logs is een ander verhaal, dat hoeft niet bij elke refresh.@PHPerik: leesvoer
Ik heb er nog nooit problemen mee gehad, heb ondertussen al flink wat databases met een session-SCHEMA draaien waarin de sessies keurig worden bijgehouden.
Ik heb er nog nooit problemen mee gehad, heb ondertussen al flink wat databases met een session-SCHEMA draaien waarin de sessies keurig worden bijgehouden.
Gewijzigd op 01/01/1970 01:00:00 door PHP erik