Jak zrobić licznik odwiedzin odporny na odświeżanie?

Data aktualizacji: 22.04.2024r. Autor: Bartosz Stefanicki.

Jak zrobić licznik odwiedzin odporny na odświeżanie?

Prosty licznik odwiedzin, który zliczałby 1 wejście w ciągu jednej doby 1 osoby. Jak zrobić taki licznik odporny na odświeżanie?

Skorzystamy w tym wypadku z ciasteczek (ang. cookies) - do ich zapisu służy funkcja setcookie():

setcookie(nazwa_ciasteczka, jego_wartość, czas_przechowywania_na_komputerze)

Tworzymy dwa pliki licznik.php oraz licznik.db, który pozostawiamy pusty. Zawartość pliku licznik.php:

<?php ob_start(); ?>
<html>
<head>
</head>
<body>
<?php
/* --- OPERACJA NA CIASTECZKACH, DODAJEMY WARTOŚCI */
/* warunek: jeżeli nie ma ciasteczka w pamięci przeglądarki o nazwie licznik_cook, z wartością 1 to: */
if(!$_COOKIE['LicznikCook']){

/* jeżeli plik z bazą danych (licznik.db) istnieje i jest zapisywalny (chmod: 666), to: */
if(file_exists("licznik.db")){
	if(is_writeable('licznik.db')){

	/* pobieramy zawartość tego pliku i podwyższamy jego wartość, np. z 34 na 35 */
	$bdpobierz = file_get_contents("licznik.db") + "1";

	/* otwieramy plik licznik.db - bazę danych */
	$bdzapisz = fopen("licznik.db", "w");

	/* nadpisujemy istniejącą wartość na tą ze zmiennej $bdpobierz, następnie zamykamy */
	fwrite($bdzapisz, $bdpobierz);
	fclose($bdzapisz);
	}
}

/* wysyłamy przeglądarce ciasteczko o nazwie licznik_cook, z wartością 1 (przykładowa wartość) oraz ustawiamy jego ważność na 24 godziny */
setcookie("LicznikCook", '1', time()+3600*24);
}

/* --- WYŚWIETLAMY ILOŚĆ ODWIEDZIN */
/* sprawdzamy, czy plik bazy danych istnieje */
if(file_exists("licznik.db")){

	/* sprawdzamy, czy plik bazy danych jest zapisywalny (666) */
	if(is_writeable('licznik.db')){

		/* pobieramy plik */
		$bdpokaz = file_get_contents("licznik.db");

		/* wyświetlamy zawartość, czyli ilość odwiedzin */
		echo "Licznik odwiedzin: $bdpokaz".'.<br/><br/>';

		/* jeżeli plik nie jest zapisywalny wyświetlamy komunikat o błędzie: */
		}else{echo "Plik nie jest zapisywalny. Ustaw chmody na 666.";}

}else{echo "Plik nie istnieje. Utwórz plik licznik.db i wgraj go na serwer.";}

?>
</body>
</html>

To wszystko. Zadanie wykonane.

Kategorie: PHP + MySQL. Tagi: #php, #skrypt, #blog, #licznik, #strona internetowa. Źródło obrazków: Pixabay, Font awesome.

Zobacz także

3 komentarzy