Jump to content

Email Form Not Working

- - - - -

  • Please log in to reply
3 replies to this topic

#1
Injury

Injury

    Newbie

  • Members
  • PipPip
  • 19 posts
Hello! I'm bouncing around the forum trying to figure this out...

I have a simple contact form that should be working. No errors parse out, but I'm not getting the test emails I'm sending myself! The HTML checks out, so here is the PHP code...

<?php

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

    // EDIT THE 2 LINES BELOW AS REQUIRED

    $email_to = "john.fuller001@gmail.com";

    $email_subject = "Website Contact";

    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['first_name']) ||

        !isset($_POST['last_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.');       

    }

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

    $last_name = $_POST['last_name']; // required

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

    $telephone = $_POST['telephone']; // not required

    $comments = $_POST['comments']; // required

    $error_message = "";

    $email_exp = "^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$";

  if(!eregi($email_exp,$email_from)) {

    $error_message .= 'The Email Address you entered does not appear to be valid.<br />';

  }

    $string_exp = "^[a-z .'-]+$";

  if(!eregi($string_exp,$first_name)) {

    $error_message .= 'The First Name you entered does not appear to be valid.<br />';

  }

  if(!eregi($string_exp,$last_name)) {

    $error_message .= 'The Last 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 .= "First Name: ".clean_string($first_name)."\n";

    $email_message .= "Last Name: ".clean_string($last_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 -->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Plaid Apple Studios</title>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<link href="/css/main.css" rel="stylesheet" type="text/css" />

<link rel="shortcut icon" href="/img/tiny/apple.png" />

</head><body class="background" onload="loadXMLDoc()">

<div id="header" align="center"><h1>Plaid Apple Studios</h1></div>

<div id="content" align="center">

	<p>Thank you for contacting me! I'll get back to you as soon as possible!</p>

	<p><a href="../index.html">Home</a></p>

	</div>

<div id="footer" align="center">-Design by <a href="/contact.html">John Fuller</a> 2011-</div>

</body></html>

<?php

}

?>


Also, while validating the HTML of the actual contact.html, the input forms come up as with warnings with 'for="inputName"', so I don't consider it validated as of yet. Any ideas how to fix that?

actual link:
Plaid Apple Studios

thank you very much!

#2
John

John

    Writes binary right handed and hex left handed

  • Moderators
  • 6,321 posts
  • Location:New York, NY
@mail($email_to, $email_subject, $email_message, $headers); 
The @ symbol suppresses errors. Removing it may shed more light on your situation.

#3
Alexander

Alexander

    It's Science!

  • Moderators
  • 4,124 posts
  • Location:Vancouver, Eh! Cleverness: 200
I would begin by sending yourself a mail() in a very plain manner (and see if it returns false), and check your junk box if it appears within it. If it does not, it appears that the host has not set up SMTP mail and you should contact them to enable it. It is not always enabled by default on some hosts (to prevent spam)

As well, I would replace that deprecated eregi function in favour of perl compatible regular expressions (PCRE), for example a case insensitive version of "^[a-z .'-]+$":
preg_match("/^[a-z \.'-]+$/i",  $somestring)

Be sure to read the updated FAQ! || Health is achieved through the same 10,000 steps.
If a suggested code/method fails, informing us is less important than telling us why or what errors occurred.

#4
Injury

Injury

    Newbie

  • Members
  • PipPip
  • 19 posts
Thank you for your quick replies! I will try these out!




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users