file_get_contents with query string

瘦欲@ 提交于 2019-11-26 23:33:00

问题


i am trying to send email from php i have one php file with all values & other php template file.

(both files are on same server)

i am using file_get_contents to get contents of php template file for example

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

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

and here is code for emil_form.php (email template file)

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

so once i got data in $Content i can send it by email. but i am getting error unable to open file....

what i want is pass data from original php file to template php file and what will be output of template stored in variable so i can send it by email.

how can do this ?

Thanks


回答1:


The real problem would be that you try to read a local file with a http query string behind it. The file system don't understand this and looks for a file called "emil_form.php?uname=uname". $_GET / $_POST / etc only works over a http connection.

Try to put a placeholder like "%%NAME%%" in your template and replace this after reading the template.

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

Template will look like this:

Your Name is: %%NAME%%



回答2:


Here's an alternative solution... Use the relative path or absolute path as suggested by "cballou" to read file.

But insted of wirting a php file use a simple text file put you message template in it replace <?php $_GET['uname']; ?> with something unique like %uname% (replacement keys). Read the file content into a variable and replace the replacement keys with your variable like so,

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



回答3:


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



回答4:


Please note that you had a filename error in $url which wss trying to load emil_form.php.

A secondary issue seems to be the path you are using for your call to $url. Try making it an full URL in order to properly parse the file, avoiding any templating you may otherwise have to do. The RTT would be slower but you wouldnt have to change any code. This would look like:

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


来源:https://stackoverflow.com/questions/1988707/file-get-contents-with-query-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!