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 :

Intégration de page PHP et récupération de données lors d'envoi d'email


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Intégration de page PHP et récupération de données lors d'envoi d'email
    Bonjour,

    Voilà, je travaille sur mon Framework servant au développement de portail d'informations depuis maintenant plus de 8 mois.
    Il tourne déjà très bien, mais je souhaite en améliorer certaines parties, et cette fois je rencontre un réel problème qui n'est pas vraiment un problème de langage mais de logique (je pense).

    Voilà, lors de l'inscription sur un portail un email de confirmation est envoyé au visiteur, cela permettant d'activer le compte (Un peu comme ici sur developpez.net).
    Le soucis est que suivant les portails, l'email à une certaine présentation graphique parfois poussée, l'email contient donc un contenu HTML.

    Je n'utilise pas PHP mail mais travaille directement avec le SMTP, mais le soucis n'est pas lié.
    Actuellement tout le contenu HTML qui est envoyé par mail est repris dans une variable $body = "Balise et contenu";
    Je souhaiterais sortir ces informations dans un fichier externe, afin de facilité le travail des designer, mais le gros soucis est que j'ai dans ce contenu HTML du code PHP.

    Exemple actuel fonctionnel simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $body .= "Merci pour votre inscription ".$this->user->firstname;
    Je suis dans un controlleur, et dans une Action (Typiquement un peu dans la même optique que Zend), j'ai un objet $user créé avec les propriétés de l'utilisateur, je me sers de ces propriétés pour personnaliser le document à envoyé.
    J'ai testé différentes méthodes et nada...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function monAction(){
    $user = new User();
    $user->mail = "test@test.be";
    Fichier externe __DIR__."/../Mail/signup.php" <--Ce fichier contient le code HTML + une partie d'affichage de l'objet pour la personnalisation, exemple : <?php echo $user->mail; ?>
    Ces codes ne fonctionnent pas
    file_get_contents("signup.php") -> je reçois bien l'email avec le contenu mais je vois a l'affichage <?php echo $user->mail; ?> qui est le code inclus dans la page.

    J'ai également testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ob_start();
    include  __DIR__."/../Mail/signup.php";
    $data = ob_get_contents();
    ob_end_clean();
    Et pareil... Il ne prend pas en compte l'objet créé juste au dessus...
    Y à t'il une possibilité pour inclure un fichier externe, faire en sorte qu'il tienne compte des variables & objets créés avant son inclusion, mettre le tout en variable et utiliser cela dans un envoi mail ?
    J'aimerais ne plus à créer 50 lignes $body .= "Mon contenu, blablabla, merci ".$user->firstname." pour votre confiance";

    Bref je ne sais pas si vous comprendrez...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 101
    Points : 144
    Points
    144
    Par défaut
    Bonjour,

    Normalement quand tu inclus un fichiers, les variables existantes dans le même périmètre que l'appel à l'instruction "include" sont accessibles dans le fichier inclus.

    Montres nous le code (entier) ou cela ne fonctionne pas car tu ne montres que l'encapsulation avec ob, mais pas l'instanciation du User dans ton troisèeme bloc de code.

    Sinon, si tu veux vraiment faire du template à destination de designer, tu peux aussi mettre en place des patterns à toi du style ((MAIL)), ((NOM)), que tu laisses dans la maquette et que tu remplacera dans le code PHP une fois la maquette lue via un file_get_contents classique.

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Le problème à été résolut de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ob_start();
    include __DIR__."/../Mail/signup.php";
    $body = ob_get_contents();
    ob_end_clean();

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/02/2011, 14h12
  2. PHP-> PDF : récupération de données. problème
    Par rastignac dans le forum Windows
    Réponses: 2
    Dernier message: 10/04/2008, 13h50
  3. Réponses: 1
    Dernier message: 16/08/2007, 18h04
  4. Réponses: 6
    Dernier message: 12/08/2007, 11h10
  5. [PHP-JS] Récupération de données
    Par info_plus dans le forum Langage
    Réponses: 4
    Dernier message: 06/07/2007, 17h30

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