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-файл и что будет выводить шаблон, хранящийся в переменной, чтобы я мог отправить его по электронной почте.

как это можно сделать?

благодаря

    Реальная проблема заключается в том, что вы пытаетесь прочитать локальный файл с строкой запроса 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%% 

    Вот альтернативное решение … Используйте относительный путь или абсолютный путь, как предложено «cballou» для чтения файла.

    Но insted wirting php-файл использует простой текстовый файл, вставьте в него шаблон сообщения, замените <?php $_GET['uname']; ?> <?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); } 

    Обратите внимание, что у вас была ошибка имени файла в $ url, которая wss пытается загрузить emil_form.php.

    Вторичным вопросом является путь, который вы используете для своего вызова $ url. Попробуйте сделать его полным URL-адресом , чтобы правильно проанализировать файл, избегая каких-либо шаблонов, которые вы, возможно, должны сделать. RTT будет медленнее, но вам не придется менять какой-либо код. Это будет выглядеть так:

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