Wykombinowałem skrypt, który chyba w pełni wykonuje to, co chcesz osiągnąć jednak działa trochę inaczej- odczytuja ostatnią linię z pliku count.txt i sprawdza czy zawiera ona dziejszą datę (data zapisana jest jako rok i numer dnia w roku)- jeśli tak to kasuje tą ostatnią linię i zapisuje taką samą, tyle, że ze zwiększonym licznikiem, jeśli ostatnia linia zawiera inną datę- dopisuje nową linią z dzisiejszą datą i licznikiem ustawionym na "1":
counter.php<?php
$counter_file = \"count.txt\";
/* Skrypt ma wykonac następjące czynności:
- ustalić dzisiejszą datę
- wczytać ostatnią linię w pliku
- pobrać wartość licznika w tej linii
- sprawdzić czy ostatnia linia zawiera dzisiejszą datę
- otworzyć plik
- jeśli tak- kasuje ostatnią linię i zastępuje ją nową linią z powiększoną wartością licznik
- jeżeli nie- dopisuje nową linię z dzisiejszą datą i licznikiem ustawionym na \"1\" */
$today_date = gmdate(\"Yz\");
$file_cont = file($counter_file); $file_last_line = $file_cont[count($file_cont)-1
]; $file_last_line_lenght = strlen($file_last_line);
$file_last_line = explode(\"t\",$file_last_line); $file_counter = (int) $file_last_line[1];
if(!($fp = fopen($counter_file, \"a+\"))) die (\"Nie mogę otworzyć $counter_file.\");
if($file_last_line[0] == $today_date)
{
echo \"Jesteś \".$file_counter++.\" osobą na stronie. Wartość licznika dla dzisiejszego dnia została zwiększon
a\"; fwrite($fp, $today_date . \"t\" . $file_counter . \"rn\"); }
else
{
$file_counter = 1;
echo \"Jesteś pierwszą osobą dziś. Zapisałem nową linię w pliku z dzisiejszą datą.
\"; fwrite($fp, $today_date . \"t\" . $file_counter . \"rn\"); }
?>
Zeby zobaczyć sobie czy działa możesz utworzyć plik count.txt o np. następującej treści:
count.txtKod
2004189 5
2004190 1
2004191 13
A taki skrypt odczyta wartości z licznika i wyświetli na stronie:
show_counter.php<style>
td {border: 1px solid; border-color: #000; width: 100px;}
</style>
<table>
<tr><td>Dzień</td><td>Ilość odwiedzin</td></tr>
<?php
$counter_file = \"count.txt\";
//skrypt wyświetla w formie tabelki liczbę odwiedzin w poszczególnych dniach
$file_cont = file($counter_file); foreach($file_cont as $day_count)
{
$date_and_counter = explode(\"t\", $day_count); echo \"<tr><td>$date_and_counter[0]</td><td>$date_and_counter[1]</td></tr>\"; }
?>
</table>
Tu są przykłady-
skryptu licznika i
skryptu odczytującego ilości odwiedzin.Mam nadzieję,że o to Ci chodziło.
Pozdrawiam.
Bartek