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); ?>