Rank: Moderator Status: Posturi : 1146 Reputatie : 36 Data de Inscriere : 09/02/2014 Oras : RGZ City Varsta : 25
| Subiect: Contorizarea numarului de accesari sau vizitatori unici Mier Aug 20, 2014 12:23 pm |
|
| In acest tutorial va voi arata cum sa calculati numarul de vizitatori unici al unei pagini web cu ajutorul PHP. Pentru fiecare pagina in care vom folosi aceasta metoda de contorizare vom crea un cookie diferit.
Un cookie este un fisier text ce este salvat de catre browser pe calculatorul utilizatorului. Un cookie retine una sau mai multe perechi de tipul nume-valoare, ce pot fi encriptate pentru a securiza datele.
In cadrul acestui tutorial vom folosi cookie-uri diferite pentru fiecare pagina. Acest lucru este necesar pentru a putea contoriza cate o vizita pe fiecare pagina pe care utilizatorul o acceseaza.
Cookie-ul va fi initializat utilizand functia predefinita setcookie() din php, ce are ca parametri numele cookie-ului, valoarea si ora cand expira. Timpul de expirare este calculat cu functia time() - ce returneaza data si ora curenta exprimate in secunde, la care adaugam o durata de 24 de ore, exprimata de asemenea in secunde. In acest mod, un vizitator va fi contorizat o singura data pe zi. Code: - Cod:
-
<?php // calculam timpul de expirare al cookie-ului in secunde (timpul curent + 24 h) $expira = time()+60*60*24; ?>
Un utilizator va fi identificat prin adresa sa IP. Desigur, daca dintr-un anumit motiv, aceasta se schimba la repornirea calculatorului sau reconectarea la internet, utilizatorul respectiv va fi contorizat ca un nou vizitator. Adresa IP a utilizatorului poate fi preluata din variabila superglobala $_SERVER, mai precis ea este returnata de proprietatea $_SERVER['REMOTE_ADDR']: Code: - Cod:
-
<?php // memoram adresa ip a utilizatorului in variabila $ip $ip = $_SERVER['REMOTE_ADDR']; ?> Numararea vizitelor (numara-vizite.php) Pentru inceput, trebuie sa ne asiguram ca accesarile unei pagini vor fi memorate. Vom atribui fiecarei pagini contorizate un fisier text. Apoi, cu ajutorul valorii returnate de functia basename($_SERVER['SCRIPT_FILENAME']), ce va fi stocata in variabila $pagina, putem afla numele fisierului pentru fiecare pagina in parte. Code: - Cod:
-
<?php $pagina = basename($_SERVER['SCRIPT_FILENAME']);?> In acest mod, variabila $pagina va contine titlul paginii cu extensia ".php". De exemplu, daca includem "numara-vizite.php" in fisierul "index.php", variabila $pagina va fi egala cu "index.php".
In continuare, vom crea un fisier text cu acelasi nume. Pentru aceasta, inlocuim extensia .php a fisierului cu .txt : Code: - Cod:
-
<?php // Schimbam extensia din ".php" in ".txt" // Rezultat: "index.txt" $pagina = str_replace('.php','.txt',$titlu_site); ?> Apoi, cream directorul counter si deschidem cu functia fopen fisierul ce va memora accesarile paginii. Atribuim continutul fisierului variabilei $contents, careia la randul ei ii adaugam "1". Iata codul complet: Code: - Cod:
-
<?php $pagina = basename($_SERVER['SCRIPT_FILENAME']);
// Schimbam extensia din ".php" in ".txt" $pagina = str_replace('.php','.txt',$pagina); // Stabilim locatia fisierului $locatie = "counter/$pagina"; $fp = fopen ($locatie, "a+"); fwrite ($fp, ""); fclose ($fp); // Citim continutul fisierului - Cod:
-
$fd = fopen ($locatie, "r"); $contents = fread ($fd, filesize($locatie)); fclose ($fd);
// Adaugam o accesare noua - Cod:
-
$contents=$contents+1; echo "<span class='vizualizari'>"; echo "$contents vizualizari"; echo "</span>";
// Salvam noua inregistrare - Cod:
-
$fp = fopen ($locatie, "w"); fwrite ($fp,$contents); fclose ($fp);
// memoram adresa ip a utilizatorului in variabila $ip - Cod:
-
$ip = $_SERVER['REMOTE_ADDR']; // calculam timpul de expirare al cookie-ului in secunde (timpul curent + 24 h) $expira = time()+60*60*24; ?> |
|