1

My form doesn't generate an E-Mail it just redirects me to a blank page. i have my .php form in a folder named php on my server

thank you for your help.

here is my html code

      <form id="form" method="post" action="php/send_form_email.php">
      <fieldset>
        <label><strong>Name:</strong>
          <input type="text" value="">
        </label>
        <label><strong>Email:</strong>
          <input type="text" value="">
        </label>
        <label><strong>Phone:</strong>
          <input type="text" value="">
        </label>
        <label><strong>Message:</strong>
          <textarea></textarea>
        </label>
        <div class="btns"><a href="#"  class="link">Clear</a><a href="php/send_form_email.php" class="link">Send</a></div>
      </fieldset>
    </form>

here is the php code i'm using:

<?php

 if(isset($_POST['email'])) {



// EDIT THE 2 LINES BELOW AS REQUIRED

$email_to = "#@#.com";

$email_subject = "havok security contact form";





  function died($error) {

    // your error code can go here

    echo "We are very sorry, but there was an error 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['phone']) ||

    !isset($_POST['message'])) {

    died('We are sorry, but there appears to be a problem with the form you submitted.');       

}



$first_name = $_POST['name']; // required

$email_from = $_POST['email']; // required

$telephone = $_POST['phone']; // 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($message) < 2) {

   $error_message .= 'The Message 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($first_name)."\n";

$email_message .= "Email: ".clean_string($email_from)."\n";

$email_message .= "Phone: ".clean_string($telephone)."\n";

$email_message .= "Message: ".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

   }

    ?>
4
  • Is php/send_form_email.php.php the exact path to the php file relative to the form html file? The file does have two .php in it, correct? Commented Jan 24, 2014 at 5:51
  • yes i have an ubuntu server using webmin in my www folder i have my php folder php/send_form_email.php is the exact path to my php form. sorry i should have mentioned that in the question post Commented Jan 24, 2014 at 5:54
  • oh i see now i duplicated .php.php on the extension. i feel like an idiot now. imma fix it and test it and see what happens EDIT: i fixed the double extension and still no email so i guess i did something wrong in the script Commented Jan 24, 2014 at 5:56
  • the page and server is live if it will help anyone out in determining my issue the url is havoksecurity.com/contacts.html Commented Jan 24, 2014 at 6:10

1 Answer 1

2

The input type under email needs to have a name attribute called "email". Your PHP script is looking to see if $_POST["email"] is set, and it is not. So, this should work:

<form id="form" method="post" action="php/send_form_email.php">
      <fieldset>
        <label><strong>Name:</strong>
          <input type="text" name="name" value="">
        </label>
        <label><strong>Email:</strong>
          <input type="text" name="email" value="">
        </label>
        <label><strong>Phone:</strong>
          <input type="text" name="phone" value="">
        </label>
        <label><strong>Message:</strong>
          <textarea name = "message"></textarea>
        </label>
        <div class="btns"><a href="#"  class="link">Clear</a><a href="php/send_form_email.php" class="link">Send</a></div>
      </fieldset>
    </form>
Sign up to request clarification or add additional context in comments.

10 Comments

ok great does it matter if i leave no value for each input type? im about to edit my html and give it a try
The value attribute is the default value of the textbox. If you enter anything in value it will show up in the textbox. Whatever you enter into the textboxes will overwrite the "value" attribute. So, no it doesn't matter.
ok thats what i thought i wasn't sure. so i edited my html and still i got no email. do i have to set up some sort of mail server on my Ubuntu box to actually generate and send the email out to the email that is specified in the text box?
Yes, you will need an SMTP server running on the box and you will need to edit your php.ini file to connect to the SMTP server.
ok SyntaxLAMP you're the best what would i have to do to make SMTP connect to my php file? is this the part i would need to edit? and if so what to? sorry i know 0 php. // 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);
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.