Sr. Web Developer
mediabistro.com
US-NY-New York

Justtechjobs.com Post A Job | Post A Resume

Email Forms in PHP
Processing the Mail
Take a look at the code on the next page. It is very typical of any scripting language, server-side or client-side, so if you have any amount of knowledge in JavaScript, ASP, JSP, Perl or the like, it should seem very familiar.
The code is a combination of validation, and, if validated, the email processor as well. Take a look at the first if statement, it is checking to see if any of the fields are empty. If any one field is, it then opens a form and prints a statement to inform the user that they missed some required field(s).
The statements after that are also simple. "If" statements check each of the individual fields to see if they are empty; if they are empty, the script prints that field again to be filled in (note that the form was already opened above if a field was empty). If it is not empty it then stores the value of that field in a hidden field.

<?php

if (($Name == "") || ($Email == "") || ($Comments == ""))
{
	echo "<form name=form method=post action=contact_thanks.php>";
	echo "<p class=bodymd>All three fields of this form are required, I really don't think that's too much to ask...</p>";
	echo "<p class=bodymd>Fill in the ones you missed, they are listed below.</p>";
}
if ($Name == "")
{
	echo "<p class=bodymd>Your Name<br><input type=text name=Name></p>";
}
else
{
	echo "<input type=hidden name=Name value=$Name>";
}
if ($Email == "")
{
	echo "<p class=bodymd>Your Email<br><input type=text name=Email></p>";
}
else
{
	echo "<input type=hidden name=Email value=$Email>";
}
if ($Comments == "")
{
	echo "<p class=bodymd>Comments or Questions<br><textarea name=Comments rows=5 cols=40></textarea></p>";
}
else
{
	echo "<input type=hidden name=Comments value=$Comments>";
}

if (($Name == "") || ($Email == "") || ($Comments == ""))
{
	echo "<input type=submit name=Submit value=Submit>";
	echo "<input type=reset name=Reset value=Clear Form>";
	echo "</form>";
}
else
{
	$message = "Name: $Name\nEmail: $Email\nComments: $Comments\n";
	$extra = "From: $Name\r\nReply-To: $Email\r\n";
	mail ("noone@nowhere.com", "Website Email", $message, $extra);
	echo "<p class=bodymd>Thanks for your inguiry, $Name.</p>";
	echo "<p class=bodymd>A response will be sent to $Email as soon as possible.</p>";
}
?>
The final if statement above is again checking for empty fields. If any of the required fields are empty, it will print submit and clear buttons as well as the closing form tag to complete the form that has been opened earlier for re-submission. Once re-submitted it will be re-validated by the same process. Once all of the required fields are filled in, it then hits the else option of the last if. This is where the mail is processed and sent.
Look at the else in the final if statement:
else
{
	$message = "Name: $Name\nEmail: $Email\nComments: $Comments\n";
	$extra = "From: $Name\r\nReply-To: $Email\r\n";
	mail ("noone@nowhere.com", "Website Email", $message, $extra);
	echo "<p class=bodymd>Thanks for your inguiry, $Name.</p>";
	echo "<p class=bodymd>A response will be sent to $Email as soon as possible.</p>";
}
    
The first line sets the body of the email. This is where it takes the values of all the fields, which are variabilized with the field name preceded by a "$," so the field name "Name" is known to PHP as "$Name." The \n, as most of you I am sure know, starts the text on the next line. Therefore, $message = "Name: $Name\nEmail: $Email\nComments: $Comments\n"; will result in this message body:
Name: {value of Name field}
Email: {value of Email field}
Comments: {value of Comments field}
    
The second line is not necessary to send email, but it is convenient to use, as it sets the "from" and "reply-to" fields in your email client. It's a neat feature. Now sending the email, you won't believe how easy this is. All it takes is:
mail ("noone@nowhere.com", "Website Email", $message, $extra);
    
The "mail" statement sends the defined values to the sendmail program configured in you Web server. The first value is where the email gets sent to, the second is the subject of the email, the third is the body of the message that you complied above, and the last is the "from" and "reply-to" statement from above...thats it! Now how easy was that?!
Final Thoughts
PHP has really renewed my interest in my profession. It has promise of adding new life to my Web sites. I have been working with MySQL integration and administration as well as permissions and password protection. All tasks have been enjoyable, interesting and relatively quick and easy. I really think any real Web geek like myself will find great fun in learning the powerful features and functions that PHP has to offer, and on top of it all, PHP, MySQL and Apache are all free! If that doesn't help to spark your curiousity level, I doubt anything will.
About the author
Dan Ball is very involved in Web development and the music industry and has produced recordings, streaming media and Web sites for several musical artists worldwide. Currently he operates his own audio production and Web development business, dB Masters Audio Prod. He can be contacted at dbmasters@excite.com.
This article originally appeared on WebReference.com.


[Page 1]  [Page 2]  


Comments:
Parse error with your scriptChris06/24/08 00:29
Emailing form not sendingLuAnne03/14/08 23:25
Email FormChris01/31/08 10:43
Email Forms in PHP - read this first.Colin McKinnon01/30/08 11:58
 

If you are looking for help, please post on the appropriate forum here. Your questions will be answered much more quickly.

Add A Comment:

Name:

Email:

Subject:

Message:

To reduce spam posts, messages are now manually approved

You are not [logged in]. That means your account will not get credit for this post.