从另一个文件PHP获取价值

时间:2016-09-02 14:54:02

标签: php

我在WordPress中使用PHPMailer发送邮件。为此,我有3个文件:

contacts.php - 带有html格式的文件:

<?php 
/*
 * Template Name: Contacts
 */
 get_header(); ?>
<div class="container page">
    <h2>Напиши нам</h2>
      <div class="row">
        <div class="col-lg-5">
            <form action="<?php bloginfo('template_url');?>/mailer.php" method="post">
               <label for="fname">Имя*</label>
               <input type="text" class="form-control" id="fname" name="first-name" required>
               <label for="tel">Телефон*</label>
               <input type="tel" class="form-control" id="tel" required name="phone">
               <label for="tel">E-mail</label>
               <input type="tel" class="form-control" id="email" name="email">
               <label for="">Сообщение*</label>
               <textarea required class="form-control" rows="8" name="msg"></textarea>
               <button type="submit" class="btn btn-success" id="btn-contacts">Отправить</button>
            </form>
       </div>
         <div class="col-lg-7">

         </div>
      </div>
</div>
<?php get_footer(); ?>

mailer.php - 表单的处理程序:

<?php
$fname = $_POST["first-name"];
$phone = $_POST["phone"];
$email = $_POST["mail"];
$msg = $_POST["msg"];

require_once("lib/phpmailer/PHPMailerAutoload.php");

$mail = new PHPMailer();

$mail->IsSMTP();
$mail->FromName = "SomeName";
$mail->Host = "smtp.yandex.ru";
$mail->SMTPSecure = "tls";
$mail->Port = 587;
$mail->CharSet = 'UTF-8';
$mail->SMTPAuth = true;
$mail->Username = "username";
$mail->Password = "password";
$mail->AddAddress("someaddress@yandex.ru", "Name");
$mail->WordWrap = 50;
$mail->SetFrom("someaddress@ya.ru", "OwnerName");

$mail->IsHTML(true);
$mail->Subject = $fname;


$body = file_get_contents("test.php");
$mail->MsgHTML($body);
if($mail->Send())
    echo "Everything is okay";
else
    echo "Error!";

?>

test.php - 字母的html标记:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Hello</title>
    </head>
    <body>
        <h5>First Name of Person:</h5>
        <?php
            echo $fname; //how can I get this variable value???
        ?>
    </body>
</html>

我遇到了一个问题。 我怎么能得到这个? (请参阅第三个片段和内部评论)。提前谢谢!

3 个答案:

答案 0 :(得分:1)

您可以将其存储在POST请求的会话中,然后显示它。此外,在WP会话中默认情况下不启用。你需要像这样启用它们。

if (!session_id()) {
    session_start();
}
  • $_SESSION['firstName'] = $_POST['first-name']; // Store
  • <?php echo $_SESSION['firstName']; // Display ?>

答案 1 :(得分:0)

建议使用herdoc语法,因为file_get_contents不会自动转换VARS,除非你对它运行eval()(我认为)。所以,只需包含(&#39; test.php&#39;);其中包含......

 $body = <<<EOD
 ....
    <h5>First Name of Person:</h5>
 $fname
 ....
 EOD;

答案 2 :(得分:0)

您可以使用Heredoc语法来定义html文本以及变量。 file_get_contents只读取文件的文本源并存储在变量中。您必须在需要的地方包含此文件并使用heredoc语法:

$body = <<<HTML

<h5>First Name of Person:</h5>
{$fname} 

HTML;

您可以使用一些模板标记定义test.php。使用一些模板变量并将值替换为表单处理代码中的实际变量。 在test.php中,使用

<h5>First Name of Person:</h5>
{first_name} 

然后在使用file_get_contents获取内容后,将模板变量替换为从POST接收的值。

$body = file_get_contents("test.php");
$body = str_replace("{first_name}",$fname,$body);

对要替换的所有值执行此操作。