IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Tracking Cookie (Bug création cookie)


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Tracking Cookie (Bug création cookie)
    Bonjour à tous,

    Après plus d'une semaine de galère et de recherche sur le net (et sur ce forum), je me décide à vous exposer mon projet... et le soucis que je n'arrive guère à comprendre

    Je travaille actuellement sur un petit outil de tracking pour de petites campagnes mail.

    Le fonctionnement du script est des plus trivial pour le moment :
    • Les liens de la créa mail pointent vers mon serveur qui récupère l'identifiant de l'annonceur et l'email qui a reçu ce dernier.
    • Lors du clic, l'internaute est tout d'abord redirigé vers mon serveur, les informations sont stockés en BDD (pour les stats nombre de clicks) et le script "tente" (car c'est ici que ça coince) de créer un cookie sur le poste client avec pour information -> son email + identifiant de l'annonceur.
    • Lorsque l'internaute remplit le formulaire, la page de confirmation contient un pixel de tracking qui appelle une page sur mon serveur avec l'identifiant de l'annonceur.
    • Cette page teste si le poste client possède bien mon cookie et cas échéant récupère les infos et les stocke en BDD.


    Voici grosso modo le fonctionnement actuel du script.

    Ma page de création Cookie + Redirection page formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    $bdd=new PDO(); //connexion à ma BDD
     
    // Fonction de création COOKIE
    function initCookie($params){
        foreach($params as $key=>$value){
            setCookie($key,$value,time() + 30*24*3600, '/track/','.ndd.fr',FALSE,TRUE);
        }
    }
     
    if(isset($_GET['i'])&&isset($_GET['email'])){ // On teste les variables GET
        $params=array('annonceur'=>$_GET['i'],'email'=>$_GET['email']);
    	// Je teste si la campagne existe bien en BDD
        $sql="SELECT c_id,c_lien FROM campagne WHERE c_id = ".$_GET['i'];
        $mysql=$bdd->query($sql);
        $result=$mysql->fetch(PDO::FETCH_OBJ);
    	// Si oui je fait mes traitements (créa cookie + redirection)
        if($result==1){
            $link=$result->c_lien;
    		// Création cookie
            initCookie($params);
    		// Insertion BDD pour les stats clics
            $sql="INSERT INTO clicks(ck_email,ck_date,ck_c_id) VALUES ('".$_GET['email']."','".date('Y-m-d G:i:s')."','".$_GET['i']."')";
            $mysql=$bdd->query($sql);
    		// Redirection vers la page formulaire
            header("Location: ".$link."");
            exit();
        }
    }
    Suite à de nombreux tests, il apparaît que c'est lors de cette étape que mon processus bug... La création des cookies est en effet plus qu'aléatoire. Lors de mes tests ça ne pose aucun soucis, le cookie est bien crée et le processus fonctionne à chaque fois... Par contre, en production, il apparaît que le Cookie est crée 1 fois sur 10... Je n'arrive pas à localiser ce qui cloche Il peut-être utile de préciser que le suivi des clics est opérationnel, mes stats étant similaires aux reportings Emailvision

    Récupération Cookie pour stats formulaire rempli

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    // Connexion BDD
    $bdd=new PDO();
     
    // Fonction qui détruit les Cookies présents sur le poste Client
    function destroyCookie($cookieTemp){
        foreach($cookieTemp as $key=>$value){
            setcookie($key,'',time() - 30*12*3600,'/track/','.ndd.fr',FALSE,TRUE);
            unset($_COOKIE[$key]);
        }
    }
     
    // Je teste si l'id de l'annonceur est bien renseigné
    if(isset($_GET['trk_client_id'])&&!empty($_GET['trk_client_id'])){
    	// Je teste si l'id correspond bien à une campagne en base
    	$sql="SELECT c_id FROM campagne WHERE c_id = ".$_GET['trk_client_id'];
    	$mysql=$bdd->query($sql);
    	$result=$mysql->fetch(PDO::FETCH_OBJ);
    	if($result==1){
    		// Si oui je teste si les cookies existent bien et que l'id passé en GET correspond bien à l'id Annonceur du cookie client
    		if(isset($_COOKIE['email'])&&!empty($_COOKIE['email'])&&$_COOKIE['annonceur']==$_GET['trk_client_id']){
    			$sql="SELECT l_id FROM leads WHERE l_email='".$_COOKIE['email']."'";
    			$cookieTemp=array('email'=>$_COOKIE['email'],'annonceur'=>$_COOKIE['annonceur']);
    			$mysql=$bdd->query($sql);
    			$result=$mysql->fetch(PDO::FETCH_OBJ);
    				// Je teste si le client n'a pas déjà effectué d'inscription pour éviter les doublons
    				if($result==0){
    					// Si nouvel inscription j'enregistre les infos en BDD et j'appelle la fonction qui supprime les cookies
    					$sql="INSERT INTO leads(l_email,l_date,l_c_id) VALUES ('".$_COOKIE['email']."','".date('Y-m-d G:i:s')."','".$_GET['trk_client_id']."')";
    					$mysql=$bdd->query($sql);
    					if($mysql==TRUE){
    						destroyCookie($cookieTemp);
    					}
    				}
    		}
    	}
    }
    Je teste si la campagne existe bien en BDD, si le cookie est présent et correspond bien à l'annonceur passé en GET par mon pixel de tracking. Cas échéant j'enregistre les données en BDD et je détruis les cookies...

    Pixel de tracking

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://ndd.tld/lds.php?trk_client_id=9" height="0" width="0" />
    Ce dernier se trouve dans le code de la page de confirmation qui fait suite à l'inscription.

    Comme préciser précédemment, mes tests démontrent (ou pas ) que le problème pourrait se situer au niveau du premier script... Lors des tests sur hébergement lambda (OVH + O2Switch) le processus se déroule sans accroc mais coince lors de véritables routages tests... Je ne récupère qu'à peine 10% des inscriptions

    Je me tiens à votre disposition pour toute précision & cie

    Merci à vous.

    Cdt

    Leptik

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Après de multiples recherches & tests... Il s'avère que le problème n'était autre que la création et récupération de cookies "tiers" sous Internet Explorer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème création cookie en ligne
    Par maxime.philippe dans le forum Langage
    Réponses: 1
    Dernier message: 12/08/2010, 23h24
  2. [Cookie] Bug de la date d'expiration
    Par AsPrO dans le forum ASP.NET
    Réponses: 0
    Dernier message: 13/08/2009, 11h29
  3. création cookie identifiant
    Par linoa002 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 0
    Dernier message: 04/03/2008, 13h21
  4. Réponses: 4
    Dernier message: 24/11/2006, 15h43
  5. [Cookies] problème création setcookie
    Par swingstar dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2006, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo