jaq: zjistit kolik je lidi zrovna cte online
22 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
diky
-
Pomocí databáze a session. Vždycky když si stánku někdo otevře nebo klikne na ni na nějaký odkaz, uložit jeho session ID do databáze spolu s aktuálním datem+časem, případně datum+čas pouze aktualizovat pokud již dané SID v databázi je. Problém je ale s určením, kdo stránky OPUSTIL, lépeřečeno HTTP na to neposkytuje žádnou možnost. Takže jediné co se snad dá použít je když budeš zobrazovat seznam lidí co jsou online, tak vypsat jen ty, u kterých datum+čas poslední akce je novější než cca 5 minut. Problém je že jestli někdo stránku jen otevře a hned zmizí, tak ještě 5 minut bude veden jako že si ji právě prohlíží. Další problém je, že pokud někdo stránku otevře a bude si ji číst (bez klikání na další odkazy) déle než 5 minut, tak přestane být veden jako online.
-
<?php $server ="mysql.wz.cz"; $db_user =""; $db_pass =""; $database =""; $timeoutseconds = 300; // tolerance 5 min $timestamp=time(); $timeout=$timestamp-$timeoutseconds; mysql_connect($server, $db_user, $db_pass) or die ("ERROR : ve spojeni s tabulkou useronline"); mysql_db_query($database, "INSERT INTO online VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')") or die("ERROR : v zapisu do tabulky useronline"); mysql_db_query($database, "DELETE FROM online WHERE timestamp<$timeout") or die("ERROR : ve smazani TIMEOUTu v tabulce useronline"); $result=mysql_db_query($database, "SELECT DISTINCT ip FROM online WHERE file='$PHP_SELF'") or die("ERROR: ve vycucnuti udaju z tabulky useronline"); $user=mysql_num_rows($result); mysql_close(); if ($user=="1"): echo "Online je: $user člověk"; else: if ($user<"5"): $ozne = "é"; //toto nám zajistí koncovku (etenáoi,etenáou,...) echo"Online jsou: $user lid$ozne"; else: $ozne = "í"; echo"Online jsou: $user lid$ozne"; endif; endif; ?>
-
CREATE TABLE online ( timestamp int(15) DEFAULT '0' NOT NULL, ip varchar(40) NOT NULL, file varchar(100) NOT NULL, PRIMARY KEY (timestamp), KEY ip (ip), KEY file (file) );
-
je to to cos chtel?
-
Nechápu ty čachry s proměnnou $ozne, proč prostě v každé větvi if nemáš jiné echo? (Online jsou: $user lidé , Online je: $user lidí). Navíc takhle jde změnit i to slovo jsou/je. Dále řízení se podle IP není úplně ideální, protože např. v jednom podniku / škole můžou spousty lidí mít stejnou IP (stejný proxy server).
-
lamac: diky, uz sem to podbne sesmolil tom: presne to sem mel na mysli - takze sem to nakonec udelal pres session ALE - porad je tam ten problem s tim timeoutem... existuje nejakej l¨jinej zbusob? diky obema + vsem dalsim ;-)
-
mno, muzes bejt prase, udelat framy, v jenom by se zobrazovala stranka a v tom druhym by byl nakej meta-refresh nebo JS, kterej rekneme kazdejch 10s udela refresh na nakej srciptik, kterej to zaznamena ... ale radsi bych se tomuhle postupu vyhnul
-
Nene, to má budoucnost! Vraž tam třeba < img src="image.php" name="obr" > kterej ti javascript obnoví třeba každou půl minutu. V image.php si vošéfuješ zápis aktuálního návštěvníka do db a generuješ obrázek 1x1 px. :-) Nebo ten obr. může bejt větší a přímo ti dynamicky vypisovat ten aktuální počet návštěvníků, to by bylo úplně profi! @!#$ the people kterejm se ten obrázek nezobrazí (třeba že maj vypnutý obrázky)
-
@!#$ the people kterejm se ten obrázek nezobrazí (třeba že maj vypnutý obrázky).... na čo sú alty?
-
stanley: chápeš to špatně jde o to že když maj vypnutý obrázky tak ten prohlížeč vůbec nepožádá server o ten obrázek => tenhle user se nezapočítá do návštěvníků
-
ale keď je to i-frame, tak prehliadač požiada o stránku, ktorá v ňom má byť, nie? napr: activity-checker.php obsahuje: <hlavičky> <meta tag s refreshom> (s pamäti to neviem) <body> <img src="image-generator.php?id=214531115447" alt=" <?php $on_line=funkcia_ktora_to_zisti ( "214531115447" ); // to ID z9ska5 samozrejme nejakým korektným spôsobom echo "Online je $on_line užívateľov"; ?> > </body> PMSN (IMHO)
-
iframe často blbne, aspoň já s nim mam takovou skušenost. Mělo by být jedno jestli se bude refreshovat obrázek nebo iframe, já bych podle zkušenosti řek, že ten obrázek je spolehlivější, ale nevim...
-
lenže pokiaľ viem, tak na refresh obrázka potrebujem Java, JS a na refresh i-frame mi stačí metatag. (PMSN)
-
Refreshovat pravidelně stránku v iframe mi nepřipadá moc vhodné. Když už, tak jedině pokud to návštěvníkům sdělíš, aby se nedivili proč mají každou chvíli přenášeny přes síť nějaká data aniž by věděli proč.
-
to je jasné, tu sa skôr rieši, či a ako realizovať zisťovanie on-line užívateľov (mimo time limitu v DB). Prečo by sme to mali zatajovať, a pokiaľ to bude viditeľný obrázok (zobrazujúci text o on-line užívateľoch) tak by si to mal užívateľ všimnúť, nie? a pri texte by to tiež malo blikať (IMHO). no a tu by sa dalo využiť zabudnuté marguee ?:-) (kde by mohlo to varovanie rolovať)
-
Ježíš proboha marquee neeeeee!
-
to bol vtip
-
jj. dik, jak tak koukam (jelikoz tu stranku navstevujou vetsinoiu modemari) zustanu u DB a timeoutu.. dik vsem
-
Stejně to refreshování má ještě další mouchy oproti "timeoutu". Jde o to, že když si někdo stránku otevře, nechá ji v prohlížeči a jde třeba na dvě hodinky pryč, tak bude pořád veden jako že si stránku čte, celé dvě hodiny. Zatímco při "timeoutu" ho to za xx minut vymaže.
-
čo takto zkombinovať, refresh a timeout (po xx min sa zobrazí hláška "Ak žiješ, klikni") aj tak je to blbosť (refresh), lebo ak má DB limit 6000/hod (wz), tak pri kontrole po pol min. je možné za hodinu strážiť iba 50 užívateľov, inak treba využiť nedatabázové riešenia (na wz) a to všetky prístupy zhltne len on-line checking ?:-(
-
osobne pouzivam zvlastni tabulku on-line useru, kde je cas posledni aktivity, SID a podrobnejsi identifikacni udaje (IP, browser etc.), mazani neaktivnich obstarava kontrolni skript, likvidujici krom neaktivnich i uzivatele s nejakeho duvodu nespravnymi udaji typu SID nebo IP (bezpecnostni opatreni) seznam aktivnich je pak prosty... pocet radku tabulky