Autor | Zpráva | ||
---|---|---|---|
Derek44 Profil * |
#1 · Zasláno: 13. 7. 2014, 17:41:19 · Upravil/a: Derek44
Chtěl bych ukazovat na hlavní stránce kolik je v chatu (vytvořil jsem jednoduchou stránku s chatem) lidí. Mám php co mi ukazuje počet online lidí. Jak to mám ale udělat abych viděl na hlavní stránce že je v chatu třeba 0 lidí? Když to počítadlo vložím do iframe tak mi to ukazuje že jsem online na chatu a to není pravda. Tak poradíte někdo prosím?
index.php: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title>Počet online uživatelů</title> </head> <body> <p>Toto je velmi zajímavá stránka.</p> <p><?php include('readers.php'); ?></p> </body> </html> readers.php: <?php $fcrr='readers.txt'; // jméno souboru, do kterého ukládat IP adresy návštěvníků $IPadresa=$_SERVER['REMOTE_ADDR']; // sem "naskládame" vše, co lze o čtenáři zjistit odděleno zavináčem (adresy uživatelů za proxy ap.) if ($_SERVER['REMOTE_HOST']) $IPadresa.='@'.$_SERVER['REMOTE_HOST']; if ($_SERVER['HTTP_X_FORWARDED_FOR']) $IPadresa.='@'.$_SERVER['HTTP_X_FORWARDED_FOR']; if ($_SERVER['HTTP_FORWARDED']) $IPadresa.='@'.$_SERVER['HTTP_FORWARDED']; if ($_SERVER['HTTP_CLIENT_IP']) $IPadresa.='@'.$_SERVER['HTTP_CLIENT_IP']; if ($_SERVER['X_HTTP_FORWARDED_FOR']) $IPadresa.='@'.$_SERVER['X_HTTP_FORWARDED_FOR']; if ($_SERVER['X_FORWARDED_FOR']) $IPadresa.='@'.$_SERVER['X_FORWARDED_FOR']; $aktual=time(); $pole=file($fcrr); //přiřadit jméno souboru k poli for($i=0; $i<Count($pole); $i++) // procházet pole { $adresa=StrTok($pole[$i],':'); // rozdělit na adresu a čas záznamy oddělené dvojtečkou $cas=StrTok(':'); if ($adresa==$IPadresa) // pokud se adresa rovná některému záznamu, vyřadit jej (vymazat) z pole $pole[$i]=''; if ($cas<($aktual-10)) // pokud vypršel timeout 6 minut, vyřadit záznam (vyřadí se neaktivní uživatelé) $pole[$i]=''; } $Fp=FOpen($fcrr,'w'); // otevřít soubor pro zápis $celkem=0; // vyčistit proměnnou for($i=0; $i<Count($pole); $i++) { if ($pole[$i]!='') // je-li co zapsat po předchozím "vyčištění" pole { FPutS($Fp,$pole[$i]); // pak zapsat prvek pole do souboru $celkem++; // zvýšit počítadlo uživatelů } } FPutS($Fp,$IPadresa.':'.$aktual."\n"); // připsat adresu aktuálního uživatele a jeho čas $celkem++; // zvýšit počítadlo o 1 (o aktuálního uživatele) FClose($Fp); // zavřít soubor // v $celkem je nyní počet uživatelů online $mess1='čte'; $mess2='lidí'; if ($celkem<5) if ($celkem>1) { $mess1='čtou'; $mess2='lidé'; } else $mess2='člověk'; // vyskloňovat podle počtu uživatelů echo "Stránku si právě $mess1 $celkem $mess2."; // vypsat počet uživatelů se správným skloňováním ?> Děkuji Jde o to abych ukazoval počet online uživatelů na jiné stránce. Co mám dát do stránky index2 aby mě to ukazovalo kolik lidí je na stránce index? |
||
Micruss Profil |
pokud ty uživatele ukládáš do souboru, tak proč neotevřeš ten soubor a ne nespočítáš kolik tam je uživatelů?
asi tak nějak: <?php $file= file('readers.txt'); $count = count($file); echo "... $count uživatel/ů"; ?> |
||
Derek44 Profil * |
#3 · Zasláno: 13. 7. 2014, 19:01:37
No protože když se podívám třeba po hodině do toho souboru tak je tam pořát ip adresa toho uživatele, nepromazává se to.
|
||
Micruss Profil |
#4 · Zasláno: 13. 7. 2014, 19:19:21
Tak udělej databázi... máš to lepší než nějaký soubory ;-)
|
||
Derek44 Profil * |
#5 · Zasláno: 13. 7. 2014, 19:25:41
To ale nevím jak.
Nevím jestli jsem to správně popsal. Potřeboval bych aby mě to na stránce aaaaaa.php ukazovalo kolik lidí je na stránce bbbbbb.php online. |
||
Marti_n Profil |
#6 · Zasláno: 13. 7. 2014, 20:28:44
Ako napísal Micruss, zvolil by som databázu. Stačí ti jedna tabuľka kde si uložíš id stránky, ip adresu a čas posledného načítania stránky tej dotyčnej ip adresy. Teda:
1) Prídem na stránku aaaa.php , mám IP 127.1.0.0 a čas je 19:00 2) Skontroluje sa mi či už dotyčná IP je v databáze pri konkrétnej stránke 3) Ak áno, tak len updatneš nový čas teda uložil by si iba preformatované 19:00 Ak nie, tak pridáš riadok do databázy vo forme (ID STRANKY, IP, CAS) K id stránky, zvol si vlastné označenie, neukladaj celé názvy že aaaa.php, ale príklad povedzme si že aaaa.php bude mať svoje ID = 1 (lepšie ukladať numerickú hodnotu ako celý string) 4) Vo výslednom súbore bbbb.php si len zobrazíš z databázy všetky riadky, ktore majú ID = 1 (náš súbor aaaa.php) a ich čas poslednej akcie je väčší ako aktuálny - 10minút.. (teda môžeš si dať vlastný počet minút, podľa ktorých budeš posudzovať či je daná IP online. V našom prípade ako som napísal je IP adresa s poslednou aktivitou menšou ako 10 minút považovaná za offline. |
||
Derek44 Profil * |
#7 · Zasláno: 13. 7. 2014, 20:32:40
Když to právě neumím :-(
|
||
Kcko Profil |
#8 · Zasláno: 13. 7. 2014, 21:00:51
Derek44:
Nevadí, určitě umíš něco jiného. A tohle si můžeš koupit, od toho je tu sekce Práce a zakázky. |
||
Marti_n Profil |
#9 · Zasláno: 13. 7. 2014, 21:24:33
Derek44:
Tak je čas sa to naučiť :) |
||
Derek44 Profil * |
#10 · Zasláno: 13. 7. 2014, 21:32:09
Našel jsem že mám v chatu proměnnou která ukazuje počet online uživatelů. Jak ji mám ale vložit do jiné stránky to už nevím.
|
||
protom1 Profil |
#11 · Zasláno: 13. 7. 2014, 21:46:00
Derek44:
jestli chces, tak já ti to za nějakej ten peniz udelam .. |
||
Derek44 Profil * |
#12 · Zasláno: 13. 7. 2014, 22:04:15
A kolik to je? Nějakej ten peníz?
|
||
protom1 Profil |
#13 · Zasláno: 13. 7. 2014, 22:13:55
tak si me pridej na skype, domluvime se.. skype : d8t1k6l
|
||
Časová prodleva: 10 let
|
0