![]() Join Up! 96813 members and counting! |
|
|||
Email Forms in PHP
Dan Ball
I recently admitted to myself that my home business should be moved off of
the "free hosting" service I have had it on for about 3 years. Though the service was great,
and it was very feature-rich as compared to any other free service I have seen, it is still
subject to invasive maneuvers by the company itself. That said, I moved to a pay service.
The immediate thrill was no banner code to add to my pages. The underlying benefit was their
support of PHP (PHP Hypertext Preprocessor) pages and hosting a MySQL database. I knew when
I signed up that they supported that; what I didn't know was how great that combination was,
and how powerful PHP really is.
With this "rebirth" I have found in Web development with my introduction to
PHP I have decided to dedicate a little bit of my time and a few pages to PHP and how easy
it is to setup a very cool email feedback form with it. I have used various tools in the
past to build forms and database connectivity, such as ASP, JSP and CGI/Perl. PHP, without a
doubt, has been the most enjoyable to work with yet, with its familiar scripting syntax and
predictable results.
Barebones PHP basics
A couple very basic concepts of PHP must be discussed before getting into
this project further. First, PHP code is inserted into pages inside <?php and ?> tags.
Second, any page that contains any amount of those tags should have the .php or .php3
extension. The .php3 extension is for pages that are using features that were new to version
3 of PHP. Check with your system administrator for any rules regarding which extension you
need to use and the tags you need to enclose the code, because PHP is also designed to be
custom configured to fit the way you are comfortable coding. It can be configured to use the
ASP <% %> tags amongst other customizations that are beyond the scope of this
article.
The PHP pages still contain a lot of typical HTML, so your pages will still
need the typical <html>, <body>, etc. they just may not be right at the top like
you are used to seeing because there may be PHP variables and such being defined before the
<html> tag. Also, like JSP and ASP, if you do a view source at the client level, you
will only see the HTML and client-side scripting, because by that time all the PHP has been
read and processed by the server and the resulting HTML is fed to the browser.
With all that being understood, let's get on with the fun stuff.
The Form
Like any email form, the original form itself is quite simple. No great
shakes here, just a standard HTML form with a POST method and the action pointing to the PHP
page that will process the form results.
This form can be .html, .shtml or whatever you choose; the page that the
results are handed to, however, must be a PHP page.
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.
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:
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:
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:
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.
|