20. marts 2008 - 15:34Der 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>
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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.
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.
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`? (:
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.
arh, sådan har jeg slet ikk' tænkt (: - prøver det lige
Synes godt om
Ny brugerNybegynder
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.