fightstarr20
fightstarr20

Reputation: 12598

PHP contact form showing error message before form submitted

I am using a simple PHP contact form which is working well. But when you load a page for the first time it always gives the error message 'Please Supply all Information'

Can anyone see why this is happening?

<?php
  $response = "";  

  function my_contact_form_generate_response($type, $message){
    global $response;
    if($type == "success") $response = "<div class='success'>{$message}</div>";
    else $response = "<div class='error'>{$message}</div>";
  }

  $missing_content = "Please supply all information";
  $message_unsent  = "Message was not sent. Try Again";
  $message_sent    = "Thanks! Your message has been sent";

  $name = $_POST['message_name'];
  $phone = $_POST['message_phone'];

  $to = '[email protected]';
  $subject = "Someone sent a message from ".get_bloginfo('name');
  $headers = 'From: '. $email . "\r\n" .
    'Reply-To: ' . $email . "\r\n";

        if(empty($name) || empty($phone)){
          my_contact_form_generate_response("error", $missing_content);
        }
        else
        {
          $sent = wp_mail($to, $subject, strip_tags($name), $headers);
          if($sent) my_contact_form_generate_response("success", $message_sent); //message sent!
          else my_contact_form_generate_response("error", $message_unsent); //message wasn't sent
        }
        ?>

        <form action="<?php the_permalink(); ?>" method="post" role="form">
                <?php echo $response; ?>
                <div class="form-group">
                    <label>Name:</label>
                    <input class="form-control" type="text" name="message_name">
                </div>
                <div class="form-group">
                    <label>Phone</label>
                    <input class="form-control" type="text" name="message_phone">
                </div>
                <div class="button-group">
                <button type="submit" class="btn">Submit</button>
                </div>
            </form>
        </div>
    </div>

Upvotes: 0

Views: 105

Answers (1)

John Conde
John Conde

Reputation: 219834

It's because you're not checking to see if the form is submitted. You're just executing that code on every page load. You can

Check if the submission was via POST

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // your code here
}

Or check if the submit button was pressed

<input type="submit" name="submit" class="btn">Submit</input>

if (isset($_POST['submit'])) {
    // your code here
}

Upvotes: 2

Related Questions