我希望在用户单击“名称”,“电子邮件”或“消息”框之前不显示errName errEmail errMessage文本。我也不想在按下提交按钮之前不显示$ result。截至目前,即使用户未与提交表单交互,它也只显示errName,errEmail,errMessage和警报。


<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
global $result;
if (isset($_POST["submit"])) {
    $errName ="";
    $errEmail ="";
    $errMessage ="";
    $result="";
    $name = $_POST['name'];
    $business = $_POST['business'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = '------';
    $to = '-----';
    $subject = 'Message from user on website';
    $body ="-------";
}
// Check if name has been entered
if (!isset($_POST) || !key_exists('name', $_POST) || !filter_var($_POST['name'])) {
    $errName = 'Please enter your name';
}
// Check if email has been entered and is valid
if (!isset($_POST) || !key_exists('email', $_POST) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    $errEmail = 'Please enter a valid email address';
}
//Check if message has been entered
if (!isset($_POST) || !key_exists('message', $_POST) || !filter_var($_POST['message'])) {
    $errMessage = 'Please enter your message';
}
// If there are no errors, send the email
if (!isset($errName) && !isset($errEmail) && !isset($errMessage)) {
    $result .= '<br><div class="alert alert-success">Thank You! We will be in touch</div>';
} else {
    $result .= '<br><div class="alert alert-danger">Sorry there was an error sending your message. Please try again later.</div>';
}


  <div class="container" id="contact">
            <div class="row">
                <div class="col-md-6 col-md-offset-2">
                    <h1 class="page-header text-center">Email Form</h1>
                <form class="form-horizontal" role="form" method="post" action="index.php#contact">
                    <div class="form-group">
                        <label for="name" class="col-sm-2 control-label">Name</label>
                        <div class="col-sm-10">
                            <input type="text" class="form-control" id="name" name="name" placeholder="First & Last Name" value="<?php showPost('name'); ?>">
                            <?php if (isset($errName)) {
                  echo "<p class='text-danger'>$errName</p>";
                }?>
                        </div>
                    </div>
            <div class="form-group">
                        <label for="business" class="col-sm-2 control-label">Business</label>
                        <div class="col-sm-10">
                            <input type="text" class="form-control" id="business" name="business" placeholder="Business name" value="<?php showPost('business'); ?>">
                        </div>
                    </div>
                    <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]" value="<?php showPost('email'); ?>">
                            <?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"><?php showPost('message');?></textarea>
                            <?php if (isset($errMessage)) {
                  echo "<p class='text-danger'>$errMessage</p>";
                }?>
                        </div>
                    </div>
            <div class="form-group text-xs-center">
              <div style="margin: 0 auto" class="g-recaptcha" data-sitekey="----------"></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">
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>```

最佳答案

您需要将所有php代码放入if (isset($_POST["submit"]))内,因为当!isset您的php页面时,条件load始终为true。请在下面更改您的代码:

if (isset($_POST["submit"])) {
    $errName ="";
    $errEmail ="";
    $errMessage ="";
    $result="";
    $name = $_POST['name'];
    $business = $_POST['business'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = '------';
    $to = '-----';
    $subject = 'Message from user on website';
    $body ="-------";

// Check if name has been entered
if (!isset($_POST) || !key_exists('name', $_POST) || !filter_var($_POST['name'])) {
    $errName = 'Please enter your name';
}
// Check if email has been entered and is valid
if (!isset($_POST) || !key_exists('email', $_POST) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    $errEmail = 'Please enter a valid email address';
}
//Check if message has been entered
if (!isset($_POST) || !key_exists('message', $_POST) || !filter_var($_POST['message'])) {
    $errMessage = 'Please enter your message';
}
// If there are no errors, send the email
if (!isset($errName) && !isset($errEmail) && !isset($errMessage)) {
    $result .= '<br><div class="alert alert-success">Thank You! We will be in touch</div>';
} else {
    $result .= '<br><div class="alert alert-danger">Sorry there was an error sending your message. Please try again later.</div>';
}
} // end of isset

10-06 04:00