为什么在我的 php 联系人脚本中发布后出现未定义的变量错误?

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

我正在尝试解决联系表单中的错误。我在第 24 行收到未定义的变量 $errEmail,在第 22 行收到 $errMessage。这两个变量都是根据我的理解定义的。除了这些错误之外,我的联系表单还有效。用户提交联系表单后发生错误。

这是我的代码 - (我刚刚将 $to 更改为 [电子邮件受保护] 以隐藏我的电子邮件)

<?php
if (isset($_POST["submit"])) {
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Contact Form';
    $to = '[email protected]';
    $subject = 'Message from Contact';

    $body = " E-Mail: $email\n Message:\n $message";

    // Check if email has been entered and is valid
    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errEmail = 'Please enter a valid email address';
    }

    // Check if message has been entered
    if (empty($message)) {
        $errMessage = 'Please enter your message';
    }

// If there are no errors, send the email
if (!$errEmail && !$errMessage) {
    if (mail ($to, $subject, $body, $from)) {
        $result='<div class="alert alert-success">Thank You! I will be in touch</div>';
    } else {
        $result='<div class="alert alert-danger">Sorry there was an error sending your message. Please try again later.</div>';
    }
}
    }
?>

    <div class="container">
      <div class="row">
        <div class="col-md-6 col-md-offset-3">
          <h1 class="page-header text-center">Contact Us</h1>
        <form class="form-horizontal" role="form" method="post">
          <div class="form-group">
            <label for="email" class="col-sm-2 control-label">Email</label>
            <div class="col-sm-10">
              <input type="email" class="form-control" id="email" name="email" placeholder="[email protected]">
              <?php if (isset($errEmail)) {
                echo "<p class='text-danger'>$errEmail</p>";
              }?>
            </div>
          </div>
          <div class="form-group">
            <label for="message" class="col-sm-2 control-label">Message</label>
            <div class="col-sm-10">
              <textarea class="form-control" rows="4" name="message"></textarea>
              
              <?php if (isset($errMessage)) {
               echo "<p class='text-danger'>$errMessage</p>";
              }?>
            </div>
          </div>
          <div class="form-group">
            <div class="col-sm-10 col-sm-offset-2">
              <input id="submit" name="submit" type="submit" value="Send" class="btn btn-primary">
            </div>
          </div>
          <div class="form-group">
            <div class="col-sm-10 col-sm-offset-2">
              <?php if (isset($result)) {
               echo $result;
              } ?>  
            </div>
          </div>
        </form> 
      </div>
    </div>
  </div>   
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK/7HAuoJl+0I4" crossorigin="anonymous"></script>
  </body>
</html>

我已经查看了第 22 行,发现该变量是在第 13 行和第 18 行定义的...

php forms error-handling undefined contacts
1个回答
0
投票

您应该在 if 条件之前将

$errEmail
$errMessage
初始化为空字符串。这确保了这些变量始终被定义,无论是否满足
if
条件。

$errEmail = '';
$errMessage = '';

if (isset($_POST["submit"])) {
    // Your existing code...
}
© www.soinside.com 2019 - 2024. All rights reserved.