Chti cadeau : detection temsp réel nouveaux visiteurs


Zecat
WRInaute accro
WRInaute accro
 
Messages: 11992
Inscription: 1 Mar 2005

Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Sam Aoû 21, 2010 13:08

Dans un autre topic, on a eu une discussion sur les possibilités ou non possibilités d'une gestion des datas en fichiers sur le serveur plutot qu'en bdd ...

Et comme je viens de me coder un petit truc qui illustre bien la chose, je vous le livre ...

Objet : Identifier en temps réel si un visiteur est nouveau ou pas (plus besoin d'attendre analytics pour connaitre son % de nouvelles visites ...)
Mise en oeuvre : Juste un include a ajouter au debut de chaquepage de votre site
Impact sur votre base données : aucun, nada, nib, quedalle :wink:
Impact sur votre serveur : juste un dossier IP_OK avec quelques doc.txt dedans. Pensez à le creer (le code de la routine ne contient pas de is dir ni de mk dir ... ils ont sauté au gré de mes copier couper coller )

Le principe : On maintient a jour une liste des ip visiteuses du site avec pour chaque ip sa date de première visite. cette liste est stockée sous forme de petits blocs (sur les 4 premieres catactères de l'ip). Pour info (puisque vous n'avez pas à vous en préoccuper, le bloc nommé IP_24_1.txt aura un contenu de ce type :

Code: Tout sélectionner
2010_07_11/24.155.12.83/
2010_07_14/24.107.66.174/
2010_07_17/24.139.146.155/
2010_07_22/24.122.245.184/
2010_07_31/24.161.187.65/
2010_07_31/24.196.173.243/
2010_08_03/24.161.99.99/
2010_08_03/24.192.240.80/
2010_08_04/24.13.133.85/
2010_08_08/24.122.17.8/
2010_08_12/24.118.198.193/
2010_08_12/24.141.247.77/
2010_08_13/24.144.245.97/
2010_08_13/24.132.46.191/
2010_08_19/24.183.217.111/


La routine : il vous suffit de créer nv_routine.php sur votre serveur et de coller dedans le code ci-dessous :

Code: Tout sélectionner
<?
// La routine nv_memo.php est a appeler par un include en tete de chaque page
// juste après avoir fait un start_session. Elle identifie le visiteur et maintient
// à jour la 'table' des IP datée (première apparition). En sortie, elle retourne
// deux infos :
// 1 - si le visiteur est un nouveau ou pas
// 2 - la date de premiere visite
//
// Toutes la variables du script sont préfixées $nv_ ou nv_ pour les variables session
//
// *** Note : pour ceux qui ne veulent pas gérer de sessions, il suffit de mettre $nv_session
// a false ci-dessous
//
// *** Note 2 : le format de date est AAAA_MM_JJ parce que j'en avait besoin par ailleurs sous
// cette forme mais libre a vous d'adopter un autre format. Par contre la position de la date
// devant l'ip dans les fichiers n'est pas innocente : elle permet un accès aisé à la date avec
// $nv_pos-10 quelle que soit la longueur de l'IP.
//
// *** Note 3 : J'ai retenu une longueur de 4 caractères pour le decoupage des fichiers d'IP car
// cela me semble un bon compromis en terme de ratio nb de fichiers / taille unitaire des fichiers.
// Si vous avez une très forte volumétrie de visiteurs, il pourra être opportun de gérer la chose
// avec les 5 premiers caractères (plus de fichiers mais pas de fichier trop gros).
//
// *** Note 4 : J'ai volontairement fait l'impasse sur les flock ... en effet, la nature meme du
// script fait que si sur une page, le hasard fait que ca passe pas, le visiteur a toutes les chances
// d'être correctement mémorisé à la page suivante (acceptable dans ce contexte).

$nv_session=true;
$nv_datejour=date ("Y_m_d");

// ---------- l'ip une premiere fois en debut de session

if ($nv_session)
{
   if (isset($_SESSION['nv_addr']) === false)
      {
            $nv_addr=$_SERVER['REMOTE_ADDR'];
             $_SESSION['nv_addr']=$nv_addr;      
      }
      else
      {
            $nv_addr=$_SESSION['nv_addr'];      
      }
}
else
{
   $nv_addr=$_SERVER['REMOTE_ADDR'];
}

//
// ---------- on ajoute au fichier des IP pour détection des new visitors
//
// on fabrique le nom du fichier (4 premiers car de l'ip)

$nv_deb_ip=$nv_addr[0].$nv_addr[1].$nv_addr[2].$nv_addr[3];
   if ($nv_deb_ip[1] == ".")
   {
      $nv_deb_ip[1]="_";
   }
   if ($nv_deb_ip[2] == ".")
   {
      $nv_deb_ip[2]="_";
   }
   if ($nv_deb_ip[3] == ".")
   {
      $nv_deb_ip[3]="_";
   }

$nv_chemindoc=$_SERVER["DOCUMENT_ROOT"]."/IP_OK/IP_".$nv_deb_ip.".txt";
$nv_chaine_ip="/".$nv_addr."/";
$nv_pos=false;
$nv_new=false;

if (file_exists($nv_chemindoc))
   {
      $nv_liste_ip=file_get_contents($nv_chemindoc);
      $nv_pos=strpos($nv_liste_ip, $nv_chaine_ip);
   }

if ($nv_pos === false) // c'est un new, on l'ajoute
   {
      $nv_fpagesreferer = fopen ($nv_chemindoc, "a+");
      fputs ($nv_fpagesreferer, $nv_datejour.$nv_chaine_ip."\n"); 
      fclose ($nv_fpagesreferer);
      $nv_date_first=$nv_datejour;
      $nv_new=true;
   }
   else // c'est un existant, on recupere date premiere visite
   {
      $nv_date_first=substr($nv_liste_ip, $nv_pos-10, 10);
      if($nv_date_first == $nv_date_jour)
         {
            $nv_new=true;
         }
   }

// ----- En sortie
//
// $nv_new : false ou true
// $nv_date_first : date de premiere visite de l'ip
?>


puis d'ajouter en debut de chaquepage de votre site un simple appel par include :

Code: Tout sélectionner
include("nv_routine.php");


En sortie :

1 - la "table" des ip est maintenue a jour
2 - deux variables vous indiquent si le visiteur est nouveau ainsi que sa date de premiere visite.

Note : On peut bien sur faire la meme chose en stockant en bdd mais le propos ici était juste de montrer que c'est tout aussi facile (sans besoin d'aspirine) et performant en fichier .txt (et donc pas besoin d'encombrer une bdd avec ce type d'infos).

Note 2 : comme j'ai fait des copier coller pour l extraire de mon code et des renommages pour rendre la chose plus lisible, il peut trainer quelques bug mineur ou faute de frappe, merci de signaler les erreurs ...

Note 3 : J'ai fait l'impasse sur les flock partant du principe que dans ce contexte ce n'est pas vital du tout et dans le cas (rare) de conflit, de toute façon le visiteur sera mémorisé à la page suivante ...

Note 4 : le choix $nv_deb_ip=$nv_addr[0].$nv_addr[1].$nv_addr[2].$nv_addr[3]; peut surprendre ... j'explique : une vieille habitude du travail dans les bdd ou chaque fois que je le peux je réduis l'utilisation des appels à des commandes et donc au moteur du langage (dans certains langages c'est important, je ne sais pas si cela a un impact en php par rapport a un substr). Idem pour les 3 tests qui suivent au lieu d'un simple str_replace.

A votre disposition si vous avez des questions sur les choix faits ...

Magic33
WRInaute discret
WRInaute discret
 
Messages: 182
Inscription: 5 Sep 2006

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Sam Aoû 21, 2010 17:54

Merci


ricosound
WRInaute impliqué
WRInaute impliqué
 
Messages: 566
Inscription: 25 Oct 2009

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 6:37

Salut le chat.

Voila une contribution fort intéressante ; merci et une reco. :D

Bonne journée, Éric.


saypee
WRInaute accro
WRInaute accro
 
Messages: 2859
Inscription: 7 Mai 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 6:39

Merci Zecat, pour quand le Php Rank 2 ?


Zecat
WRInaute accro
WRInaute accro
 
Messages: 11992
Inscription: 1 Mar 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 10:48

Il me semble que cette thématique (datas sans bdd) pourait faire l'objet de multiples petits outils mis à dispo de la communauté ... j'ai donc proposé cela a Olivier :

Salut olivier,

Je pense qua ca serait sympa d'initaliser un nouveau forum dédié aux développements alternatif "sans base de données".

Illustration avec un premier topic :

http://forum.webrankinfo.com/chti-cadeau-detection-temsp-reel-nouveaux ... 32396.html

Et du coup si ce type de petits scripts se multiplient, ca serait pratique de les avoir aisément sous la main :

- Dans un topic unique : peu pratique ... ou alors faut gérer un index en debut de topic ... mais au bout d'un certain temps on peut plus editer ... et puis ca va vite devenir un topic enorme inexploitable.

Solution : Un nouveau forum "Gestion de datas hors base de données" (placés sous le forum "Developpement d'un site web").

Si tu le crée, merci de deplacer le topic chti cadeau dedans ...

Robinson
WRInaute passionné
WRInaute passionné
 
Messages: 2233
Inscription: 25 Oct 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 17:13

Bonjour,

Tout est basé sur l'IP... suffit qu'elle change comme c'est le cas quotidiennement pour au moins 60% des internautes pour l'identifier comme nouveau...
Où est la pertinence ?

Analytics ne se base également que sur l'IP ? Je n'en ai pourtant pas l'impression...


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 17:24

Personnellement je n'ai jamais trouvé cette information comme fiable. Intéressante oui, mais fiable. La tendance peut être intéressante mais la valeur absolue... je ne sais pas. Il faudrait établir un comparatif en fonction des autres sites du meme secteur.


Zecat
WRInaute accro
WRInaute accro
 
Messages: 11992
Inscription: 1 Mar 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 17:40

Bien sur que l exercice a ses limites, celles de la fiabilité de l'information IP ... perso à l'usage cela permet quand même d'etre moins dans le brouillard ... et apres analyse plus poussée, le résultat reste tres tres proche de ce que fournit google Analytics.

Mais bon là le propos était surtout le stockage de datas hors bases de données ...


Zecat
WRInaute accro
WRInaute accro
 
Messages: 11992
Inscription: 1 Mar 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 18:01

Robinson a écrit:Bonjour,

Tout est basé sur l'IP... suffit qu'elle change comme c'est le cas quotidiennement pour au moins 60% des internautes pour l'identifier comme nouveau...
Où est la pertinence ?

Analytics ne se base également que sur l'IP ? Je n'en ai pourtant pas l'impression...

GA se base aussi très probablement sur le js pour filtrer en amont ... c'est aussi ce que je fais sur mon site en réel avec 2 filtrage en amont :

- la détéction du js non activé (un refresh en noscript vers une page chargeant une var)
- l'identification préalable d'une liste de bots connus

et donc je n'applique mon suivi que sur ce qui reste (du vrai visiteur donc pour l'essentiel). Alors c'est vrai reste le probleme des IP qui changent ... mais bon les synthèses me paraissent néanmoins assez probantes.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 19592
Inscription: 8 Aoû 2004

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 18:08

Robinson a écrit:Analytics ne se base également que sur l'IP ? Je n'en ai pourtant pas l'impression...
non, sur les cookies. En plus, sur l'ip, avec les utilisateurs qui passent via des proxy (grandes entreprises, université, ...) et ceux qui passent par des plateformes (genre téléphone mobile), cela fait pas mal de cas où une même ip peut correspondre à plusieurs utilisateurs


Zecat
WRInaute accro
WRInaute accro
 
Messages: 11992
Inscription: 1 Mar 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 18:14

Leonick a écrit:cela fait pas mal de cas où une même ip peut correspondre à plusieurs utilisateurs

Oui mais la probabilité que deux utilisateurs récupérant la meme IP viennet ensuite sur ton site sur une courte période avec cette même IP doit statistiquement réduire les cas à pas grand chose (en tout cas sur des sites a petit ou moyen traffic).


finstreet
WRInaute accro
WRInaute accro
 
Messages: 16999
Inscription: 10 Juil 2005

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Dim Aoû 22, 2010 23:12

Zecat a écrit:
Leonick a écrit:cela fait pas mal de cas où une même ip peut correspondre à plusieurs utilisateurs

Oui mais la probabilité que deux utilisateurs récupérant la meme IP viennet ensuite sur ton site sur une courte période avec cette même IP doit statistiquement réduire les cas à pas grand chose (en tout cas sur des sites a petit ou moyen traffic).


les IP d'université et de grosses boites, surtout quand tu écris un article sur la boite en question


Marie-Aude
Modérateur
Modérateur
 
Messages: 11878
Inscription: 5 Juin 2006

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Lun Aoû 23, 2010 0:18

Merci, reco aussi :)


detectimmobilier
WRInaute passionné
WRInaute passionné
 
Messages: 2182
Inscription: 21 Fév 2009

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Lun Aoû 23, 2010 0:52

Merci, reco tout pareil


sim100
WRInaute passionné
WRInaute passionné
 
Messages: 1443
Inscription: 2 Fév 2003

Re: Chti cadeau : detection temsp réel nouveaux visiteurs

Message le Lun Aoû 23, 2010 4:11

Et pour les gros sites, le fichier va vite contenir des millions de lignes...

Chti cadeau : detection temsp réel nouveaux visiteurs

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités