Licznik odwiedzin bez bazy danych
- Przydatne narzędzia
- poziom: początkujący
- aktualizacja: 12 lipca 2026
Licznik odwiedzin to skrypt, od którego wielu webmasterów zaczynało przygodę z PHP. Ta wersja jest napisana porządnie: używa blokady pliku (flock), więc dwa równoczesne wejścia nie nadpiszą sobie nawzajem wyniku, a ciasteczko sprawia, że odświeżanie strony nie nabija licznika.
<?php
/**
* Licznik odwiedzin bez bazy danych — skryptyPHP.com
* Zapisz jako: licznik.php i dołącz na stronie przez require.
* UWAGA: wywołuj PRZED wysłaniem jakiegokolwiek HTML (ustawia ciasteczko).
*/
/**
* Zlicza odwiedziny i zwraca aktualny wynik.
*
* @param string|null $plik ścieżka pliku licznika (domyślnie licznik.txt)
* @param bool $unikalne true = nie licz odświeżeń tego samego gościa
* przez 24 godziny (na podstawie ciasteczka)
*/
function zlicz_odwiedziny(?string $plik = null, bool $unikalne = true): int
{
$plik = $plik ?? __DIR__ . '/licznik.txt';
// Czy tego gościa już dziś policzyliśmy?
$nowaWizyta = !($unikalne && isset($_COOKIE['policzono']));
// 'c+' — otwórz do odczytu i zapisu, utwórz jeśli nie istnieje
$uchwyt = fopen($plik, 'c+');
if ($uchwyt === false) {
return 0; // brak praw zapisu — nie wysypuj strony
}
// Blokada wyłączna: inne wejścia poczekają ułamek sekundy,
// zamiast nadpisywać sobie nawzajem wynik
flock($uchwyt, LOCK_EX);
$stan = (int) stream_get_contents($uchwyt);
if ($nowaWizyta) {
$stan++;
ftruncate($uchwyt, 0);
rewind($uchwyt);
fwrite($uchwyt, (string) $stan);
if ($unikalne) {
setcookie('policzono', '1', [
'expires' => time() + 86400, // 24 godziny
'path' => '/',
'samesite' => 'Lax',
]);
}
}
flock($uchwyt, LOCK_UN);
fclose($uchwyt);
return $stan;
}
// ── PRZYKŁAD UŻYCIA ─────────────────────────────────────────
// Na początku strony (przed HTML!):
$odwiedziny = zlicz_odwiedziny();
?>
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Moja strona</title>
</head>
<body>
<h1>Witaj na mojej stronie!</h1>
<p>Odwiedzin: <strong><?= number_format($odwiedziny, 0, ',', ' ') ?></strong></p>
</body>
</html>
Jak użyć tego skryptu
- Zapisz kod jako
licznik.phplub skopiuj funkcję do swojej strony. - Wywołaj
zlicz_odwiedziny()na samym początku pliku — przed wysłaniem HTML, bo funkcja ustawia ciasteczko. - Plik
licznik.txtutworzy się sam; upewnij się tylko, że PHP może zapisywać w katalogu skryptu. - Aby liczyć każde odświeżenie strony (stary styl liczników), wywołaj
zlicz_odwiedziny(null, false).
Warto wiedzieć
- Blokada
flock(LOCK_EX)to najważniejszy element — bez niej przy dwóch równoczesnych wejściach oba procesy odczytają tę samą wartość i jedno wejście „zniknie". - Ciasteczko odsiewa tylko zwykłych gości — nie jest to statystyka odporna na czyszczenie ciasteczek czy tryb prywatny. Do poważnych analiz użyj np. samodzielnie hostowanego Matomo.
- Jeśli chcesz chronić plik licznika przed podejrzeniem, trzymaj go poza katalogiem publicznym albo zablokuj dostęp w .htaccess.
Podobne skrypty
Generator bezpiecznych haseł
Generator haseł oparty na kryptograficznym random_int(): wybór długości i zestawów znaków, gwarancja użycia każdego zestawu i opcja pomijania mylących znaków (l, 1, O, 0).
początkujący Zobacz kod → Przydatne narzędziaPrzyjazne adresy URL — generowanie slugów
Zamiana dowolnego tytułu na przyjazny adres URL: „Żółta łódź podwodna!" → „zolta-lodz-podwodna". Z pełną mapą polskich znaków i funkcją zapewniania unikalności.
początkujący Zobacz kod → Przydatne narzędziaData i czas po polsku („12 lipca 2026", „5 minut temu")
Wyświetlanie dat w poprawnej polszczyźnie: odmienione nazwy miesięcy i dni tygodnia oraz funkcja „ile czasu temu" z prawidłową odmianą minut, godzin i dni.
początkujący Zobacz kod →