ugrás a tartalomhoz

Merre távozik a felhasználóm?

tiku I tikaszvince · 2006. Okt. 17. (K), 12.51
Sziasztok!
Kiléptetést szeretnék végrehajtani, minden olyan alkalommal, amikor a felhasználó elhagyja az oldalamat (másik domain-re lép, stb.). Van valamilyen lehetőség arra, hogy megtudjam, a felhasználó merre távozik az oldalamról?

Az általam elhelyezett linekeken keresztüli távozásról való értesülést már megfejtettem. De mi van akkor, ha a user beír egy új címet?

köszi
tikuVoltam
 
1

Ne így gondolkozz

presidento · 2006. Okt. 17. (K), 12.57
Ha más címet ír be (tehát nem teáltalad kirakott linkre kattint), azt nem tudhatod, hova megy. Inkább nézd azt, hogy mikor kért le utoljára oldalt tőled. Például ha több, mint fél órája, akkor érvényteleníted a sessiont, újra belépteted. (Ha nagyon muszáj. Engem zavarna, ha naponta többször be kellene lépnem a rendszeresen látogatott több tíz oldalra...)
2

követelmény

tiku I tikaszvince · 2006. Okt. 17. (K), 13.29
Egy webalkalmazásról van szó, aminek ez egy előírt működése lenne, hogy ha elhagyja az alkalmazást, akkor automatice lépjen is ki. Igazság szerint bent nincs (nem is lehet) kintre mutató link. Konkrétan ezt a "újcímetbeírós" elhagyást kellett volna lekezelni, ha lehetne.

Nekem is ez volt az első reakcióm, hogy egyszerűen kezeljük szerver oldalon, timeout-tal, de nagyon nehéz megsaccolni, hogy két akció között mi az az időtartam ami még elfogadható, és mennyi az ami után már tuti kiléptethető a felhasználó.

tikuVoltam
3

onUnload

Anonymous · 2006. Okt. 17. (K), 13.38
Az onUnload esemény nem jó?

N0r3i
4

ezen már túl vagyok :)

tiku I tikaszvince · 2006. Okt. 17. (K), 13.44
Ezen már túl vagyok. Nem az esemény volt a kérdés, ha nem az esemény lekezelése. Mindenkép ezen az eseményen keresztül futna le a kiléptetés. Mivel ez az esemény minden lapletöltéskor (pontosabban lapelhagyáskor) végrehajtásra kerül, el kell döntenem, hogy most ki kell-e léptetnem a felhasználót vagy nem. Mert ugye, ha marad az alkalmazásban, akkor jobb nem kiléptetni, ha pedig "eltévejedne" akkor pedig kötelező lenne...

tikuVoltam
5

Definiáld

Anonymous · 2006. Okt. 17. (K), 14.10
OK, akkor definiálnod kellene, hogy mit értesz az "alkalmazás elhagyása" fogalmon.

Ha azt, hogy átmegy egy másik weboldalra/bezárja a böngészőt, akkor egyszerű a dolog, mert ha néhány másodpercen belül tőled kér új oldalt, akkor nem kell kiléptetni, egyébként igen. Ezt meg könnyű figyelni.
Ha viszont megengedett, hogy a lap elhagyása után 1-2 percen, órán, stb. belül visszatérjen kijelentkezés nélkül, akkor egy időméréssel vagy lejáró sütivel tudod megoldani. De ez már jóval komplikáltabb.

N0r3i
6

jelenlegi megoldás

tiku I tikaszvince · 2006. Okt. 17. (K), 14.20
Azért szerettem volna unload-kor vizsgálni, hogy merre megy a felhasználóm, hogy ne kelljen ilyen bonyolult esőtáncokat járni.

De ha nem lehet, hát nem lehet...

tikuVoltam
7

frame?

Anonymous · 2006. Okt. 17. (K), 15.45
És ha beteszed az egészet egy iframe-be?
Ha a böngészőben ír a címsorba valamit, a top-ot tölti be újra. Ha belső linket kattint, vagy egyéb (JS) viszi át, a keretben marad. Szóval a topframe unload ekkor tényleges elhagyást jelent. Hmm?
8

perverzió

vbence · 2006. Okt. 17. (K), 16.27
Behozol egy (pop-under) ablakot window.open-nel. Az letöltődik (lehet statikus HTML) és megpróbálja elérni az window.opener-t. (Az eredeti ablakot). Ha el tudja érni, akkor még a te domainedben van, nincs dolga. Ha exception lesz (try... catch) akkor más domainen van már a szülőablak (vagy be van csukva). Ilyenkor ki kell léptetni.

Persze ez csak egy vicces butaság :)
9

Nem tudom, erre gondolt-e az előző hozzászóló, de:

Marcell · 2006. Okt. 17. (K), 16.47
- onunload-ra meghívsz egy AJAX-os mókát:
http_request.open('GET', 'http://lalala.hu/reg.php', true);
ami beleírja az adatbázisba az aktuális időbélyeget, mikor elhagyja ugye az aktuális lapot + a hozzá tartozó személyazonosítót (akár POST-osan is),
- ezek után ha legközelebb jön ellenőrzöd az adatbázisból és ha ez később történik mint az időbélyeg + 20 másodperc (igény szerint skálázható, ezt a tempót még egy 56K-s is tudja teljesíteni, ha tényleg rád kattintott), akkor valószínüleg nem saját oldalra kattintott.

Aztán, hogy ez működtethető-e a valóságban, azt nem tudom, de talán az elve értelmes.