Autor Zpráva
Derek44
Profil *
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 *
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
Tak udělej databázi... máš to lepší než nějaký soubory ;-)
Derek44
Profil *
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
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 *
Když to právě neumím :-(
Kcko
Profil
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
Derek44:
Tak je čas sa to naučiť :)
Derek44
Profil *
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
Derek44:
jestli chces, tak já ti to za nějakej ten peniz udelam ..
Derek44
Profil *
A kolik to je? Nějakej ten peníz?
protom1
Profil
tak si me pridej na skype, domluvime se.. skype : d8t1k6l

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: