Tak a už tady máme první seriál. Jak nadpis napovidá, budeme programovat počítadlo on-line čtenářů Vašich stránek a to v provedení dvěma způsoby.
Náš první způsob bude za použití MySQL databáze
Nejprve tedy budeme potřebovat nějakou SQL tabulku, do které budeme zapisovat při příchodu čtenáře jeho IP adresu.
Potom si také budeme muset zapsat čas příchodu. Tabulka tedy vypadá takto.
CREATE TABLE `online` ( `id` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT , `kdo` VARCHAR( 20 ) , `cas` DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL , PRIMARY KEY ( `id` ) );
Otázka je, jakým způsobem naše počítadlo bude pracovat. Je to jednoduché - při příchodu čtenáře si zapíšeme čas příchodu na naše
stránky i jeho IP adresu a zároveň zjistíme kolik je již zapsaných čtenářů v tabulce a také rovnou odstraníme již neaktivní čtenáře.
Vytvoříme si soubor třeba online.php a vložíme do něj následující kód.
Tady je tedy náš kód:
$spojeni = mysql_connect("server","login","password");//pripojeni k databazi
mysql_select_db("nase databaze");// vybrani databaze
$pristup=date("Y-m-d H:i:s"); // aktualni cas
$tolerance=date("Y-m-d H:i:s",time()+30); // 30sekund
$kdo=$_SERVER["REMOTE_ADDR"];// ip adresa
$result = mysql_query("select from online where kdo='".$kdo."'");// zjisteni je-li ctenar jiz v databazi
if (mysql_num_rows($result)==0):
//pokud ne
@mysql_query("insert into online values(null,'".$kdo."','".$pristup."')");//pridame ho
else:
//pokud ano
@mysql_query("update online set cas=".$pristup." where kdo='".$kdo."'");//aktualizujeme cas
endif;
@mysql_query("delete from online where cas<".$tolerance."");//smazani jiz neplatnych udaju
$online = mysql_num_rows(mysql_query("select from online");//spocitani online lidi
echo $online;//vypiseme pocet on-line ctenaru
?>
Náš druhý způsob bude bez pomoci MySql databáze
Princip našeho on-line počítadla bude stejný, jen data si budeme ukládat do souboru. Také chci upozornit, že soubor, do kterého budeme data zapisovat,
musí mít nastaveny atributy (chmod) na 777.
Vytvoříme si soubor online.php a také datový soubor online.dat (pozor na atributy).
Do souboru online.php vložíme následující kód.
Tady je náš kód:
if (!$nazevsouboru):
$nazevsouboru="pocitadlo/online.dat";//cesta k nasemu datovemu souboru
endif;
$kdo=$_SERVER["REMOTE_ADDR"];// ip adresa
$pristup=date("Y-m-d H:i:s"); // aktualni cas
$tolerance=date("Y-m-d H:i:s",time()+30); // 30sekund
$fp=fopen("$nazevsouboru", "a+");
$zapis="$kdo^$pristup\n";
fputs($fp,$zapis);
fclose($fp);
$obsah="";
$i = 0;
$data = file($nazevsouboru);
for ($num=0;$num$tolerance):
$obsah.= $pole[0];
$obsah.= ",";
endif;
$i++;
endfor;
$obsah= substr($obsah,0,strlen($obsah)-1);
$pom_pole=explode(",",$obsah);
$online = count(array_flip(array_flip($pom_pole)));
// Vypíše počet online uživatelů
echo $online;
// Mazání prošlých záznamů
$delete="";
for ($pom=0;$pom$tolerance):
$delete.="$del_data[0]^$del_data[1]";
endif;
endfor;
if (!$nazevsouboru):
$nazevsouboru="pocitadlo/online.dat";
endif;
$kdo=$_SERVER["REMOTE_ADDR"];// ip adresa
$pristup=date("Y-m-d H:i:s"); // aktualni cas
$string="$delete";
$fa=fopen("$nazevsouboru","w+");
fputs($fa,$string);
fclose($fa);
?>