Précédent   Le Forum de Génération Nouvelles Technologies > Logiciels > Développements
S'inscrire Stats IRC FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus

Développements Tout ce qui touche au développement d'applications ou du Web

Réponse
 
LinkBack Outils de la discussion Modes d'affichage
Vieux 16/08/2007, 22h24   #1 (permalink)
rider74
Débutant
 
Avatar de rider74
 
Date d'inscription: février 2005
Localisation: Faverges - Haute-Savoie
Messages: 77
Pouvoir de réputation: 0 rider74 est bien parti(e)
Par défaut Votre avis sur mon script de tracking de mail

Bonjour,

J'ai développé un script php couplé avec une bdd permettant de faire du suivi d'e-mailing. A savoir: qui a lu le mail? quand? A-t-il visité le site web indiqué dans le mail depuis le mail?

Pour cela, je mets une balise <img> dans mon mail qui pointe vers une page php. Pour les infos de click sur les liens, j'ai modifié l'index du site avec un peu de php qui récupère l'IP et qui fait +1 sur un compteur dans la base de données.

Ma table sql retour possède 5 champs:
mail=mail du destinataire
nombre=nombre de lecture
date=date de lecture
adripmail= @Ip de lecture
web=nombre de visites sur le site depuis le mail

Lors de mon envoi de mail, j'importe toutes les adresses dans la table et j'initialise tous les champs.

J'aimerai avoir votre avis sur la façon dont j'ai codé le script (c'est mon premier script) et s'il est "optimal" (pas de cas boiteux oublié):
Voici l'algo final auquel je suis parvenu:
ImageShack - Hosting :: algogk5.jpg
Voici le code associé:
Code:
//Récupération de l'@ IP
        if($_SERVER)    {
                        if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
                                        $adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
                                elseif(isset($_SERVER['HTTP_CLIENT_IP']))
                                        $adress = $_SERVER['HTTP_CLIENT_IP'];
                                else
                                        $adress = $_SERVER['REMOTE_ADDR'];
        }
        else            {
                                if(getenv('HTTP_X_FORWARDED_FOR'))
                                        $adress = getenv('HTTP_X_FORWARDED_FOR');
                                elseif(getenv('HTTP_CLIENT_IP'))
                                        $adress = getenv('HTTP_CLIENT_IP');
                                else
                                        $adress = getenv('REMOTE_ADDR');
        }
        //Test sur l'adresse IP
        $iptmp=mysql_query("select adripmail from retour where mail='$mail'");
        $adrip=mysql_fetch_array($iptmp);
        //@IP = valeur par défaut -> nouvelle lecture -> mise à jour de tous les champs
        if($adrip['adripmail']=="xx")
        {
                mysql_query("update retour set nombre=nombre+1, date='$date', adripmail='$adress' where mail='$mail'");
        }
        else
        {
        //Seconde lecture
                //Si @IP actuelle est différente de celle enregistrée
                if($adress!=$adrip['adripmail'])
                {
                        //Test pour éviter les doublons
                        $req=mysql_query("select * from retour where adripmail='$adress' and mail='$mail'");
                        $res=mysql_num_rows($req);
                        if($res=='0')
                        {
                                //Si non présent, on insère une nouvelle ligne dans la base
                                $mailencod=utf8_encode($mail);
                                mysql_query("insert into retour(mail,nombre,date,adripmail,web) values('$mailencod','1','$date','$adress','0')");
                        }
                        else
                        {
                                //Sinon, update du compteur de lecture
                                mysql_query("update retour set nombre=nombre+1 where mail='$mail' and adripmail='$adress'");
                        }
                }
                //Sinon mise à jour du compteur de lecture
                else
                {
                mysql_query("update retour set nombre=nombre+1 where mail='$mail' and adripmail='$adress'");
                }
        }
J'ai pas tout mis car le début est pas utile, c'est la connexion au sql et la récupération du mail.
Pour ma part, je l'ai testé et il semble fournir le résultat attendu...

Merci d'avance de vous pencher dessus.
rider74 est déconnecté   Réponse avec citation
Réponse



Utilisateurs regardant la discussion actuelle : 1 (0 membre(s) et 1 invité(s))
 

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are non
Outils de la discussion
Modes d'affichage


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Votre avis sur notre application de e-learning CIEL Discussions diverses 0 03/04/2006 16h40
Avis Sur Mon Projet De Config vince94800 Conseils 11 20/12/2004 19h10
Votre avis pour créer mon reseau NiC1305 Connexions Internet 1 19/07/2003 01h54
Besoin de votre avis sur le choix d'un sécuritaire holrick Sécurité & virus 7 30/04/2003 16h10
je vous expose mon probleme donnez moi votre avis merci! bil007 Connexions Internet 3 25/07/2002 13h39


Fuseau horaire GMT +2. Il est actuellement 17h03.

S'inscrire Charte Stats IRC FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus

Hit-Parade NewsNow