Avatar billede solskinsvejr Nybegynder
08. marts 2004 - 19:15 Der er 5 kommentarer og
1 løsning

Afslutning af session ved nedlukning af vindue

Hej Eksperter !!!

Jeg har et forum, hvor der når man logger ind, står hvilke brugere som er online. Når sessionen startes ændres ændres en celle i databasen fra offline til online. Når man logger af igen, sættes den til offline... Ingen problemer.

MEN når man bare lukker vinduet, bliver brugerens status ikke ændret til offline i databasen. Jeg troede at den automatiske nedlukning af sessions efter 20 min (default) ville klare dette problem, men der tog jeg fejl. Er der en smart måde hvorpå dette problem kan løses ????
Avatar billede tefcke Nybegynder
08. marts 2004 - 21:11 #1
Hvis du er rigtig fræk, så laver du et onunload="..." i dit body tag.
'...' skal så være en javascript funktion som åbner et lille popupvindue, hvor i du du har noget php kode som ændrer personenes status til 'offline', hvorefter vinduet lukker sig selv igen.

Når brugeren bare lukker sin browser, uden at logge ud, hopper der hurtigt et lille popupvindue op, sætter hans status, og lukker sig selv igen!
Avatar billede solskinsvejr Nybegynder
08. marts 2004 - 22:29 #2
OK, det lyder som en fræk idé :o)... Kan jeg få dig til at give et eksempel ???
Avatar billede tefcke Nybegynder
09. marts 2004 - 00:22 #3
Som sagt har du i dit body tag flg.:
<body onunload="autoOffline();" ... >



Du skal i din head sektion have:
<script type="text/javascript">
<!--
function autoOffline()
{
    window.open("autooffline.php?id=<?php echo $USER_ID; ?>",'offline', 'toolbar=no,directories=no,location=no,status=no,menubar=no,resizable=no,scrollbars=no,width=10,height=10,left=0,top=0');
}
-->
</script>

Hvor $USER_ID er er, ja, user id på den bruger som skal logges ud.



Du skal så have en php fil (autooffline.php i det her tilfælde) som ikke må/skal producere noget output.
autooffline.php

<?php
if ( isset($_GET['id']) ) {
    // Forbind til databasen
    $link = mysql_connect();
   
    // Vælg database
    mysql_select_db('...', $link);
   
    // Konstruer query
    $sql = "
        UPDATE tabel
        SET celle = 'offline'
        WHERE user_id = {$_GET['id']}";

    // Udfør query
    mysqL_query($sql, $link);

    // Luk database forbindelse
    mysql_close($link);
}

<!-- Luk popup vinduet -->
echo '<script type="text/javascript>window.close();</script>';
?>



Dette er nok yderst utestet, samt at min javascript færdighedder er på et absolut minimum ;D
Jeg håber bare du har fanget ideen, og kan rette evt. fejl og mangler.
Avatar billede solskinsvejr Nybegynder
09. marts 2004 - 00:34 #4
Tak for din hurtige tilbagemelding... Jeg afprøver det i morgen, og kommer derefter med en tilbagemelding... go'nat ;o)
Avatar billede solskinsvejr Nybegynder
09. marts 2004 - 23:04 #5
Tak for hjælpen, det ser ud til at virke... Men har lige et sidste spørgsmål ??? Er der ikke andre måder man kan gøre det på ??? For når min Norton Internet Security kører, blokerer den for pop-ups, og derfor bliver man ikke logget af. Der burde være en smartere løsning... Bare smid et svar, så du kan få dine point ;o)
Avatar billede tefcke Nybegynder
10. marts 2004 - 00:50 #6
Jeg kan ikke middelbart lige komme på en anden løsning (ikke sagt at der ikke er andre).
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