Gå til innhold

Hvordan liste opp de innloggede? (bruker SESSION)


Anbefalte innlegg

Hei!

 

Driver å lager meg et eget forum, og jeg har kommet langt på vei.. Men så kom jeg til å tenke på at det kunne ha vært kjekt å vite hvem som er innlogget, sånn at jeg kan liste dem opp for de andre innloggede..

 

Så, noen som har gode kunnskaper med SESSION og kan hjelpe meg?

Alle svar mottas med takk.. :wink:

Lenke til kommentar
Videoannonse
Annonse

Er ikke noen ekspert på sessions, men tror ikke noen andre enn den som har "laget" session'en kan hente info fra den...

 

Det du kan gjøre er å lage et script som lister opp antall filer i session-katalogen på serveren... da ser du hvor mange som er innlogget, men ikke hvem..

 

Korriger meg hvis jeg tar feil, noen... :)

Lenke til kommentar

Hmmm.. Så det er ikke mulig å få hentet frem hvem som er pålogget!

Har du et eksempel script som kan liste frem antall filer i sessions katalogen?

:o

Men, hvordan gjøres det her på hardware forumet da? Brukes det cookies? :shrug:

Lenke til kommentar

Dette lister opp antall filer i mappen d:html.

Endre $file_dir til katalogen som sessions lagres i og den vil da telle antall filer... :)

 

<?php  

$file_dir="d:html";

$dir=opendir($file_dir); 

$antall=0;

 while ($file=readdir($dir))  { 

       if ($file != "." && $file != "..")  { 

        ++$antall;

     } 

   } 

echo "Antall filer i katalogen $file_dir: <b>$antall</b>";

?>

 

Hvordan det gjøres i et phpBB2 forum vet jeg ikke... mulig det legges inn i en MySQL base...?

Lenke til kommentar

Du kan jo altids bruke MySQL til dette.

Lage en database, og samtidig som en session blir startet legg til et felt, med eventuell bruker info(eller legg det i en bruker database) fjern feltet enten ved log off, eller sett no auto expire 30 min eller noe sånt.

 

Burde vell funke fint.

Lenke til kommentar

Hmm, jaha.. :-? :-?

Noen forslag til hvordan jeg skal lage en "no auto expire 30min" spørring? Er litt ny inne akkuratt dette området skjønner dere.. Min feil!

 

Uansett, takk for hjelpen..

Det kunne vært fint å få et lite eksempel script servert her, utenom det å liste opp antall sessions, siden dette vil medføre uønskede bivirkninger.... :x :x

Lenke til kommentar
Hmm, jaha..  :-?  :-?  

Noen forslag til hvordan jeg skal lage en "no auto expire 30min" spørring? Er litt ny inne akkuratt dette området skjønner dere.. Min feil!

 

Neida - alt skal læres :-)

 

Du kunne jo hatt en "snutt" før scriptet registrerer en ny session i databasen hvor du kunne ha sjekka om det finnes session-oppføringer i databasen som er eldre enn 30 minutter.

Lenke til kommentar

Eksempel(i grove trekk) hvordan SQL kan se ut om du vil ha en teller som angir antall brukere online:

 


//Lagring i databasen:



mysql_query("INSERT INTO tblonline (timestamp, ip, bruker) VALUES(".time().",'".$REMOTE_ADDR."','".$brukernavn."')", $DB);



//ELLER:

mysql_query("UPDATE tblonline SET timestamp=".time().", bruker='".$brukernavn."' WHERE ip='".$REMOTE_ADDR."'", $DB);



 


//Hent ut fra samme tabell de som har vært aktive siste 30min



$timeout = 1800;  //1800sekunder=30min



//Hent tidspunkt

$timeout = time() - $timeout; 



//Hent ut antall brukere online

$usersonline = @mysql_num_rows(@mysql_query("SELECT ip FROM tblonline  WHERE timestamp>$timeout", $DB)); 



Lenke til kommentar
Jobber med det samme selv, har valgt slik at når brukeren logges inn vil det stå i databasen, innlogget=1. og da trengst det bare og hente alle som har innlogget=1 i dabasen ;)

 

Dette syntes jeg så noe svakt ut...

Hva om en bruker logger inn, og avslutter nettleseren uten å logge ut? Da vil vel den brukeren være "online" selv om maskinen er skudd av. Eller har jeg misforstått deg?

I eksemplet mitt vil også brukere som ikke er logget inn bli vist som online.

Lenke til kommentar

Ser faktisk ganske bra ut det skriptet ditt der Sven-O!

 

En ting jeg lurer på: Det skriptet der, det må jeg da ha på index.php sida, siden jeg bruker include() kommandoen til å inkludere de andre filene.. Men, vil det ikke bli en stor belastning på MySQL servern min da? Eller tåler den den, uten å slurpe i seg all minnen?? :o :o

 

Kjører Apache og MySQL på en Pentium II 350Mhz med 128MB Ram..

(Kjører 256MB Ram nå, men har bare lånt den) :roll:

Lenke til kommentar

Det blir jo noen oppkoplinger mot databasen hver gang index.php lastes, men jeg tviler på at du får noen minnelekkasje av betydning. Blir bare litt mer trafikk.

Husk også at du må ved jevne mellomrom slette de gamle oppføringene.

Lenke til kommentar

Da snakker vi innstillinger og detaljer selvfølgelig. Grunnen til at jeg har brukt 30min her er at det ble nevnt en tidligere post.

Men jeg er enig i at 5 min er bedre enn 30. Ikke for å spare ressurser, men for å få en mer presis fremstilling av hvor mange som faktisk er online.

Hva som er optimal tid for timeout avhenger av hvor lenge en bruker er på en enkelt side, dvs hvor lang tid han/hun bruker på å lese siden før han klikker en link.

Altså:

Siden lastes ofte(mange sider med lite innhold): Lav timeout.

Siden lastes ikke så ofte(få sider med mye innhold): Høy timeot.

 

Det skal sies at det er sjelden jeg sitter og leser en nettside i 30 minutter! :wink:

Lenke til kommentar
Joda, er sjelden jeg leser på den samme nettsiden i 30min jeg også, så jeg trur nok jeg vil sette ned timeout-en til rundt 5min..

 

Takker for alle svar, dette hjalp meg gitt! :D:D 8)

 

hva om du går bort et øyeblikk for å hente en cola eller.no?

 

 

For oss som gjerne sitter foran PCen hele dagen, kan det godt hende at nettleser'n ligger i bakgrunn en tid...

Lenke til kommentar
Joda, er sjelden jeg leser på den samme nettsiden i 30min jeg også, så jeg trur nok jeg vil sette ned timeout-en til rundt 5min..

 

Takker for alle svar, dette hjalp meg gitt! :D:D 8)

 

hva om du går bort et øyeblikk for å hente en cola eller.no?

 

 

For oss som gjerne sitter foran PCen hele dagen, kan det godt hende at nettleser'n ligger i bakgrunn en tid...

 

Ja. Men da er du jo ikke "online" på den siden, er du vel?

Lenke til kommentar
Romeo_ skrev:  

Joda, er sjelden jeg leser på den samme nettsiden i 30min jeg også, så jeg trur nok jeg vil sette ned timeout-en til rundt 5min..  

 

Takker for alle svar, dette hjalp meg gitt!    

 

 

hva om du går bort et øyeblikk for å hente en cola eller.no?  

 

 

For oss som gjerne sitter foran PCen hele dagen, kan det godt hende at nettleser'n ligger i bakgrunn en tid...

 

 

Hmm, godt spørsmål.. Jeg vil nok også mene at jeg ikke er "online" da, trur jeg..

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...