【问题标题】:PHP Success message showing inside of an error box在错误框内显示 PHP 成功消息
【发布时间】:2022-01-11 02:08:59
【问题描述】:

我正在使用这个 PHP 电子邮件脚本:

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $subject = $_POST['subject'];
    $recipient = "contact@domain.com";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $mailheader, $message) or die("Error!");
    echo "Thank You!" . " -" . "<a href='contact.html' style='text-decoration:none;color:#000000;'> Return Home</a>";
?>

当我测试表单时,它会按预期向我发送一封电子邮件,但会显示以下消息:

这是表单的 HTML:

<form id="lift" action="mail.php" method="post" role="form" class="php-email-form mt-4">
    <div class="row">
        <div class="col-md-6 form-group">
            <input type="text" name="name" class="form-control" id="name" placeholder="Your Name" required>
        </div>

        <div class="col-md-6 form-group mt-3 mt-md-0">
            <input type="email" class="form-control" name="email" id="email" placeholder="Your Email" required>
        </div>
    </div>

   <div class="form-group mt-3">
        <input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" required>
    </div>

    <div class="form-group mt-3">
        <textarea class="form-control" name="message" rows="5" placeholder="Message" required></textarea>
    </div>

    <div class="my-3">
        <div class="loading">Loading</div>
        <div class="error-message"></div>
        <div class="sent-message">Your message has been sent. Thank you!</div>
    </div>

    <div class="text-center"><button type="submit">Send Message</button></div>
</form>

我搜索了我的文件,但找不到任何包含“错误:”的内容,我不确定它是否可能来自引导程序?我确实有链接到 HTML 的引导程序。

【问题讨论】:

  • “错误”并非来自此代码。 die() 结束脚本,因此它不能在此之后回显下一行。另外,Error 末尾有 !,但这不在屏幕截图中。
  • 在您的代码中搜索Error:
  • @Barmar 我不确定它可能来自什么,除非它在引导程序中?我已将其链接到文档,但没有具体在哪里出现“错误:”。另外,我应该将回声放在哪里才能使其正常工作?
  • 我帮不了你,我只能保证不是那个die("Error!")
  • @Barmar 好的,非常感谢!

标签: php html email


【解决方案1】:

简单的if 声明怎么样?看来您正在使用引导表单验证,所以我已经注释掉了您实际上什么都不做的客户端 html,现在您只有服务器回复。

转到此处https://getbootstrap.com/docs/5.1/forms/validation/ 以查看表单中的哪些 css 类可以使用 PHP 打开或关闭。

页面顶部的PHP代码:

<?php

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      // collect value of input field
      $name = $_POST['name'];
      $email = $_POST['email'];
      $subject = $_POST['subject'];
      $message = $_POST['message'];

      if (empty($_POST['name']) || empty($_POST['email']) || empty($_POST['subject']) || empty($_POST['message'])) {
        echo "Must complete all fields in form.";
      } else if(mail($recipient, $subject, $mailheader, $message)) {
      echo "Thank You!" . " -" . "<a href='contact.html' style='text-decoration:none;color:#000000;'> Return Home</a>";
      } else {
        die("Error!");
      }
    }

 ?>

PHP代码下面的HTML代码:

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Bootstrap CSS -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

    <title>Email Form</title>
  </head>
  <body>
    <h1>Email Form</h1>

        <form id="lift" action="mail.php" method="post" role="form" class="php-email-form mt-4">
        <div class="row">
        <div class="col-md-6 form-group">
          <input type="text" name="name" class="form-control" id="name" placeholder="Your Name" required>
        </div>

        <div class="col-md-6 form-group mt-3 mt-md-0">
          <input type="email" class="form-control" name="email" id="email" placeholder="Your Email" required>
        </div>
        </div>

       <div class="form-group mt-3">
        <input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" required>
        </div>

        <div class="form-group mt-3">
        <textarea class="form-control" name="message" rows="5" placeholder="Message" required></textarea>
        </div>

      <!-- Commented out because why? -->
        <!-- <div class="my-3"> -->
        <!-- <div class="loading">Loading</div> -->
        <!-- <div class="error-message"></div> -->
        <!-- <div class="sent-message">Your message has been sent. Thank you!</div> -->
        <!-- </div> -->

        <div class="text-center"><button type="submit">Send Message</button></div>
        </form>

    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>

    <!-- Option 2: Separate Popper and Bootstrap JS -->
    <!--
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
    -->
  </body>
</html>

【讨论】:

  • 这并没有消除错误,它看起来仍然一样。不知何故,有一些东西告诉它在每次响应时抛出一条错误消息。我似乎找不到导致该问题的代码。
  • 所以 PHP mail() 函数不能开箱即用。错误信息是什么?
  • 脚本运行完美,因为我收到了一封电子邮件并且服务器本身没有显示错误,但就像原始帖子的屏幕截图一样,它显示“错误:谢谢!”消息,因此由于某种原因,它会在错误框中显示成功消息。
猜你喜欢
  • 2021-01-27
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 2023-04-06
  • 2019-10-14
  • 1970-01-01
  • 2021-06-27
相关资源
最近更新 更多