E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Diverse (10)

Contorizarea numarului de accesari sau vizitatori unici pentru o pagina .php

01.06.2010
Contorizarea numarului de accesari sau vizitatori unici pentru o pagina .php

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.

Total vizualizari: 8761 8761 afisari   |   Comentarii  2   |   Rating   |   (6 voturi)   |   Timp necesar: 20 min 20 min   |   Nivel de cunostiinte necesar: Mediu  Mediu

Autor: mozzartut Expert
Download
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
1
comenteaza printeaza

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.

<?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']:

<?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.

<?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 :

<?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:

<?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
$fd = fopen ($locatie, "r"); 
$contents = fread ($fd, filesize($locatie)); 
fclose ($fd); 
 
// Adaugam o accesare noua
$contents=$contents+1; 
echo "<span class='vizualizari'>";
echo "$contents vizualizari"; 
echo "</span>";
 
// Salvam noua inregistrare
$fp = fopen ($locatie, "w"); 
fwrite ($fp,$contents); 
fclose ($fp); 
 
// memoram adresa ip a utilizatorului in variabila $ip
$ip = $_SERVER['REMOTE_ADDR'];
// calculam timpul de expirare al cookie-ului in secunde (timpul curent + 24 h)
$expira = time()+60*60*24;
?>

Afisarea vizitelor (arata-vizite.php)

Acest fisier va fi afisat de fiecare data cand un cookie este detectat pe pagina respectiva. Are o structura relativ asemanatoare cu a celui anterior, cu mentiunea ca acesta nu face decat sa afiseze numarul de accesari memorate in fisierul text.

<?
$pagina = basename($_SERVER['SCRIPT_FILENAME']);
 
// Schimbam extensia din ".php" in ".txt"
$pagina = str_replace('.php','.txt',$pagina);
 
// Stabilim locatia fisierului 
$locatie = "counter/$pagina";
 
// Deschidem fisierul si afisam numarul de accesari
$fd = fopen ($locatie, "r"); 
$contents = fread ($fd, filesize($locatie)); 
fclose ($fd);
echo "<span class='vizualizari'>";
echo "$contents vizualizari"; 
echo "</span>";
?>

Includerea fisierelor (index.php)

In final, incarcam cele doua fisiere in pagina dorita folosind urmatorul cod:

<span class="vizualizari"><?php
if(isset($_COOKIE['pagina1'])){
    include "arata-vizite.php";
}
else{
    include "numara-vizite.php";
    setcookie("pagina1", $ip, $expira);
}
?></span>

Obs: Pentru a functiona corect, este necesar ca valorile atribuite cookie-ului sa nu se repete pe alte pagini. Spre exemplu: daca pe pagina curenta utilizam $_COOKIE['pagina1'] si setcookie("pagina1"), pe pagina urmatoare trebuie sa schimbam valorile in $_COOKIE['pagina2'] si setcookie("pagina2").

Pentru a descarca sursele, inclusiv fisierul .css, acceseaza linkul Download din partea de sus a paginii.

Pagina:
1
comenteaza printeaza

Cuvinte cheie:   php,   vizitatori unici,   cookie,   contorizare,   ip,   fopen

Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(6 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (2) spune-ti parerea
mozzartut mozzartut , Sambata, 12 Iunie 2010, ora 12:58
#2

In urmatoarele tutoriale voi folosi tabele mysql, stay tuned:)

Raporteaza acest comentariu ca injurios!
alexandyducu , Vineri, 11 Iunie 2010, ora 07:59
#1

cred ca apeland o baza de date (MySql) se poate renunta la fisiere de tip .txt, si se poate pastra un istoric al accesarilor ca numar / IP

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
5050
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
5005
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4845
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4825
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4620
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
XML JSON AJAX PSD SWF Photoshop Fireworks Java Bridge PHP SEO XHTML Word CSS Dreamweaver Flash StyleSheet Excel Ruby on Rails Lightroom Action Script Fotografie Vista Outlook Powerpoint Gimp Swift 3D Illustrator Python COREL DRAW RoR MySQL Javascript Sony Vegas HTML Verilog
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software