带有查询字符串的file_get_contents

时间:2010-01-01 14:16:41

标签: php email file-get-contents

我正在尝试从php发送电子邮件 我有一个PHP文件,所有值和&其他php模板文件。

(两个文件都在同一台服务器上)

我正在使用file_get_contents来获取php模板文件的内容,例如

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

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

这里是emil_form.php(电子邮件模板文件)的代码

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

所以一旦我在$ Content中获得数据,我就可以通过电子邮件发送。 但我收到错误无法打开文件....

我想要的是将原始php文件中的数据传递给模板php文件以及存储在变量中的模板输出,以便我可以通过电子邮件发送。

怎么办呢?

由于

4 个答案:

答案 0 :(得分:9)

真正的问题是你尝试读取一个带有http查询字符串的本地文件。文件系统不理解这一点并查找名为“emil_form.php?uname = uname”的文件。 $ _GET / $ _POST / etc仅适用于http连接。

尝试在模板中放置类似“%% NAME %%”的占位符,并在阅读模板后将其替换。

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

模板将如下所示:

Your Name is: %%NAME%%

答案 1 :(得分:1)

这是另一种解决方案...... 使用“cballou”建议的相对路径或绝对路径来读取文件。

但是在创建一个php文件时,使用一个简单的文本文件,在其中添加消息模板,将<?php $_GET['uname']; ?>替换为%uname%(替换键)之类的独特内容。 将文件内容读入变量,并用您的变量替换替换键,

   $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);
       }

答案 2 :(得分:0)

请注意,$ url中有一个文件名错误,试图加载emil_form.php。

次要问题似乎是您用于调用$ url的路径。尝试将其设为完整网址,以便正确解析文件,避免您可能需要进行的任何模板操作。 RTT会慢一些,但你不必更改任何代码。这看起来像是:

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

答案 3 :(得分:0)

$url = sprintf("%s://%s",  isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', $_SERVER['SERVER_NAME']);
$content = file_get_contents($url."/file.php?test=".$test);
echo $content;