Search code examples
phphtmlformscontacts

HTML not passing content to PHP contact form


<section id="contact">
    <div class="container">
        <div class="row">
            <div class="col-lg-12 text-center">
                <h2>Contact Me</h2>
                <hr class="star-primary">
            </div>
        </div>
        <div class="row">
            <div class="col-lg-8 col-lg-offset-2">
                <!-- To configure the contact form email address, go to mail/contact_me.php and update the email address in the PHP file on line 19. -->
                <!-- The form should work on most web servers, but if the form is not working you may need to configure your web server differently. -->
                <form name="sentMessage" id="contactForm" onsubmit="return validate()" action="contactme.php">
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>Name</label>
                            <input type="text" class="form-control" placeholder="Name" id="name" required data-validation-required-message="Please enter your name.">
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>Email Address</label>
                            <input type="email" class="form-control" placeholder="Email Address" id="emailz" required data-validation-required-message="Please enter your email address.">
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>Phone Number</label>
                            <input type="tel" class="form-control" placeholder="Phone Number" id="phone" required data-validation-required-message="Please enter your phone number.">
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <div class="row control-group">
                        <div class="form-group col-xs-12 floating-label-form-group controls">
                            <label>Message</label>
                            <textarea rows="5" class="form-control" placeholder="Message" id="message" required data-validation-required-message="Please enter a message."></textarea>
                            <p class="help-block text-danger"></p>
                        </div>
                    </div>
                    <br>
                    <div id="success"></div>
                    <div class="row">
                        <div class="form-group col-xs-12">
                            <input type="submit" value="Submit" name="Submit" class="btn btn-success btn-lg"></input>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</section>

<-----PHP----->

<?php

if(empty($_POST['name'])        ||
   empty($_POST['emailz'])      ||
   empty($_POST['phone'])       ||
   empty($_POST['message']) ||
   !filter_var($_POST['emailz'],FILTER_VALIDATE_EMAIL))
   {
    echo "No arguments Provided!!";
return false;
   }

$name = $_POST['name']; 
$email = $_POST['emailz'];
$phone = $_POST['phone'];
$message = $_POST['message'];
$headers = "From: [email protected]\n"; // This is the email address the generated message will be from
$headers .= "Reply-To: $emailz";    

$subject = 'New Message - Kieronb- $name';



$body = "You have received a new message from your website contact form.\n\n"."Here are the details:\n\nName: $name\n\nEmail: $emailz\n\nPhone: $phone\n\nMessage:\n$message";

mail("[email protected]",$subject,$body,$headers);
return true;
?>

SO, the above is the HTML and the PHP, now the majority of this code has been frankensteined from a bootstrap project, but i thought i would just have a play with the contact form too, but it is going all the way through to the missing arguments catch at the beginning of the PHP.

I cant see why the data is coming through empty- have i missed something painfully obvious?

I am running on a web server, not locally.

Thanks

Edit; thanks everyone, i forgot my method, and names on the form!


Solution

  • Your form fields do not have the name attribute. Without them their values are not submitted with the form.

    <input type="email" class="form-control" placeholder="Email Address" id="emailz" required data-validation-required-message="Please enter your email address.">
    

    should be

    <input type="email" name="emailz" class="form-control" placeholder="Email Address" id="emailz" required data-validation-required-message="Please enter your email address.">
    

    And your <form> needs to have the method specified as POST or else it defaults to GET:

    <form method="post" name="sentMessage" id="contactForm" onsubmit="return validate()" action="contactme.php">