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

PHP & Base de données Discussion :

Récupérer l'adresse email du visiteur dans une base de données


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 107
    Points : 52
    Points
    52
    Par défaut Récupérer l'adresse email du visiteur dans une base de données
    Bonjour,

    Dans le cadre de mon travail, je dois réaliser contrôler l'ouverture des emailings. Nous avons une liste de personnes inscrites à nos envois d'emailings pour chaque campagne effectuée. Donc je part d'une table dans laquelle je rentre toutes mes adresses emails avant l'envoi de l'emailing dans lequel je met ce code :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="trackingEmail.php?email=$email" />

    Voici ma table :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT EXISTS `connectes_total` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `ip` varchar(15) NOT NULL,
      `email` varchar(50) NOT NULL,
      `nombre` int(11) NOT NULL,
      `timestamp` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


    Et le code de ma page trackingEmail.php
    Je suis partie de mon code dans lequel je récupère l'ip du visiteur et le timestamp que je convertie après en heure exacte mais c'est pour une page présente sur le site. Je ne sais pas trop comment construire le code avec la variable en GET $email pour récupérer l'email du visiteur et l'envoyer dans la base en fait. Est-ce que vous pouvez m'aider ? Merci

    Code php : 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    // Connexion à MySQL
    mysql_connect("localhost", "root", "");
    mysql_select_db("connectes");
     
     
     
     
    // Si un email est renseigné dans l'URL
    if (!empty($_GET['email'])) 
    	{
    		$mail = $_GET['email'];
     
     
    	//Requête sur l'adresse mail
    	$req=mysql_query("select nombre from connectes_total where email='".$email."'");
    	$res=mysql_num_rows($req);
    	if($res > 0) { //Si l'email est connu...
    		mysql_query("update connectes set nombre=nombre+1 where email='".$email."'");
    	}
     
     
     
     
     
    $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees_total FROM connectes_total WHERE ip=\'' . $_SERVER
     
    ['REMOTE_ADDR'] . '\'');
    $donnees2 = mysql_fetch_array($retour);
     
    if ($donnees2['nbre_entrees_total'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
    {
        mysql_query('INSERT INTO connectes_total VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
    }
    else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
    {
        mysql_query('UPDATE connectes_total SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
    }
     
     
    $retour = mysql_query('SELECT COUNT(*) AS nbre_entrees_total FROM connectes_total');
    $donnees2 = mysql_fetch_array($retour);
     
     
     
    echo '<p>Il y a actuellement ' . $donnees2['nbre_entrees_total'] . ' visiteurs connectés sur mon site !</p>';
     
     
     
    }
     
     
    ?>

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    je pars d'une table dans laquelle je rentre toutes mes adresses emails avant l'envoi de l'emailing dans lequel je mets ce code :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="trackingEmail.php?email=$email" />
    Euh... un programme PHP avec un email en paramètre dans une balise <img> ?

    Ce n'est quand même pas ça que tu veux enregistrer dans la BDD ?

    comment construire le code avec la variable en GET $email pour récupérer l'email du visiteur et l'envoyer dans la base en fait.
    Ben si tu as l'email dans $_GET, il suffit de l'utiliser dans tes requêtes d'insertion ou de mise à jour !
    Ou je n'ai pas compris la question, ou tu as mal expliqué !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'est ce qui ne fonctionne pas dans le code que tu nous montres ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 107
    Points : 52
    Points
    52
    Par défaut
    En fait, je ne récupère pas les infos dans la table après l'envoi du mail.
    Pour la partie code à mettre dans l'emailing, est-ce que je dois mettre une image et récupérer l'ouverture de l'image en paramètre ?
    Je ne sais pas comment gérer ça, est-ce qu'il me manque quelque chose dans la table. Ma page de contrôle de visite sans le rajout de l'email fonctionne très bien mais la gestion de l'email me pose problème.
    Mon code dans la page emailing n'est pas bon mais que dois-je mettre ? :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="trackingEmail.php?email=$email" />

    Merci

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme ça à vue d'oeil je ne vois pas d'erreur dans le code.
    La variable coupée en deux entre les lignes 26 et 28 c'est quand même un peu paranormal.

    Il faudrait que tu debug :
    - teste directement depuis ton navigateur en appellant http://tonsite/trackingEmail.php?email=un_email
    - verifie dans l'email que dans la source de ton email $email a bien été remplacé par la valeur attendue
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Si un email est renseigné dans l'URL
    if (!empty($_GET['email'])) 
    	{
    		$mail = $_GET['email'];
     
    	//Requête sur l'adresse mail
    	$req=mysql_query("select nombre from connectes_total where email='".$email."'");
    	$res=mysql_num_rows($req);
    	if($res > 0) { //Si l'email est connu...
    		mysql_query("update connectes set nombre=nombre+1 where email='".$email."'");
    	}
    Ce script traite le cas "email existant => incrémentation de nombre"

    2/ Quid du cas "email inexistant => insertion de l'email" (INSERT...) ?

    3/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query('INSERT INTO connectes_total VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
    Je ne suis pas persuadé que la requête sache deviner à quels champs affecter ces valeurs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      mysql_query('INSERT INTO connectes_total (ip, timestamp) VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
    Il est possible ici aussi d'insérer l'email...

    Idem pour l'UPDATE.

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 107
    Points : 52
    Points
    52
    Par défaut
    Bonjour et merci beaucoup pour vos réponses,

    Je viens de tester à nouveau, ça fonctionne, j'ai bien mon nombre dans la table qui s'incrémente. J'avais fait des erreurs dans les noms de table et noms de variable, à force d'être devant le code, on a du mal à voir parfois.

    Pensez-vous que le code soit assez pertinent pour ce que je veux faire ?
    Dans le cas de l'email inexistant, en fait, le cas ne se présentera pas puisque je pars d'une liste d'emails déjà définis depuis notre base.

    Merci

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Les logiciels de messagerie désactivent souvent l'affichage des images distantes justement pour empêcher le suivi.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Citation Envoyé par sabotage Voir le message
    Les logiciels de messagerie désactivent souvent l'affichage des images distantes justement pour empêcher le suivi.
    Je plussois (+1) la remarque de Sabotage, qui à mon sens cache pas mal de sous-entendus qui en valent long.
    Enfin je pense.

    Je dirais en 1er qu'il serait intéressant de ton coté de faire des recherches sur des Soft ou services (gratuits voir même payant) permettant de faire ce que tu veux : des campagnes d'emailing.
    Il en existent beaucoup est certains particulièrement avancées (envoie en masse + tenter d'avoir des retours sur les mails vus ou/et lu, ce qui n'est pas la même chose soit dit en passant.

    Ensuite, y mettre de l'énergie pour tout créer soit même ce genre d'outil, pourquoi pas, mais c'est hard, faut le savoir.
    Mais de mon coté je pense que l'envoie en masse tout court est suffisant. Pour les retours on s'en fiche pas mal du fait qu'on aura absolument pas la certitudes qu'un mail sera vu et encore moins lu.

    A mon sens il est largement plus intéressant de mettre son énergie (et matière grise) à créer des mails (pour envoie en masse) suffisamment attractifs (force de vente par exemple) dans le but de récolter les fruits.
    C'est ça le plus important, et de loin à mon sens.
    Si le contenu est de qualité les résultats vont obligatoirement se ressentir.
    Soit il aura pour effet d'augmenter le trafique de son site Web, soit pour un site e-commerce de générer des ventes, soit rameter les foules pour une manifestation, etc, etc, etc ...

    Si le contenu est médiocre voir bidon, on ne récoltera rien. Que d'énergie ...

    Bref ... pour ma part, les mails vu/lu est un vrai faut problème, c'est perdre de vu le véritable objectif : communiquer -> service (vente, etc ...)


    Par ailleurs, ce que dit Sabotage, faut aussi comprendre que ça fait des lustres que cette technique est utilisée, du coup des "barrières" ont été crées depuis des lustres aussi pour défendre les utilisateurs, et cela s'apparente à de la fraude, du piratage.
    Grosso modo, c'est tout sauf bénéfique (ce qui risque fort de t'éloigner encore plus de l'objectif que je suppose que tu vises).


    Tout cela sauf erreur, sans vouloir t'effrayer et encore moins je ne sais quoi d'autre.
    Juste de l'info, avec un avis un peu perso, certes
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. [MySQL] Récupérer liste d'emails non inscrits dans une autre table
    Par dldstyle dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/01/2012, 16h14
  2. Réponses: 5
    Dernier message: 27/07/2011, 19h08
  3. Réponses: 7
    Dernier message: 16/10/2008, 16h11
  4. Réponses: 3
    Dernier message: 21/06/2007, 01h10
  5. Réponses: 4
    Dernier message: 22/02/2007, 10h01

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