Kom ihåg mig?
Home Menu

Menu


Kolla om man är på sida från javascript

Ämnesverktyg Visningsalternativ
Oläst 2013-04-14, 14:40 #1
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
Standard Kolla om man är på sida från javascript

Hej,

Jag har gjort en liten shoutbox där man även ser vilka som är inne på shoutboxen. För att vet vilka som är inne kollar jag först på varje sida om sidan man är inne på är /chat.php vilket jag får ifrån PHPs konstant $_SERVER["PHP_SELF].

Om man då är på /chat.php så flaggar jag en kolumn till 1 som heter "in_chat" på användarens rad i databasen.

Med AJAX hämtar jag nu alla rader i medlemslistan är in_chat = 1.
Detta funka då fin fint tills en användare bestämmer sig för att öppna en ny tab. Då slinker han ut ur chattsidan eftersom in_chat ändras till 0. Vad ska jag göra för att motverka det här?

Du kan testa det här:
http://www.muggem.com/
Logga in med muggem/muggem. Sidan heter "Shoutbox" som ni hitter i menyn till vänster.
secag är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-04-14, 14:55 #2
leonards avatar
leonard leonard är inte uppkopplad
Medlem
 
Reg.datum: Mar 2013
Inlägg: 190
leonard leonard är inte uppkopplad
Medlem
leonards avatar
 
Reg.datum: Mar 2013
Inlägg: 190
Vet inte om jag riktigt förstått det hela rätt, när jag prövar att öppna en ny flik stannar jag fortfarande kvar på shoutbox-sidan? D.v.s "muggem" username står kvar i "in chat" och klockan fortsätter ticka?

Men ett alternativ är väl att skapa en cookie med hjälp av jquery som finns en begränsad tid, och när användaren tabbar tillbaka till fliken så förnyas cookien. Men om användaren inte tabbar tillbaka under låt oss säga 10 minuter så försvinner cookien och "in_chat" sätts till 0 via en ajax-kontroll som kollar om användaren har kakan eller ej.

Kanske är helt missuppfattat, isåfall ber jag om ursäkt!
leonard är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-04-14, 15:04 #3
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
Jag menade att man på den andra fliken går till en helt annan sida
secag är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-04-14, 15:06 #4
leonards avatar
leonard leonard är inte uppkopplad
Medlem
 
Reg.datum: Mar 2013
Inlägg: 190
leonard leonard är inte uppkopplad
Medlem
leonards avatar
 
Reg.datum: Mar 2013
Inlägg: 190
Ah ok.

Då skulle jag nog isåfall kört med en cookie som sparas i typ 10 minuter, som förnyas när man är inne på shoutboxen. Sen ett ajax-anrop som med jämna mellanrum kontrollerar ifall den finns eller ej.
leonard är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-04-14, 21:35 #5
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
JesperA JesperA är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 214
Gör det lätt för dig istället.

Gör en MEMORY tabell som heter tex InChat där du helt enkelt bara lagrar AnvändarID, och datetime eller whatever, besöker då användaren chat.php så lägg bara in en rad i tabellen, sen kan du bestämma hur länge en besökare skall kunna vara inaktiv innan raden tas bort från databasen, tex 20 minuter, så ta bort alla rader i databasen där datetime är äldre än 20 minuter.

Tar 1 minut att skapa tabellen i databasen och tar 1 minut att ändra dina redan befintliga queries
JesperA är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-05-25, 13:01 #6
weirdbyte weirdbyte är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 165
weirdbyte weirdbyte är inte uppkopplad
Medlem
 
Reg.datum: Aug 2007
Inlägg: 165
Du borde kolla upp longpulling och websockets, med dessa kan du omedelbart få reda på om någon lämnar sidan.
weirdbyte är inte uppkopplad   Svara med citatSvara med citat
Oläst 2013-05-25, 17:51 #7
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
secag secag är inte uppkopplad
Medlem
 
Reg.datum: Nov 2012
Inlägg: 211
har gått över till nodejs istället nu flyter allt på sjukt bra använder också socket.io
secag är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 01:39.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017