zistenie ludi online
zistenie ludi online
taaakze, po prihlaseni sa na stranku sa setne session s uzivatelovym id a zaroven sa mu v db zmeni stav na prihlaseny. bude to sluzit na vyhladavanie ludi co su prave prihlaseni. ked sa odhlasi, tj klikne na tlacitko odhlasit, unsetne sa session a zmeni sa udaj v db na odhlaseny. toto funguje dobre. ale moze nastat pripad, ze uzivatel sa neodhlasi a tym padom bude stale medzi prihlasenymi. tento pripad moze nastat ked vypne prehliadac alebo je dlho neaktivny. pri prihlaseni to setne este jeden cookie. ten kolacik ma meno userovho id a hodnota je datum kedy sa kolacik setol. vzdy po obnove stranky sa presetne cas a cas expiracie je tak 5 hodin. po 5 hodinach neaktivnosti ked niekam klikne, tak ho automaticky odhlasi. ale musi niekam kliknut. ale ak nikam neklikne, napriklad zavrie prehliadac alebo proste neklikne tak nastava tento problem. chcel by som to vyriesit takto..
na stranku by som vlozil nejaky neviditelny iframe (kde by bol automaticky refresh), kde by bol kod, ktory by overoval ako dlho je uzivatel neaktivny spustalo by sa to napriklad kazdych 10 minut. tym by som vyriesil to, ze proste neklikne nikde a aj tak ho odhlasi
dalej keby zavrel prehliadac, tak by sa tato udalost polala na server, kde by sa pustil dalsi php kod.na to sa tusim pouziva udalost onbeforeunload
no a problem je v tom, ze to neviem nakodit. myslim, ze je to par riadkov JS, ale JS vobec neovladam. php kod si napisem v pohode. ale keby mi s tymto niekto pomohol bol by som velmi vdacny
edit: problem s tym, ze by uzivatel nikam neklikal som vyriesil. pri zistovani ludi online, sa vyberu udaje z db tym co maju ako status ze prihlaseni a ti potom budu overeni. teda ich cookies. ale stale ostava problem, ako pustit php kod pri zatvoreni prehliadaca...
na stranku by som vlozil nejaky neviditelny iframe (kde by bol automaticky refresh), kde by bol kod, ktory by overoval ako dlho je uzivatel neaktivny spustalo by sa to napriklad kazdych 10 minut. tym by som vyriesil to, ze proste neklikne nikde a aj tak ho odhlasi
dalej keby zavrel prehliadac, tak by sa tato udalost polala na server, kde by sa pustil dalsi php kod.na to sa tusim pouziva udalost onbeforeunload
no a problem je v tom, ze to neviem nakodit. myslim, ze je to par riadkov JS, ale JS vobec neovladam. php kod si napisem v pohode. ale keby mi s tymto niekto pomohol bol by som velmi vdacny
edit: problem s tym, ze by uzivatel nikam neklikal som vyriesil. pri zistovani ludi online, sa vyberu udaje z db tym co maju ako status ze prihlaseni a ti potom budu overeni. teda ich cookies. ale stale ostava problem, ako pustit php kod pri zatvoreni prehliadaca...
no to je presne to co chcem, lebo to aj odchyti to zavretie okna, ale tam mozem pustit akurat tak alert a to mi je nanic. este ma napadlo, ze by vyskocil daky pop-up. to je tiez vec JS, ale tieto vykakovacky su bloknute. treba mi namiesto JS pustit php pri tej udalosti a to neviem vobec ako spravit. ale co som kukal stranky, tak to tiez nemaju nikde osetrene...
dost pochybujem ze onunload sa vyvola pri zavreti okna ....
zavolanie nejakeho php na serveri spravis predsa vela sposobmi ... mozes otvorit nove okno, presmerovat/preloadovat stranku ....
edit: tak ten onunload teda asi funguje ... ale napr Opera ti to nezozerie ... v IE sa to spustilo .. FF neviem
kazdopadne to neriesi pripad ked uzivatel vypne JS
zavolanie nejakeho php na serveri spravis predsa vela sposobmi ... mozes otvorit nove okno, presmerovat/preloadovat stranku ....
edit: tak ten onunload teda asi funguje ... ale napr Opera ti to nezozerie ... v IE sa to spustilo .. FF neviem
kazdopadne to neriesi pripad ked uzivatel vypne JS
ten pripade ze vypne JS ma prilis netrapi. malokto chodi po strankach s vypnutym JS. a presnejsie je to udalost onbeforeunload a ani onunload. onunload sa spusti tusim len ked klikne uzivatel niekde co ho hodi het. ale to druhe sa spusti vzdy. a nevadi mi, ze pre IEckovych to nebude fungovat a pre tych co maju JS vypnuty. chcem len co najpresnejsi vylsedok. tieto detaily mi vadit prilis nebudu. ale ked sa zo stranky vypne napriklad 100 ludi tak chyba bude 100. ked z nich maju 5 IE a dvaja vypnuty JS, tak chyba by bola 7. toto by mi fakt trebalo. ale neviem ako mam vyvolat ten php script ked zavre okno 
-
caesar1987
Addict
- Príspevky: 3001
- Registrovaný: 02 okt 2005, 0:57
- Bydlisko: Nové Zámky
- Kontaktovať používateľa:
ja osobne povazujem za naj riesenie zaznamenavat ipcky..
pri kazdom prezreti stranky sa aktualizuje cas pri ip a pocita sa napr 5, alebo 10 minut...
teda ak je cas pri ip mensi ako teraz-10 minut, tak uz nie je online...
potom spravis z databazy selekt, kde cas je taky ze teraz-10 mint a spocitat riadky a mas to..
pri kazdom prezreti stranky sa aktualizuje cas pri ip a pocita sa napr 5, alebo 10 minut...
teda ak je cas pri ip mensi ako teraz-10 minut, tak uz nie je online...
potom spravis z databazy selekt, kde cas je taky ze teraz-10 mint a spocitat riadky a mas to..
nad tym som aj ja rozmyslal, ALE...
je to taky portal, kde moze byt clovek prihlaseny cely den a neni podmienkou aby klikal. nieco ako booom alebo velkeveci. tam tiez ludia klikaju len obcas, ale prihlaseni su cely den. tato moznost je najucinnejsia, ale zaroven je otravne kazdych 10 alebo 20-alebo 90 alebo x minut sa prihlasovat. mne keby hojko forum odhlasilo, tak sa na to vybodnem a neprihlasim sa spat. proste by mi to bolo jedno. a verim, ze tak nerozmyslam sam...
je to taky portal, kde moze byt clovek prihlaseny cely den a neni podmienkou aby klikal. nieco ako booom alebo velkeveci. tam tiez ludia klikaju len obcas, ale prihlaseni su cely den. tato moznost je najucinnejsia, ale zaroven je otravne kazdych 10 alebo 20-alebo 90 alebo x minut sa prihlasovat. mne keby hojko forum odhlasilo, tak sa na to vybodnem a neprihlasim sa spat. proste by mi to bolo jedno. a verim, ze tak nerozmyslam sam...
Zvyčajne sa to rieši tak, že sa pri každom obnovení stránky uloží aktuálny čas. A potom sa ako online berú ľudia, čo napr. obnovili stránku v posledných 5 minútach (a prihlásený sú tí, čo sa neodhlásili).
Mohol by si tam napr. pridať nejaký javascript, čo by niečo posielal serveru (informáciu o tom, že stránka sa ešte zobrazuje).
Mohol by si tam napr. pridať nejaký javascript, čo by niečo posielal serveru (informáciu o tom, že stránka sa ešte zobrazuje).
nooo to je napad. toto sa mi celkom aj paci, ale nastava problem. JS ovladam asi ako cinstinu. uz viem ako to spravim. vlozim na stranku neviditelny frame, ktory sa bude automaticky obnovovat a zapisovat do db cas. no a ked niekto pride na stranku, tak na index.php sa pusti kod. vycucnu sa z db vsetci co su akoze online a overia sa casy. takze ak cas nebude sediet, znamena to, ze dotycny zavrel prehliadac a automaticky updatne tabulku a zmeni jeho udaj na offline. a dalej vsetko ostava... uz len spravit ten ramik s tym autorefreshom. idem googlit 
edit: hotovo. staci do hlavicky pridat
poprosim este nezamykat. este budem mat dotazov ako politici slubov...
edit: hotovo. staci do hlavicky pridat
Kód: Vybrať všetko
<meta http-equiv="Refresh" content="600">sprav to takto sice nieje to naj optimalizovanejsie riesenie,ale ma to tak tusim aj phpbb
ked sa uzivatel prihlasi tak mu setne new sessions...a do db sa zapise ze je prihlaseny + time poslednej vygenerovanej stranky...a pri kazdej vygenerovanej stranke sa do db vlozi new time...
a ked potrebujes zistit kdo je online tak si das query ze kdo ma cas vacssi ako bol pred 5timi (6timi atd) minutami je online...inak je offline
ked sa uzivatel prihlasi tak mu setne new sessions...a do db sa zapise ze je prihlaseny + time poslednej vygenerovanej stranky...a pri kazdej vygenerovanej stranke sa do db vlozi new time...
a ked potrebujes zistit kdo je online tak si das query ze kdo ma cas vacssi ako bol pred 5timi (6timi atd) minutami je online...inak je offline
jj tieto sposoby, ze kedy generoval naposledy stranku su ucinne, ale ja robim taky portal ako booom a tam sa vyhladavaju ludia ktori su lognuti. a lognuti mozu byt kludne aj par hodin bez toho aby niekde klikli. no a toto je to riesenie. to ze to nie je optimalizovane mi vobec nevadi. hlavne ze to funguje a aj to funguje. len by som to chcel skraslit. pri refreshnuti sa zobrazia presypacie hodiny a je vidno ze sa s tym nieco deje. nerefreshne sa stranka ale len ram a to nevidno, ale keby nebolo absolutne nic vidno, tak by to bolo idealne. ale tieto kozmeticke zalezitosti asi poriesim nakoniec
-
caesar1987
Addict
- Príspevky: 3001
- Registrovaný: 02 okt 2005, 0:57
- Bydlisko: Nové Zámky
- Kontaktovať používateľa:
taaakze spravil som to nasledovne... do iframe som hodil tento subor
a overujem pritomnost, vzdy ked sa spusti skript na indexovej stranke. cize vzdy ked niekto niekam klikne. a to takto:
a po tomto sa uz len z db vycucnu ti, ktori su ozaj online. tymto sposobom som dosiahol, ze session nevyprsi a uzivatel moze byt prihlaseny non-stop, no v ponuke online ludi bude len ked bude mat zapnutu tu stranku. a ked v noci vypne pc a rano pride na stranku, bude stale prihlaseny a po 10 minutach bude aj medzi online ludmi.
Kód: Vybrať všetko
<?php
session_start();
include ("./setup.php");
$thour=date('H');
$tmin=date('i');
$tsec=date('s');
$tmonth=date('n');
$tday=date('d');
$tyear=date('Y');
$now=mktime($thour,$tmin,$tsec,$tmonth,$tday,$tyear);
@mysql_query("UPDATE $tab_users SET user_lastsend = '$now', user_online='yes' WHERE user_id = '".$_SESSION['user_id']."'") ;
echo "
<html>
<head>
<meta http-equiv='Refresh' content='$live_time'>
</head>
<body>
</body>
</html>
";
?>
Kód: Vybrať všetko
$filter=MySQL_Query("SELECT * FROM $tab_users WHERE user_online='yes'");
while ($row = mysql_fetch_assoc($filter))
{
$lastsend=$row[user_lastsend];
$thour=date('H');
$tmin=date('i');
$tsec=date('s');
$tmonth=date('n');
$tday=date('d');
$tyear=date('Y');
$now=mktime($thour,$tmin,$tsec,$tmonth,$tday,$tyear);
$rozdiel=$now - $lastsend;
if ($rozdiel > $live_time+60)
{
mysql_query("UPDATE $tab_users SET user_online = 'no' WHERE user_id = '$row[user_id]'");
}
}