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 :

Stocker le contenu d'un fichier.php dans une variable php?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Débutant en XSLT
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Débutant en XSLT

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 32
    Points
    32
    Par défaut Stocker le contenu d'un fichier.php dans une variable php?
    Bonjour,

    Dans un fichier mail.php je met en page un mail (formaté html).

    Dans un fichier envoie.php j'utilise la fonction mail() pour envoyer ce mail.

    J'aimerais pouvoir stocker le code html contenu dans le fichier mail.php dans une variable $message afin de l'utiliser dans ma fonction mail().

    Est-ce possible ?

    Pour le moment j'utilise la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = include('mail.php');
    Mais quand je fais :
    Il me retourne la valeur "1" ...


    Merci d'avance.

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Salut,

    Utilise la fonction file_get_contents() en mettant l'URL http:// étant donné qu'il faut que ton PHP soit interprété :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail = file_get_contents('http://localhost/TON_URL/mail.php');
    ++

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Non faut pas faire comme ça. Il faut que $message soit égal à ta chaine de caractère qui constitue le message formaté html.

    include permet d'inclure du code mais pas de l'affecter à une variable. Dans ce cas cela te retourne 1 parce que la fonction a trouvé le fichier mail.php. L'inclusion s'est faite correctement mais il n'y a pas eu d'affectation de code à la variable.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    ... je viens de lire le message de Khleo

    Effectivement si ton fichier mail.php contient exclusivement le texte de ton message avec ses balises html tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail = file_get_contents('mail.php');
    (par rapport au message de Khleo j'ai mis 'mail.php' pour dire que tu peux utiliser les url relatives)

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Salut,

    Oui, uniquement si son fichier .php contient uniquement du texte. (Bizarre de lui avoir donné cette extension, un .htm ou un .txt aurait suffit.)

    ++

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Débutant en XSLT
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Débutant en XSLT

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Bonjour,
    Merci pour vos réponses rapides !

    Si j'utilise un mail.php c'est parce j'étais partie sur une logique de travail "pratique".
    J'ai séparé header, contenu et footer puisque je vais être amené à faire des modifications, en séparant tout ça je peux travailler plus clairement.


    J'ai fais le test avec la fonction que vous m'avez conseillée. A savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = file_get_contents('http://mon_url/mail.php')
    Pour le moment je ne peux tester que sur un server Free et voilà ce qu'il me répond :
    Warning: file_get_contents(http://mon_url/mail.php) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /mnt/104/sdb/a/f/mon_url/envoie.php on line 58
    *J'ai remplacé l'url par "mon_url" car elle était longue!

    Dois-je en conclure que Free interdit cette fonction ? Ou le bug vient de ma manip' ?

    (à savoir que l'envoie de mail html fonctionne si j'écris le code à la main, en string, dans ma variable $message)
    J'ai fais un test avec un fichier mail.htm et je l'ai appelé avec la fonction file_get_contents()... mais j'ai la même erreur.

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Et en essayant file_get_contents('mail.php') ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Débutant en XSLT
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Débutant en XSLT

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = file_get_contents('mail.php')
    Plus d'erreur de Free, mais j'ai un mail vierge.


    Par contre avec un fichier html
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = file_get_contents('mail.htm')
    Ca fonctionne !

    Je peux me contenter de ca. Mais comme dis plus haut, idéalement, j'aurais aimé pouvoir inclure dans ma variable $message, le code html interprété dans mon mail.php
    Pour plus d'aisance de travail.

    Si qqun à une idée, sur la faisabilité (ou pas!) je suis toujours preneur.
    Autrement, je viendrais cocher ce topic comme "Résolu" en fin d'aprèm.

    A bientôt et merci encore!

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Montres-nous le code de mail.php.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Débutant en XSLT
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Débutant en XSLT

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Le code de mail php est très succinct, comme dis plus haut, je fais des includes pour séparer mes zones de travail.
    Idéalement, j'aimerais garder cette structure (sinon autant travailler directement en html) surtout qu'en développant la mise en page de mon mail/newsletter, ca va se complexifier (il faut mettre les styles en inline alors...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    include_once('mail-header.php');
     
    include_once('mail-contenu.php');
     
    include_once('mail-footer.php');
    ?>

    Voici ce que ca donne une fois compilé en html :
    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
    37
    38
    39
    <html> 
     
    <head> 
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    </head> 
     
    <body> 
     
    <!--Div conteneur--> 
    <div style="background:pink; font-family:arial; font-size:12px;"> 
    	<!--Div du header--> 
    	<div style="background:white; text-align:center; width:600px; margin:auto;"> 
     
    		<img style="display:block; margin:auto;" src="img/#" width="600px" height="75px" alt="happyfew-header"/> 
     
    	</div> 
    	<!--Fin du Div du header--> 
     
    	<!--Div du cadre du contenu--> 
    	<div style="background:purple; width:580px; min-height:450px; margin:auto; padding:10px;"> 
     
    		<img src="img/#" style="display:block; margin:auto;" width="450px" height="60px" alt="happyfew-logo"/> 
    		<p>Bonjour,</br> 
    		</br> 
    		Contenu blabla bla...</p> 
    		<img style="display:block; margin:auto; margin-top:75px;" src="img/#" height="150px" width="300px" alt="happyfew-reassurrance"/> 
    	</div> 
    	<!--Fin du Div du cadre du mail--> 
     
    	<!--Div du footer--> 
    	<div style="background:white; font-size:10px; text-align:center; width:600px; margin:auto; padding-top:5px; padding-bottom:5px;"> 
    	Blablabla du Footer
    	</div> 
    	<!--Fin du Div du footer--> 
     
    </div><!--div conteneur--> 
    </body> 
     
    </html>
    Pour infos, ce même code html passe avec la fonction file_get_contents() quand le fichier est un .htm !

    Merci de se pencher sur le pb en tout cas

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    une fois compilé en html
    Même si on comprend, c'est très fort de compiler du PHP
    Et pour info, ça signifie quoi
    <img src="img/#">
    ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Débutant en XSLT
    Inscrit en
    Avril 2011
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Débutant en XSLT

    Informations forums :
    Inscription : Avril 2011
    Messages : 54
    Points : 32
    Points
    32
    Par défaut
    Interpréter serait mieux ?

    Je n'ai pas fini la mise en page. J'ai mis une # en attendant de mettre le nom du fichier.jpg

    Ca aurait une incidence sur la récupération du html avec file_get_contents()?
    Je rappelle que je n'ai pas de soucis quand j'utilise cette fonction avec un fichier mail.htm qui contient le code vu plus haut.

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Ca aurait une incidence sur la récupération du html avec file_get_contents()?
    Je laisse répondre les spécialistes. Mais pour tester, remplace le # par un vrai fichier.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  14. #14
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 519
    Points : 311
    Points
    311
    Par défaut
    Salut,

    Normalement, il faut utiliser les includes avec des pincettes (et a bonne escient) car ils utilisent beaucoup de ressources.

    Je te conseil d'utiliser des fonctions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function mail_header ()
    {
        return 'mon header...';
    }
     
    function mail_contenu ()
    {
     
    }
     
    function mail_footer ()
    {
     
    }
    Chacune de tes fonction retournera le résultat présent dans tes fichiers.

    Ensuite, pour envoyer ton mail, tu as juste à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mail = mail_header().mail_contenu().mail_footer()
    ++

  15. #15
    Futur Membre du Club
    Homme Profil pro
    AFPA
    Inscrit en
    Novembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : AFPA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Si jamais tu veux utiliser les includes tu peu toujours dans ton fichier mail.php faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $message = 'Mon code HTML';
    et dans envoie.php tu fait un include de mail.php et tu utilise la variable $message

    M'enfin la tu devrais avoir assez de solutions différentes pour trouver ce dont tu as besoin

  16. #16
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 194
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 194
    Points : 8 409
    Points
    8 409
    Billets dans le blog
    17
    Par défaut
    Une autre possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function get_email( )
    {
        ob_start( ) ;
        include 'path/to/mail.php' ;
        return ob_get_clean( ) ;
    }
     
    $email = get_email( ) ;
    Ainsi on conserve la facilité d'édition de mail.php tout en évitant d'éventuelles collisions de variables.
    A voir si free supporte les fonctions ob.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

Discussions similaires

  1. [PHP-JS] Une variable PHP dans une autre page
    Par Nooby dans le forum Langage
    Réponses: 22
    Dernier message: 25/06/2008, 17h07
  2. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 14h08
  3. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Langage
    Réponses: 3
    Dernier message: 12/06/2006, 14h02
  4. Réponses: 12
    Dernier message: 26/01/2006, 09h30

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