2010-01-01 8 views
1

j'essaye d'envoyer l'email de php j'ai un fichier de php avec toutes les valeurs & l'autre fichier de modèle de php.file_get_contents avec la chaîne de requête

(les deux fichiers sont sur le même serveur)

J'utilise file_get_contents pour obtenir le contenu du fichier de template php par exemple

$url="emil_form.php"; 
    $a="uname"; 
    if(($Content = file_get_contents($url. "?uname=".$a)) === false) { 
    $Content = ""; 
    } 

    ...... EMAIL Sending Code .......... 

et voici le code pour emil_form.php (email fichier modèle)

Your Name is : <?php $_GET['uname']; ?> 

donc une fois que j'ai eu des données dans $ Content je peux l'envoyer par email. mais je reçois erreur impossible d'ouvrir le fichier ....

ce que je veux est de transmettre des données du fichier php d'origine au fichier php modèle et ce qui sera la sortie du modèle stocké dans la variable afin que je puisse l'envoyer par courriel.

comment le faire?

Merci

+0

Poster l'erreur exacte que vous obtenez –

+0

Est-ce que vous obtenez une erreur si vous appelez directement emil_form.php? Uname = uname .. ? – jjclarkson

Répondre

9

Le vrai problème serait que vous essayez de lire un fichier local avec une chaîne de requête http derrière lui. Le système de fichiers ne comprend pas cela et cherche un fichier appelé "emil_form.php? Uname = uname". $ _GET/$ _POST/etc ne fonctionne que via une connexion http. Essayez de placer un espace réservé comme "%% NAME %%" dans votre modèle et remplacez-le après avoir lu le modèle.

<?php 
$url = "emil_form.php"; 
$a = "uname"; 
if(($Content = file_get_contents($url)) === false) { 
    $Content = ""; 
} 
$Content = str_replace('%%NAME%%', $a, $Content); 
// sending mail.... 

modèle ressemblera à ceci:

Your Name is: %%NAME%% 
+0

Excellente première réponse, j'écrivais juste la même chose mais tu me battais dessus. –

+0

génie absolu - aime-le, merci, tu m'as sauvé tellement de douleur !!!!! –

0

S'il vous plaît noter que vous avez eu une erreur de nom de fichier dans $ url qui WSS essayant de charger emil_form.php.

Un problème secondaire semble être le chemin que vous utilisez pour votre appel à $ url. Essayez d'en faire une URL complète afin d'analyser correctement le fichier, en évitant tout gabarit que vous pourriez avoir à faire. Le RTT serait plus lent mais vous ne devriez pas changer de code. Cela ressemblerait à:

$url = 'http://www.mysite.com/email_form.php'; 
    $a = "uname"; 
    if(($Content = file_get_contents($url. "?uname=".$a)) === false) { 
     $Content = ""; 
    } 
+0

Quelle est la différence entre '" email_form.php "' et '" ./email_form.php "'? –

+0

./ signifie répertoire actuel. –

1

est ici une solution de rechange ... Utilisez le chemin relatif ou absolu tel que suggéré par « cballou » pour lire le fichier.

Mais insted de wirter un fichier php utiliser un fichier texte simple mettre votre modèle de message dans le remplacer <?php $_GET['uname']; ?> avec quelque chose d'unique comme %uname% (clés de remplacement). Lire le contenu du fichier dans une variable et remplacer les clés de remplacement à votre variable comme si,

$url = "/usr/local/path/to/email_form.txt"; 
     $a = "uname"; 
     if(($Content = file_get_contents($url)) === false) { 
      $Content = ""; 
     }else{ 
      $content = str_replace('%uname%', $a, $content); 
     } 
Questions connexes