webForumDet fria alternativet

Online

10 svar · 404 visningar · startad av Jesper2

Jesper2Medlem sedan dec. 200475 inlägg
#1

Tjena, som projektarbete i trean gör jag en community.
Jag har inte en aning om hur jag ska göra för att lista en användare som online eller offline. Jag har tänkt på att man t ex kan sätta fältet "online" i databasen till "1" när användaren är online, och "0" när han är offline, men eftersom användare inte alltid loggar ut, utan ibland kanske bara stänger webbläsaren så skulle det inte fungera.

Är det någon som har ett tips på hur man kan göra?
Finns det någon funktion som fungerar ungefär såhär:

if(session_break("nick")){
sätter online till 0.
}

?

Tack på förhand!

tydalMedlem sedan juni 20033 788 inlägg
#2

Sätt inte fältet till 1 eller 0 utan sätt det till den tidpunkt då användaren senast gjorde nånting. Så kan du kolla hur många som har gjort något de senaste tio minutrarna och kalla dem online.

Jesper2Medlem sedan dec. 200475 inlägg
#3

Men det fungerar nog inte. Då går man ju offline efter tio minuter?
Bra förslag, men tyvärr är det inte riktigt vad jag letar efter.

K@llenMedlem sedan mars 20032 654 inlägg
#4

Precis. Detta innebär också att du får ha en kodsnutt på varje sida som uppdaterar onlinekolumnen:

$sql ="UPDATE member SET lastActive = now() WHERE memberId = " . $_SESSION['memberId'] . "";
K@llenMedlem sedan mars 20032 654 inlägg
#5

Jesper2 skrev:

Men det fungerar nog inte. Då går man ju offline efter tio minuter?
Bra förslag, men tyvärr är det inte riktigt vad jag letar efter.

Du bestämmer själv hur länge man ska tolkas som online, dvs hur länge man kan vara inaktiv och ändå vara online. ;)

@ndersMedlem sedan juni 200026 914 inlägg
#6

Jesper2 skrev:

Men det fungerar nog inte. Då går man ju offline efter tio minuter?
Bra förslag, men tyvärr är det inte riktigt vad jag letar efter.

Hur definierar du "online" då?

Välkommen till webForum, förresten! :)

Jesper2Medlem sedan dec. 200475 inlägg
#7

Men jag vill ha obegränsad onlinetid. Är inte det möjligt över huvud taget? Det måste ju gå att lösa på nåt sätt.

Jag har läst nånstans att i ASP finns det en session_break-liknande funktion så att man inte sätts offline förrns sessionen bryts.

K@llenMedlem sedan mars 20032 654 inlägg
#8

Det du syftar på är antagligen global.asa:s Session_OnEnd. Något sådant finns inte i PHP. Dessutom fungerar det ytterst dåligt många gånger.

PeeerMedlem sedan mars 20025 362 inlägg
#9

Om du syftar på ASPs session_onend (som dessutom inte alltid fungerar, så jag skulle inte använda den ändå) så finns det ingen sådan motsvarighet i PHP. Det enklaste sättet är att göra som redan förslagits i tråden, dvs ha en kolumn där "senast aktiv"-tidpunkten lagras (som du uppdaterar varje gång besökaren kommer till en sida). Om du vill att man ska vara online i all evighet så skulle du ju ex. kunna ha en dold iframe på alla sidor som uppdateras 1 ggr/minut (så att tidpunktsfältet i databasen också uppdateras). Nackdelen med det är att ex. IE har ett hemskt klickljud varje gång en sida uppdateras som kan driva dina besökare till vansinne.

@ndersMedlem sedan juni 200026 914 inlägg
#10

Jesper2 skrev:

Men jag vill ha obegränsad onlinetid. Är inte det möjligt över huvud taget? Det måste ju gå att lösa på nåt sätt.

Vad menar du med obegränsad då?

Det är ju inte så att du blir offline efter tio minuter (eller hur många minuter du nu väljer), utan efter x minuters inaktivitet. Det är f.ö. precis så det fungerar med session_onstart / session_onend i asp.

mvh

Jesper2Medlem sedan dec. 200475 inlägg
#11

Jag tror jag har lösningen nu!
Tack så jättemycket allihopa, jag har kommit på hur jag ska lösa det =)

Jag har (som alla communitys har) en meny som uppdateras en gång i minuten, givetvis ska jag lägga en snutt där som uppdaterar vilken tidpunkt menyn senast blev uppdaterad =)

Det var inte så svårt som jag trott.
Tack!

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb