在我的html站点上显示php文件的输出(回显)

时间:2019-04-14 13:53:31

标签: php html echo

所以我的问题如下:

我有一个用于联系表格的php文件:

<?php
/* [VERIFY CAPTCHA FIRST] */
$secret = 'xxxxxxxxxxxxxxxxxxxxxxxxx';
$url = "https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=".$_POST['g-recaptcha-response'];
$verify = json_decode(file_get_contents($url));

/* [PROCESS YOUR FORM] */
if ($verify->success) {
  $to = "xxxxxxxxxxxxxxxxx"; 
  $subject = "Kontakt Website";
  $message = "Name - " . $_POST['name']; 
  $message .= "\nEmail - " . $_POST['email'];
  $message .= "\Message - " . $_POST['message'];
  if (@mail($to, $subject, $message)) {
    echo "Message sent!";
  } else {
    echo "Nachricht konnte nicht gesendet werden!";
  }
} else {
    header("Location: index.html#contactline");
    echo "Invalid captcha";
    exit;
}
?>

然后这是我的index.html中的表单:

<section>
    <form method="post" action="contact.php">
        <div class="row gtr-50">
            <div class="col-6 col-12-small">
                <input type="text" name="name" id="contact-name" placeholder="Name" />
            </div>
            <div class="col-6 col-12-small">
                <input type="text" name="email" id="contact-email" placeholder="E-Mail" />
            </div>
            <div class="col-12">
                <textarea name="message" id="contact-message" placeholder="Nachricht" rows="4"></textarea>
            </div>
            <div class="g-recaptcha" data-sitekey="xxxxxxxxxxxx" data-theme="dark"></div>
            <div class="col-12_Submit">
                <ul class="actions">
                    <li><input type="submit" class="style1" value="Senden" /></li>
                    <li><input type="reset" class="style2" value="Zurücksetzen" /></li>
                </ul>
            </div>
            <div class="status"></div>
        </div>
    </form>
</section>

所以我的问题是是否有可能获取php文件的回显,例如“消息已发送”或“无效的验证码”,并将其显示在我的index.html上,例如在联系表格下以{{1}中的文本形式显示},然后点击“提交”按钮?

如果可以,我该怎么办?

2 个答案:

答案 0 :(得分:1)

是的,将您的消息设置为变量,例如$ message,然后渲染 index.php ,检查是否满足条件

<div class="status"><? if(isset($message)) echo $message?></div>

如果要使用标头并发送值,可以在index.php中使用$ _GET []

答案 1 :(得分:1)

如果我的问题正确,为什么不将文件设为php文件而不是html文档,因为php文件可以输出html。因此,您的index.html应该是index.php,然后包含用于邮件的php脚本,还在脚本中为消息创建一个空变量,并在每种情况下为其赋予一个值。但是,请不要回显它,应在html页面上完成回显。

$msg="";
if(@mail($to, $subject, $message){
$msg=="message has been sent";
}
else{
$msg="not sent"; 
}

然后在要显示文本的html div中执行此操作

<?php
include "messages_script.php;
?>
<section>
<form method="post" action="contact.php">
<div class="row gtr-50">
<div class="col-6 col-12-small">
<input type="text" name="name" id="contact-name" placeholder="Name" />
        </div>
        <div class="col-6 col-12-small">
            <input type="text" name="email" id="contact-email" placeholder="E-Mail" />
        </div>
        <div class="col-12">
            <textarea name="message" id="contact-message" placeholder="Nachricht" rows="4"></textarea>
        </div>
        <div class="g-recaptcha" data-sitekey="xxxxxxxxxxxx" data-theme="dark"></div>
        <div class="col-12_Submit">
            <ul class="actions">
                <li><input type="submit" class="style1" value="Senden" /></li>
                <li><input type="reset" class="style2" value="Zurücksetzen" /></li>
            </ul>
 <?php echo $msg; ?>
        </div>
        <div class="status"></div>
    </div>
</form>
</section>