0

I have a website in which I just want a contact form that will take the comments from the user and then send the email to me. I have the following html code:

        <form action="emailform.php" method="post" name="contactform" role="form">
            <div class="row">
                <div class="col-md-5">
                    <div class="form-group left-inner-addon">
                        <span class="glyphicon glyphicon-user"></span>
                        <input name="name" type="text" class="form-control" placeholder="Name" required>
                    </div>
                    <div class="form-group left-inner-addon">
                        <span class="glyphicon glyphicon-envelope"></span>
                        <input name="email" type="email" class="form-control" placeholder="Email" required>
                    </div>
                    <div class="form-group left-inner-addon">
                        <span class="glyphicon glyphicon-earphone"></span>
                        <input name="telephone" type="tel" class="form-control" placeholder="Phone" required>
                    </div>
                </div> 
                <div class="col-md-7">
                    <div class="form-group left-inner-addon">
                        <span class="glyphicon glyphicon-comment"></span>
                        <textarea name="message" rows="6" class="form-control" placeholder="Message..."></textarea><br>
                        <a><button type="submit" class="btn btn-primary" value="Submit">Send</button></a>
                        <button type="reset" class="btn btn-default right">Reset</button>

                    </div>
                </div>
            </div> <!-- row -->
        </form>

And I have the php code "emailform.php" here:

    <?php
    if(isset($_POST['submit'])) {

    // EDIT THE 2 LINES BELOW AS REQUIRED
    $email_to = "george@lehaftech.com";
    $email_subject = "PILLAR 360 Inquiry";

    function died($error) {
        // your error code can go here
        echo "We are very sorry, but there were error(s) found with the form you submitted. ";
        echo "These errors appear below.<br /><br />";
        echo $error."<br /><br />";
        echo "Please go back and fix these errors.<br /><br />";
        die();
    }


    // validation expected data exists
    if(!isset($_POST['name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['comments'])) {
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
    }



    $name = $_POST['input_name']; // required
    $email_from = $_POST['input_email']; // required
    $telephone = $_POST['input_tel']; // not required
    $comments = $_POST['message']; // required

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';

    if(!preg_match($email_exp,$email_from)) {
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';
  }

    $string_exp = "/^[A-Za-z .'-]+$/";

      if(!preg_match($string_exp,$name)) {
    $error_message .= 'The name you entered does not appear to be valid.<br />';
  }

  if(strlen($comments) < 2) {
    $error_message .= 'The Comments you entered do not appear to be valid.<br />';
  }

  if(strlen($error_message) > 0) {
    died($error_message);
  }

    $email_message = "Form details below.\n\n";


    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }



    $email_message .= "Name: ".clean_string($name)."\n";
    $email_message .= "Email: ".clean_string($email_from)."\n";
    $email_message .= "Telephone: ".clean_string($telephone)."\n";
    $email_message .= "Comments: ".clean_string($comments)."\n";

// create email headers
$headers = 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>

<!-- include your own success html here -->

Thank you for contacting us. We will be in touch with you very soon.

<?php

}
?>

When I use the contact form to send an email, I just get a blank page loading and the email doesn't get sent... So the error codes aren't showing and the success line isn't showing..

thanks in advance.

clutch1020
  • 31
  • 1
  • 7

3 Answers3

0

Its been a while since I looked at PHP - so this might not be an issue - but in your form - your submit button has a value="Submit" - ie : capitalised - but in your php page - it is looking for "submit" ie - not capitalised:

if(isset($_POST['submit'])) {...

And therefor it is missing the error handling block within the php page.

You need to change eitehr the html or the php to ensure the two are the same

if(isset($_POST['Submit'])) {...

Also - it seems that your form input names do not match the POST values you are using in the php page

$name = $_POST['input_name']; // required
$email_from = $_POST['input_email']; // required
$telephone = $_POST['input_tel']; // not required
$comments = $_POST['message']; // required

You only have the inputs as "name", "email" etc in the form

$name = $_POST['name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['message']; // required
gavgrif
  • 15,194
  • 2
  • 25
  • 27
0

Add the following line of code to your HTML File right after the form tag:

<input type="hidden" name="action" value="send">

and in your PHP File change:

if(isset($_POST['submit'])) {...

To

if(isset($_POST['action']) && $_POST['action'] === 'send') {...

Hope this helps.

PHP Geek
  • 3,949
  • 1
  • 16
  • 32
0

Need to add name for the submit button

<button type="submit" name="submit" class="btn btn-primary" value="Submit">Send</button>

Also change part of the code as below

// validation expected data exists
if(!isset($_POST['name']) ||
    !isset($_POST['email']) ||
    !isset($_POST['telephone']) ||
    !isset($_POST['message'])) {
    died('We are sorry, but there appears to be a problem with the form you submitted.');       
}


$name = $_POST['name']; // required
$email_from = $_POST['email']; // required
$telephone = $_POST['telephone']; // not required
$comments = $_POST['message']; // required

Hope these changes fix issues with your code.

Pramod
  • 31
  • 1