-3

Not really used PHP that much, created this basic contact.php, Works fine send to my email etc, But my message or contact information doesn't display in the email i receive

Here is my php:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone']
$message = $_POST['message'];
$from = 'Site Contact Form'; 
$to = 'craig@ice7media.com'; 
$subject = 'Message from Contact form on website ';

mail($to, $subject, $message, $phone "From: " $name);
echo "Your Message has been sent!";
?>

Here is my HTML (Using bootstrap framework)

    <section id="contact" class="contact bg-gray">
    <div class="container">
        <div class="row">
            <div class="col-lg-12 text-center">
                <h2 class="section-heading">Contact Us</h2>
                <h3 class="section-subheading text-muted">Contact the team for expert advice</h3>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-12">
                <form name="sentMessage" id="contactForm" action="contact.php" method="post">
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <input type="text" class="form-control" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="email" class="form-control" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address.">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required data-validation-required-message="Please enter your phone number.">
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <textarea class="form-control" placeholder="Your Message *" id="message" required data-validation-required-message="Please enter a message."></textarea>
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="clearfix"></div>
                        <div class="col-lg-12 text-center">
                            <div id="success"></div>
                            <button type="submit" class="btn btn-primary btn-lg">Send Message</button>
                        </div>
                        <br>
                        <br>
                    </div>
                </form>
            </div>
        </div>
    </div>
</section>

Thanks for any help much appreciated

Tom Withers
  • 1,171
  • 4
  • 16
  • 28

3 Answers3

2

You're not sending any post data because none of your inputs have a name attribute. The name attribute should relate to what $_POST variable you are expecting.

This should work:

    <section id="contact" class="contact bg-gray">
    <div class="container">
        <div class="row">
            <div class="col-lg-12 text-center">
                <h2 class="section-heading">Contact Us</h2>
                <h3 class="section-subheading text-muted">Contact the team for expert advice</h3>
            </div>
        </div>
        <div class="row">
            <div class="col-lg-12">
                <form name="sentMessage" id="contactForm" action="" method="post">
                    <div class="row">
                        <div class="col-md-6">
                            <div class="form-group">
                                <input type="text" class="form-control" placeholder="Your Name *" id="name" required data-validation-required-message="Please enter your name." name="name">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="email" class="form-control" placeholder="Your Email *" id="email" required data-validation-required-message="Please enter your email address." name="email">
                                <p class="help-block text-danger"></p>
                            </div>
                            <div class="form-group">
                                <input type="tel" class="form-control" placeholder="Your Phone *" id="phone" required data-validation-required-message="Please enter your phone number." name="phone">
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="col-md-6">
                            <div class="form-group">
                                <textarea class="form-control" placeholder="Your Message *" id="message" required data-validation-required-message="Please enter a message." name="message"></textarea>
                                <p class="help-block text-danger"></p>
                            </div>
                        </div>
                        <div class="clearfix"></div>
                        <div class="col-lg-12 text-center">
                            <div id="success"></div>
                            <button type="submit" class="btn btn-primary btn-lg">Send Message</button>
                        </div>
                        <br>
                        <br>
                    </div>
                </form>
            </div>
        </div>
    </div>
</section>

The PHP code should look like this:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$from = 'some_email@test.com'; 
$to = 'craig@ice7media.com'; 
$subject = 'Message from Contact form on website ';

$headers = 'From: '.$from;
$message = $_POST['message'] . "\r\n" 
    . "Name: " . $name ."\r\n"
    . "Phone:" . $phone ."\r\n"
    . "Email:" . $email . "\r\n";

mail($to, $subject, $message, $headers);
echo "Your Message has been sent!";
?>
Andrius
  • 5,934
  • 20
  • 28
1

You missed name attributes in form. Add name attribute in all the input/select fields like below:

<div class="col-md-6">
  <div class="form-group">
    <textarea class="form-control" placeholder="Your Message *" id="message" name="message" required data-validation-required-message="Please enter a message."></textarea>
    <p class="help-block text-danger"></p>
  </div>

AnkiiG
  • 3,468
  • 1
  • 17
  • 28
0

You need to have name attributes on your form fields, these will match up with the array keys in $_POST:

<div class="form-group">
    <input type="text" name="name" class="form-control" placeholder="Your Name *" id="name" name="name" required data-validation-required-message="Please enter your name.">
    <p class="help-block text-danger"></p>
</div>
<div class="form-group">
    <input type="email" name="email" class="form-control" placeholder="Your Email *" id="email"  required data-validation-required-message="Please enter your email address.">
    <p class="help-block text-danger"></p>
</div>
...

You should also check the fields have been filled in:

if(empty($_POST['name']) || empty($_POST['email']) || empty($_POST['message'])){
    die('All fields must be filled in');
}
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
...
Steve
  • 20,703
  • 5
  • 41
  • 67