0
votes

I am creating a contact form with 5 fields which will email the input details to a set e-mail but when the form is submitted not all of the information that has been input is appearing in the generated email. The fields Name, Email and Comments all show up but Phone and Web Address are blank. Any help would be much appreciated.

Form:

<form method="post" action="contact.php" class="form contact-form">
    <fieldset>
        <div id="message"></div>
        <div class="formRow left" style="width: 45%;">
            <div class="textField"><input type="text" name="contact-name" id="name" placeholder="Name" /></div>
        </div>
        <div class="formRow right" style="width: 45%;">
            <div class="textField"><input type="email" name="contact-email" id="email" placeholder="[email protected]" /></div>
        </div>
        <div class="formRow left" style="width: 45%;">
            <div class="textFeild"><input type="tel" name="phone" id="phone" placeholder="Phone Number" /></div>
        </div>
        <div class="formRow right" style="width: 45%;">
            <div class="textField"><input type="text" name="website" id="website" placeholder="website" /></div>
        </div>
        <div class="formRow">
            <div class="textField"><textarea cols="20" name="contact-comment" id="comment" rows="4" placeholder="Message"></textarea></div>
        </div>
        <div class="formRow">
            <button class="btnSmall btn submit right" id="button">
                <span>Send Message</span>
            </button>
        </div>
    </fieldset>
</form>

PHP:

<?php

if(!$_POST) exit;

function isEmail($email) {
    return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$website = $_POST['website'];
$name     = $_POST['name'];
$email    = $_POST['email'];
$comment = $_POST['comment'];
$phone = $_POST['phone'];

if(trim($name) == '') {
    echo '<div class="error_message">Attention! You must enter your name.</div>';
    exit();
} else if(trim($email) == '') {
    echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
    exit();
} else if(!isEmail($email)) {
    echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
    exit();
}

if(trim($comment) == '') {
    echo '<div class="error_message">Attention! Please enter your message.</div>';
    exit();
}

if(get_magic_quotes_gpc()) {
    $comment = stripslashes($comment);
}

$address = "[email protected]";

$e_subject = 'You\'ve been contacted by ' . $name . '.';


$e_body = "You have been contacted by $name with regards to $subject, their additional message is as follows." . PHP_EOL . PHP_EOL;
$e_content = "\"$comment\"" . PHP_EOL . PHP_EOL;
$e_other = "Web address: $website \n\n Phone: $phone" . PHP_EOL . PHP_EOL; 
$e_reply = "You can contact $name via email: $email";

$msg = wordwrap( $e_body . $e_content . $e_other . $e_reply, 70 );

$headers = "From: $email" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {


    echo "<div class='ok_message'><p>Thank you <strong>$name</strong>, your message has been submitted to us.</p></div>";

} else {

    echo '<div class="error_message">ERROR!</div>';

}
?>

This give the output:

You have been contacted by [correct name] with regards to [blank], their additional message is as follows.

"[correct message text]"

Web address: [blank]

Phone: [blank]

You can contact [correct name] via email: [correct email]

1

1 Answers

1
votes

You need to make sure your $_POST field names match. For example, in the html, you are naming the input "contact-name," but in the PHP it is looking for a field named "name".

Cheers