Mail script error checking problem

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!
<?php
 
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>
	<p>QUESTION/COMMENT:<br />
	<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>
	</form>';
} // 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")) {
		createForm();
		}
	
	// 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
		mail($recipient,$subject,$message,$headers);
		
		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 {	
		createForm(); 
	} 			
?>

Open in new window

LVL 5
kingsburymediaAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Michal-DrozdCommented:
first do not use $HTTP_POST_VARS, it is deprecated, use $POST instead for grabbing values from post form
0
kingsburymediaAuthor Commented:
Ah yes, much appreciated. Still doesn't solve the problem but thanks for the heads up!
0
Michal-DrozdCommented:
sorry i mean $_POST, dont $POST
0
CompTIA Cloud+

The CompTIA Cloud+ Basic training course will teach you about cloud concepts and models, data storage, networking, and network infrastructure.

Michal-DrozdCommented:
try it
0
kingsburymediaAuthor Commented:
I figured you meant $_POST :) I did try it and it still doesn't work.
0
Michal-DrozdCommented:
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
0
kingsburymediaAuthor Commented:
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
0
Michal-DrozdCommented:
i am using php5.2.9-2 but it should have same behaviour

i see next problem in code

why u check variables like $name, $phone, $email...when they werent set ?

i mean line like following:
if(empty($name)) {

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
kingsburymediaAuthor Commented:
That did it, thanks a ton. I forgot that I was only checking for variables in the createForm function.

Cheers!!
0
kingsburymediaAuthor Commented:
Thanks, glad you spotted that!!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.