Avatar billede mikze Nybegynder
17. juni 2004 - 13:40 Der er 8 kommentarer og
1 løsning

online/offline hvordan?

Hejsa.

Jeg har et community, med login og opret bruger og et time system.

Når man logger ind laver den en mysql_query hvor den opdatere online='ja'. Og når man trykker på LOGUD opdatere den online='nej' begge med WHERE brugernavn='$_SESSION[brugernavn]'.

Og det er der ingen problemer i. Men nu vil jeg have sådan at hvis man ikke logger ud og bare trykke X eller alt+F4 så skal den også ændre en til online='nej' UDEN popup.

Og jeg har selv en idé.
Jeg har en usynlig iframe på forsiden som opdatere sig selv hver 30 sekund. Og inde i den kan jeg vel så gøre sådan at den ændre alle som ikke er logget på til OFFLINE.

Og nej, det er jo ikke lige. Men når man er logget ind er der jo mit timesystem som også køre over mysql. Så der er et felt i mysql tabellen som bliver opdateret hver 20 sek. med time();

Og timeout i tabellen bliver jo ikke opdateret når man ikke er på siden mere... Og så kunne man evt. lave:

$duration = $rowdata[timeout]-30;
WHERE timeout = timeout<'$duration'

Eller sådan noget... Hvor at den sletter alle hvor feltet TIMEOUT er 30 sekunder gammelt. Som ikke kan lade sig gøre når man ikke er logget på.


Håber ikke jeg har forvirret jer ;)

Men håber på hjælp :D
Avatar billede Slettet bruger
17. juni 2004 - 13:47 #1
Jeg forstår ikke helt, hvad dit problem er... Det ser ud til at du har overblik over mulighederne.
Avatar billede Syska Mester
17. juni 2004 - 14:37 #2
Hvad er det du mangler hjælp til, du har jo allerede forklaret os hvordan det skal laves?
Avatar billede mikze Nybegynder
17. juni 2004 - 15:37 #3
Ja... Men det jeg har lavet virker bare ikke.
Avatar billede mikze Nybegynder
17. juni 2004 - 15:39 #4
// ONLINE.PHP som bliver loaded hvert minut (Jeg skrev hver 30 sek. før):

<?
session_start();
include "inc/db.php";







$time = time();

$sek = "30";

$duration = $time-$sek;



$query = mysql_query("SELECT online FROM brugere WHERE online='ja' AND timeout = timeout<'$duration'") or die(mysql_error());
$data = mysql_num_rows($query);

if($data > 0) {

mysql_query("UPDATE brugere SET online = 'nej' WHERE timeout = timeout<'$duration'");




}
echo "Duration: $duration<br><br>";
echo "time: $time<br>";
echo "Sekunder: $sek";






?>



<script>

setTimeout("location.reload(true)",60000);

</script>








//Filen som bliver opdateret hevr 20 sek. når man er logget ind:

<?
session_start();
include "../inc/db.php";


$query = mysql_query("SELECT timeout FROM brugere WHERE brugernavn='$_SESSION[brugernavn]'");

$hent = mysql_fetch_array($query);







$time = time();


$duration = $time-$hent[timeout];


mysql_query("UPDATE brugere SET onlinetid = onlinetid+'$duration' WHERE brugernavn='{$_SESSION['brugernavn']}'");


mysql_query("UPDATE brugere SET timeout='$time' WHERE brugernavn = '$_SESSION[brugernavn]'");






?>



<script>

setTimeout("location.reload(true)",20000);

</script>
Avatar billede mikze Nybegynder
17. juni 2004 - 15:39 #5
hver*
Avatar billede mikze Nybegynder
17. juni 2004 - 18:12 #6
hjæææælp!
Avatar billede knudx Nybegynder
17. juni 2004 - 20:42 #7
Hejsa. Er du gal der er mange tomme linier i den kode. Et par ting jeg ikke forstår; måske ligger fejlen et af de steder...
1.    Der er ikke noget HTML, hverken <head> eller <meta> i nofen af de to scripts... Jeg går ud fra du har klippet det fra fordi du ikke mener det er der problemet ligger?
2.    Såvidt jeg kan se burde du kunne skifte dette:

$query = mysql_query("SELECT online FROM brugere WHERE online='ja' AND timeout = timeout<'$duration'") or die(mysql_error());
$data = mysql_num_rows($query);

if($data > 0)
mysql_query("UPDATE brugere SET online = 'nej' WHERE timeout = timeout<'$duration'");

med dette:

mysql_query("UPDATE brugere SET online='nej' WHERE timeout<'$duration' AND online='ja'");

- ingen test, bare sætte dem som ikke har fået opdateret deres 'timeout' felt til 'offline' - lidt spild af kræfter, hvis der er mange brugere.
- Jeg har ændret dit udtryk "timeout = timeout<'$duration'" til "timeout<'$duration'". I virkeligheden tror jeg fejlen ligger der.
Avatar billede mikze Nybegynder
17. juni 2004 - 21:21 #8
jamen smid svar "smukke" :D
Avatar billede knudx Nybegynder
17. juni 2004 - 21:37 #9
Jo tak du der :^)
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