Äge statistikaloendur

Lux versioon, ei loe refreshe!

<?php
 
	/*
	 * lihtne counter, mis loeb mitu külastust mitmelt ip-aadressilt saidil on tehtud
	 * ning lisaks palju inimesi parajasti online on
	 *
	 * kasutab sessioone, niiet tasuta zones see ei pruugi töötada
	 *
	 * kasutamiseks lisa soovitud faili algusesse:
	 *
	 *   <? require_once "counter.php"; ? >
	 *
	 */
 
	// kui veel sessioonimajandust pole käivitatud siis teeme sellega algust
	if(!isset($_SESSION))
		session_start();
 
	// defineerime failinimed, nendele tuleb anda kirjutusõigused
	define('_file_counter',			'counter.txt');
	define('_file_last_visits',	'last_visits.txt');
 
	// külastusest peab mööduma tund aega, siis arvestame uut külastust
	// testimise mõttes võid seda aega muuta väiksemaks, nt 10 sek - 
	// siis näed, et pidevalt refreshides külastusi ei muudeta, küll aga
	// siis kui möödunud on vastav aeg sekundeid
	define('_time_visit', 3600);
 
	// funktsioon teeb faili, kui seda veel ei ole, 
	// või ebaõnnestumisel lõpetab töö koos veateatega
	function touch_or_die($fn)
	{
		is_file($fn) or touch($fn) or die('ei saa faili <b>'.$fn.'</b> tekitada');
	}
 
	touch_or_die(_file_counter);
	touch_or_die(_file_last_visits);
 
	// leiame failist viimaste külastajate andmed
	$visits = unserialize(file_get_contents(_file_last_visits));
 
	// sellest muutujuast oleneb, kas külastus lisada faili või mitte
	$count_it = 0;
 
	// kui on tehtud juba mõni külastus siis
	if(!empty($visits))
	{
		// kontrollime ega antud brauserist viimase _time_visit jooksul ole tehtud mõni külastus
		if(isset($visits[session_id()]) && $visits[session_id()] + _time_visit < time())
		{
			// kui ei ole, siis jätame meelde, et külastus tuleb salvestada
			$count_it = 1;
		}
 
		// eemaldame viimastest külastuste seast kõik vanemad kui _time_visit külastused
		foreach($visits as $k=>$v)
		{
			if($visits[session_id()] + _time_visit < time())
			{
				unset($visits[session_id()]);
			}
		}
	}
	// kui aga viimaste külastuste fail on tühi siis tuleks kindlasti antud külastust arvestada
	else
	{
		$count_it = 1;
	}
 
	// uuendame viimase külastaja sessiooni kellaaega
	$visits[session_id()] = time();
 
	// salvestame viimaste külastajate andmed
	$f = fopen(_file_last_visits, 'w');
	fwrite($f, serialize($visits));
	fclose($f);
 
	// leiame üldkülastused
	$dat = unserialize(file_get_contents(_file_counter));
 
	// vajadusel suurendame külastuste arvu
	if($count_it == 1)
	{
		++$dat[$_SERVER['REMOTE_ADDR']];
		$f = fopen(_file_counter, 'w') or die('ei saa faili kirjutada');
		fwrite($f, serialize($dat));
		fclose($f);
	}
 
	// väljastame külastuste arvu
	echo array_sum($dat), ' külastust ', count($dat), ' IP pealt ';
	echo 'lehel viibib ', count($visits), ' külalist';
	unset($dat, $visits, $f);
 
?>
 
counter.txt · Viimati muutnud: 2006/09/09 16:07 (external edit)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki