Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

file_get_contents with query string

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

like image 400
air Avatar asked Aug 05 '26 04:08

air


2 Answers

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%%
like image 110
masch Avatar answered Aug 06 '26 18:08

masch


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);
       }
like image 42
Pragati Sureka Avatar answered Aug 06 '26 16:08

Pragati Sureka



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!