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 :

Fonction mail() : Subject dynamique qui n'est pas respecté


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Fonction mail() : Subject dynamique qui n'est pas respecté
    Bonjour à tous, première discussion sur un forum PHP pour moi.
    Je rencontre un problème de variable qui ne s'affiche pas correctement dans le sujet d'un email envoyé après l'enregistrement d'un formulaire.

    Je vais essayer d'être clair et bref.
    J'ai fait un formulaire d'enregistrement à un service. La base de données (MySQL) se rempli correctement et je voudrais envoyer un email de confirmation contenant une référence qui correspond à l'ID de la ligne où le informations sont enregistrées dans la base de données.

    J'extrais bien l'ID que je mets dans une variable, et je place cette variable dans le "sujet" ET dans le "message" de la fonction mail(). Mon problème est que ça fonctionne au premier essai, mais au deuxième et aux suivants, le sujet montre toujours le même ID initial alors que le message, lui, contient le bon ID.
    Comme si le premier sujet était enregistré en mémoire cache quelque part.

    dans mon code, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ...
    $last_id = $db_handle->lastid($query);
     
    $conf_subj = 'Vos produits sont maintenant enregistrés';
     
    $conf_msg = '<html><body>Votre enregistrement porte la référence [#'.$last_id.']</body></html>';
     
    $conf_headers = "From: MC Care <care@mariescorner.com>\r\n";
    $conf_headers .= "Reply-To: care@mariescorner.com\r\n";
    $conf_headers .= "MIME-Version: 1.0\r\n";
    $conf_headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
     
    mail( $_POST['email'], '[Registration #'.$last_id.'] '.$conf_subj, $conf_msg, $conf_headers );
    Comme expliqué, le premier test me donne un email avec :
    Sujet : [Registration #1] Vos produits sont maintenant enregistrés
    Message : Votre enregistrement porte la référence [#1]

    un second test me donne :
    Sujet : [Registration #1] Vos produits sont maintenant enregistrés
    Message : Votre enregistrement porte la référence [#2]

    un troisième test me donne :
    Sujet : [Registration #1] Vos produits sont maintenant enregistrés
    Message : Votre enregistrement porte la référence [#3]

    Je ne comprend pas, c'est la même variableutilisée de la même manière dans le sujet ou le message et pourtant quand on reçoit l'email, ça n'apparait pas correctement.

    Comment dois-je faire?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    essayez de mettre directement $last_id à la place $conf_msg dans l'appel de "mail(..." pour voir si vous avez le même résultat.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je l'ai fait, mais le résultat reste différent

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Que donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    $last_id = $db_handle->lastid($query);
     
    $conf_subj = 'Vos produits sont maintenant enregistrés';
    $conf_title = '[Registration #'.$last_id.'] '.$conf_subj;
    $conf_msg = '<html><body>Votre enregistrement porte la référence [#'.$last_id.']</body></html>';
     
    $conf_headers = "From: MC Care <care@mariescorner.com>\r\n";
    $conf_headers .= "Reply-To: care@mariescorner.com\r\n";
    $conf_headers .= "MIME-Version: 1.0\r\n";
    $conf_headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
     
    mail( $_POST['email'], $conf_title, $conf_msg, $conf_headers );
    ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Rebonjour jreaux62,
    C'est ce que j'avais fait au départ (mettre la variable de l'ID dans une variable, idem pour le message), mais rien n'y fait. Dans chaque cas, le sujet ne prend pas la dernière version de la variable. C'est vraiment comme si le sujet était en cache.

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Bizarre, vous avez dit bizarre ? Comme c'est bizarre

    En debug de bourrin : si tu fais un var_dump des variables avant l'envoi du mail dans la version de jreaux, ça donne quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    $last_id = $db_handle->lastid($query);
     
    $conf_subj = 'Vos produits sont maintenant enregistrés';
    $conf_title = '[Registration #'.$last_id.'] '.$conf_subj;
    $conf_msg = '<html><body>Votre enregistrement porte la référence [#'.$last_id.']</body></html>';
    var_dump($last_id, $conf_title, $conf_msg)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Octobre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Celira Voir le message
    Bizarre, vous avez dit bizarre ? Comme c'est bizarre

    En debug de bourrin : si tu fais un var_dump des variables avant l'envoi du mail dans la version de jreaux, ça donne quoi ?

    Bonjour Celira,
    Le truc c'est que la variable sort correctement dans le corps de message. Donc, du côté de ma variable, c'est ok.
    Si je met la variable uniquement dans le corps de message, la valeur est toujours bonne,
    si je mets la valeur uniquement dans le sujet de l'email ça apparait correctement la première fois puis plus après,
    et enfin si je mets la variable dans le sujet et le corps du message, le sujet est faux sauf la première fois et le corps est toujours bon.

    Tout ça me fait dire que la valeur de la variable est bonne, mais l'output du sujet, d'une manière ou d'une autre, ne montre pas la dernière version.

    J'ajoute que ce formulaire est dans un template d'un site wordpress dont le plugin WP super cache est activé et qui passe par Cloudflare... L'idée qu'il y ait de la cache me semble probable, ce qui est curieux c'est que l'output du sujet du message et celui du corps du message ne sont pas au même diapason.

    Je ne sais pas à quel niveau cela se passe, mais c'est comme si la page avait enregistré la valeur du sujet lors de la première visite, mais que pour le corps du message, la page lit à chaque vois la nouvelle version.

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/03/2013, 10h10
  2. Hauteur de cellules qui n'est pas respectée
    Par petitours dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 07/11/2011, 13h58
  3. Charger dynamiquement une classe qui n'est pas dans un jar
    Par rastakouair dans le forum Langage
    Réponses: 12
    Dernier message: 17/12/2007, 19h22
  4. Fonction qui n'est pas reconnue
    Par petitours dans le forum IHM
    Réponses: 4
    Dernier message: 17/08/2007, 15h28
  5. [Mail] envoyer un mail qui n'est pas anonyme
    Par mzt.insat dans le forum Langage
    Réponses: 21
    Dernier message: 10/12/2005, 09h16

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