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

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

PHP + MySQL Data aktualizacji: 18.12.2019

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

Mamy zadanie do wykonania - stworzenie prostego licznika 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.

dhosting

Autor: Bartosz Stefanicki. Data publikacji: 16.05.2015. Tagi: blog, licznik, php, skrypt, strona internetowa.

Komentarze