We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now


Mail script error checking problem

Medium Priority
Last Modified: 2012-05-07
Hi, I have a form mailer that I'm completely stumped on. It landed on my desk and I can't figure out what's wrong with it. It continually gives me empty field errors even when they're populated and won't send the email.

I'm sure someone here will have it sorted out in ten seconds but I'm more of a graphics guy and I'm just not seeing what's wrong. Any help would be appreciated!

Thanks in advance!
function createForm() { // grab variables from posted form, if any exist
	$name = $_POST['name'];
	$phone = $_POST['phone'];
	$email = $_POST['email'];
	$comments = $_POST['comments'];
	// build the form, populate the fields if needed
	echo '<form action="' . $_SERVER['PHP_SELF'] . '" method="POST">
	<p>FULL NAME:<br />
	<input name="name" type="text" id="name" size="40" value="' . $name . '"></p>
	<p>TELEPHONE:<br />
	<input name="phone" type="text" id="phone" size="40" value="' . $phone . '"></p>
	<p>EMAIL ADDRESS:<br />
	<input name="email" type="text" id="email" size="40" value="' . $email . '"></p>
	<textarea name="comments" id="comments" rows="5" style="width:100%;">' . $comments . '</textarea></p>
	<p><input type="submit" name="submit" value="Submit">&nbsp;<input type="reset" name="reset" value="Clear"></p>
} // end function createForm()
// if submit has been pressed 
if(isset($_POST['submit'])) {
	echo '<ul>';
	// make sure all required fields are filled in and display errors if empty
	if(empty($name)) {
		$field1 = "0";
		echo '<li class="red strong">Name is required.</li>';
		} else {
		$field1 = "1"; }
	if(empty($phone)) {
		$field2 = "0";
		echo '<li class="red strong">Phone Number is required.</li>';
		} else {
		$field2 = "1"; }
	if(empty($email)) {
		$field3 = "0";	
		echo '<li class="red strong">Email Address is required.</li>';
		} else {
		$field3 = "1";	}
	if(empty($comments)) {
		$field4 = "0";
		echo '<li class="red strong">Comments are required.</li>';
		} else {
		$field4 = "1"; }
		echo '</ul>';
	// if any required fields are missing
	if(($field1=="0") || ($field2=="0") || ($field3=="0") || ($field4=="0")) {
	// if all required fields are there
	if(($field1=="1") && ($field2=="1") && ($field3=="1") && ($field4=="1")) {
		// recipients email address
		$recipient = 'me@site.com';
		$name = $HTTP_POST_VARS['name'];
		$email = $HTTP_POST_VARS['email'];
		$phone = $HTTP_POST_VARS['phone'];
		$comments = $HTTP_POST_VARS['comments'];	
		// format the message for mail
		$comments = stripslashes($comments);
		$now = date('l F dS, Y g:i:s a');
		$message = "The following is a message from the website sent on $now.\n\nFrom: $name\nEmail: $email\nPhone Number: $phone\n\n\n$comments";
		// add email subject and headers
		$subject = "Email from website";
		$headers = "From: $name <$email>\n";
		$headers .= "Reply-To: $email\r\n";
		// sends the mail
		echo "<p class=\"strong bigger red\">Your email has been sent!</p>";
		echo "<p>Thank you for contacting us. We will do our best to reply to you as soon as is possible. For the quickest service, feel free to give us a phone call.</p>";
		echo "<p><a href=\"contact.php\">Send another message &#187;</a></p>";
	} else {	

Open in new window

Watch Question

first do not use $HTTP_POST_VARS, it is deprecated, use $POST instead for grabbing values from post form


Ah yes, much appreciated. Still doesn't solve the problem but thanks for the heads up!
sorry i mean $_POST, dont $POST
try it


I figured you meant $_POST :) I did try it and it still doesn't work.
code is working fine, i tested it on my server

mail($recipient,$subject,$message,$headers) is called with right parameters (i injected some debug echos)

so problem is only with mail function


I know the posting is working fine because when it returns the 'no value' error for the field checking, it POSTS the previous values back into the fields, even though the error checking tells me they are empty LOL

It's still just not working for me. I wonder if it's difference between PHP versions that is causing the anomolies between us. I'm using PHP Version 5.2.5
Unlock this solution and get a sample of our free trial.
(No credit card required)


That did it, thanks a ton. I forgot that I was only checking for variables in the createForm function.



Thanks, glad you spotted that!!
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.