Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/05/2011, 02h36   #1
Candidat au titre de Membre du Club
 
Homme
Débutant en XSLT
Inscription : avril 2011
Messages : 53
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Débutant en XSLT

Informations forums :
Inscription : avril 2011
Messages : 53
Points : 12
Points : 12
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 :
$message = include('mail.php');
Mais quand je fais :
Il me retourne la valeur "1" ...


Merci d'avance.
PouetteMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 03h21   #2
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
Salut,

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

Code :
$mail = file_get_contents('http://localhost/TON_URL/mail.php');
++
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 03h23   #3
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
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.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 03h32   #4
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
... 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 :
$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)
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 03h36   #5
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
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.)

++
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 10h23   #6
Candidat au titre de Membre du Club
 
Homme
Débutant en XSLT
Inscription : avril 2011
Messages : 53
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Débutant en XSLT

Informations forums :
Inscription : avril 2011
Messages : 53
Points : 12
Points : 12
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 :
$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 :
Citation:
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.
PouetteMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 12h06   #7
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
Et en essayant file_get_contents('mail.php') ?
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 12h24   #8
Candidat au titre de Membre du Club
 
Homme
Débutant en XSLT
Inscription : avril 2011
Messages : 53
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Débutant en XSLT

Informations forums :
Inscription : avril 2011
Messages : 53
Points : 12
Points : 12
Avec
Code :
$message = file_get_contents('mail.php')
Plus d'erreur de Free, mais j'ai un mail vierge.


Par contre avec un fichier html
Code :
$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!
PouetteMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 18h11   #9
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Montres-nous le code de mail.php.
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 20h08   #10
Candidat au titre de Membre du Club
 
Homme
Débutant en XSLT
Inscription : avril 2011
Messages : 53
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Débutant en XSLT

Informations forums :
Inscription : avril 2011
Messages : 53
Points : 12
Points : 12
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 :
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 :
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
PouetteMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 20h58   #11
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
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
Citation:
<img src="img/#">
?
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 21h04   #12
Candidat au titre de Membre du Club
 
Homme
Débutant en XSLT
Inscription : avril 2011
Messages : 53
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Débutant en XSLT

Informations forums :
Inscription : avril 2011
Messages : 53
Points : 12
Points : 12
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.
PouetteMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 21h13   #13
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Citation:
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.
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 16h40   #14
Membre habitué
 
Homme
Développeur Web
Inscription : janvier 2008
Messages : 365
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2008
Messages : 365
Points : 140
Points : 140
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 :
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 :
$mail = mail_header().mail_contenu().mail_footer()
++
Khleo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2011, 21h21   #15
Invité de passage
 
Homme Frederic
AFPA
Inscription : novembre 2008
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Frederic
Localisation : France, Loiret (Centre)

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

Informations forums :
Inscription : novembre 2008
Messages : 18
Points : 4
Points : 4
Si jamais tu veux utiliser les includes tu peu toujours dans ton fichier mail.php faire :
Code :
$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
fredxd est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2011, 09h35   #16
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Une autre possibilité :

Code :
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
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h43.


 
 
 
 
Partenaires

Hébergement Web