在我的html网站上显示php文件的输出(echo)

问题描述 投票:0回答:2

所以我的问题如下:

我有这个用于联系表单的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文件的回声,如“Message sent”或“Invalid Captcha”并在我的index.html上显示它,例如在我点击提交按钮后在<div class="status"></div>中的联系表单下显示文本?

如果是的话 - 我怎么能这样做?

php html echo
2个回答
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>

1
投票

是的,将消息设置为变量,例如$ message,然后通过渲染index.php检查简单的if条件

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

如果你想使用标题和发送值,你可以在index.php中使用$ _GET []

© www.soinside.com 2019 - 2024. All rights reserved.