Avatar billede martinsp Nybegynder
20. marts 2008 - 15:34 Der er 5 kommentarer og
1 løsning

Problemer med auto logud

Hej eksperter

Jeg er ved at lave et brugersystem. Det virker sådan set godt nok, men problemet er, at hvis man ikke logger ud, står man hele tiden som online, hvilket ikke er så smart.
Jeg fandt så et script, der gjorde man loggede ud efter 5 minutter, hvis man var inaktiv. Det virker meget godt, indtil jeg fandt ud af, at den ikke loggede en ud, hvis man havde lukket browseren.
Er der nogen der kan lave et script, der logger en ud, uanset om man er på hjemmesiden, eller har lukket sin computer.

Mit script:
<script type="text/javascript">
function autoLogoff(){
    location.href="logout.php";
}
setTimeout("autoLogoff()", 300000);//5 minutter
</script>

På forhånd tak (:
Avatar billede mstorgaard Praktikant
20. marts 2008 - 16:19 #1
Jeg antager, at du benytter en database. Det du gør er at indsætte en kolonne i din brugertabel, hvor der er plads til et timestamp (10 tal). Du tjekker så hver gang en bruger opdaterer siden først om timestampet er lavere end nuværende tid minus 5 minutter (time()-300000), og hvis det er tilfældet sender du denne bruger til logout.php. Efterfølgende opdaterer du dit timestamp til nuværende tid (time()), for at bekræfte at brugeren stadig er aktiv.

Sørg også for at få opdateret dit timestamp, når en bruger logger ind, ellers vil vedkommende blive logget ud med det samme.

Der er måske en hurtigere løsning, men den her plejer i hvert fald at fungere for mig.
Avatar billede martinsp Nybegynder
20. marts 2008 - 17:09 #2
Det er lige præcis sådan noget jeg søger. Vil man også logge ud efter 5 minutter, hvis man ikke er på hjemmesiden`?

Kunne du evt skrive den kode jeg skal bruge ved log ind og log ud`? (:
Avatar billede mstorgaard Praktikant
20. marts 2008 - 19:55 #3
Du skal bare tilføje kolonnen til din database, og så kan du bruge følgende til log ind-siden:
mysql_query("UPDATE brugere SET online = " . time() . " WHERE brugernavn = '" . mysql_escape_string($_POST['brugernavn']) . "';");

Og følgende i toppen af hver side:
$bruger = mysql_fetch_array(mysql_query("SELECT online FROM brugere WHERE brugernavn = '" . $_SESSION['brugernavn'] . "';"));
$logouttime = time()-300000;
if($bruger['online'] < $logouttime) {
  header('Location: logout.php');
}
mysql_query("UPDATE brugere SET online = " . time() . " WHERE brugernavn = '" . $_SESSION['brugernavn'] . "';");

Denne metoder forudsætter at du benytter sessions til at kontrollere om en bruger er logget ind. Yderligere skal du tilpasse tabelnavnet til din tabels navn og kolonnens navn til din kolonne, som indeholder, hvornår en bruger sidst har opdateret siden. Sidst men ikke mindst skal du også sørge for at $_POST['brugernavn'] matcher navnet på dit input-felt, som du bruger til at logge ind med.
Avatar billede martinsp Nybegynder
22. marts 2008 - 14:36 #4
Jeg kan ikke helt for det til at virke. Jeg kom forresten til at tænke på noget. Kan man godt sende brugeren til logout.php, når han slet ikke er på hjemmesiden`?

Egentlig har jeg bare brug for en kode, der viser om han er online eller offline for de andre brugere. Ved ikke om det er lettere at lave`? (:

- Martin
Avatar billede mstorgaard Praktikant
22. marts 2008 - 18:00 #5
Så når du skal vise om en bruger er online, så tjekker du bare om kolonnen 'online' er højere end time()-300000, og hvis den er det, så er brugeren online.
Avatar billede martinsp Nybegynder
22. marts 2008 - 18:06 #6
arh, sådan har jeg slet ikk' tænkt (:
- prøver det lige
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester