PHPFormMail - Classic
############################################################################# # PHPFormMail - Something we've always had... # # Copyright (c) 1999 Andrew Riley (webmaster@boaddrink.com) # # # ############################################################################# # # # If you run into any problems, please check out http://www.boaddrink.com. # # # #############################################################################
PHPFormMail is a universal WWW form to e-mail gateway.. PHPFormMail's main goal is to seamlessly take the place of it's PERL sister. All functions from PERL FormMail have an exact duplicate in PHPFormMail. PHPFormMail also has some extra functions built in, where ever you see a "*" (red star) is a new feature. Special thanks to Matt's Script Archive (http://www.worldwidemart.com/scripts) for if it wasn't for him/them/her (?) there would be no FormMail period. =:^)
There is only one required form input tag which must be specified in order for this script to work with your existing forms. Other hidden configuration fields can also be used to enhance the operation of FormMail on your site.
The anonymous WWW user must have the ability to read/execute the PHPFormMail.php script. If you have problems running a script with the .php extension, try .php3, .phtm, .phtml. If those do not work, please check with your system administrator for more help on running PHP scripts.
The PHPFormMail.php script does not have to be extensively configured in order to work. There are only two variables in the script in which you will need to modify.
Necessary VariableYour phpformmail program is now configured.
Note: Users of PHP3 will need to uncomment the following lines:
/*function in_array($needle,$haystack){
$found = false;
while (list($key,$val) = each ($haystack)){
if ($needle
== $val){
$found
= true;
}
}
return $found;
}*/
Will look like:
function in_array($needle,$haystack){
$found = false;
while (list($key,$val) = each ($haystack)){
if ($needle
== $val){
$found
= true;
}
}
return $found;
}
The action of your form needs to point towards this script (obviously), and the method must be POST or GET in capital letters. Below is a list of form fields you can use and how to implement them.
Necessary Form FieldsThere is only one form field that you must have in your form, for PHPFormMail to work correctly. This is the recipient field.
Field: | recipient |
---|---|
Description: | This form field allows you to specify to whom you wish for your form results to be mailed. Most likely you will want to configure this option as a hidden form field with a value equal to that of your e-mail address. |
Syntax: | <input type="hidden" name="recipient" value="email@example.com"> |
Field: | subject |
---|---|
Description: | The subject field will allow you to specify the subject that you wish to appear in the e-mail that is sent to you after this form has been filled out. If you do not have this option turned on, then the script will default to a message subject: WWW Form Submission |
Syntax: |
If you wish to choose what the subject is: To allow the user to choose a subject: |
Field: | |
---|---|
Description: |
This form field will allow the user to specify their return e-mail address. If you want to be able to return e-mail to your user, I strongly suggest that you include this form field and allow them to fill it in. This will be put into the From: field of the message you receive. If you want to require an email address with valid syntax, add this field name to the 'required' field. To send e-mail to more than one address, use commas to seperate the addresses. |
Syntax: |
Single Recipient: Multiple Recipients: |
Field: | recipient_cc* |
---|---|
Description: |
This form field will allow you to carbon copy (CC) the the e-mail to the e-mail address listed. Use this only if you have the email field specified. This will cause two copies of the e-mail to be sent. The first to the address listed in the email field and the second to the address listed in the recipient_cc. To send e-mail to more than one address, use commas to seperate the addresses. |
Syntax: |
Single Recipient: Multiple Recipients: |
Field: | recipient_bcc* |
---|---|
Description: |
This form field will allow you to blind carbon copy (BCC) the the e-mail to the e-mail address listed. To use this fields, you don't have to specify the email field. This will cause the e-mail to be sent but the recipients listed in the recipient_bcc without the recipients to see who it was sent to. To send e-mail to more than one address, use commas to seperate the addresses. |
Syntax: |
Single Recipient: Multiple Recipients: |
Field: | realname |
---|---|
Description: | The realname form field will allow the user to input their real name. This field is useful for identification purposes and will also be put into the From: line of your message header. |
Syntax: | <input type="text" name="realname"> |
Field: | redirect |
---|---|
Description: | If you wish to redirect the user to a different URL, rather than having them see the default response to the fill-out form, you can use this hidden variable to send them to a pre-made HTML page. |
Syntax: | To choose the URL they will end up at: <input type="hidden" name="redirect" value="http://your.host.com/to/file.html"> To allow them to specify a URL they wish to travel to once the form is
filled out: |
Field: | required |
---|---|
Description: | You can now require for certain fields in your form to be filled in before
the user can successfully submit the form. Simply place all field names
that you want to be mandatory into this field. If the required fields are
not filled in, the user will be notified of what they need to fill in, and
a link back to the form they just submitted will be provided.
To use a customized error page, see 'missing_fields_redirect' |
Syntax: | If you want to require that they fill in the email and phone fields in
your form, so that you can reach them once you have received the mail, use
a syntax like:
<input type="hidden" name="required" value="email,phone"> |
Field: | sort |
---|---|
Description: |
There are three ways to sort the output of the form.
|
Syntax: |
If you want to require that they fill in the email and phone fields in your form, so that you can reach them once you have received the mail, use a syntax like: For Alphabetic listings*: For Reverse Alphabetic listings*: For Order listings (This would list the fields in the order of: name,
comment, email): |
Field: | env_report | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Description: |
Allows you to have Environment variables included in the e-mail message you receive after a user has filled out your form. Useful if you wish to know what browser they were using, what domain they were coming from or any other attributes associated with environment variables. Each enviroment variable is sepperated by a comma. The following is a short list of valid environment variables that might be useful:
For more environmental variables, please see Remember to allow the enviromental variables in $valid_env. |
||||||||||||
Syntax: | If you wanted to see the host making the request and the browser the user
is using in your our e-mail , you would put the following into your form:
<input type="hidden" name="env_report" value="REMOTE_HOST,HTTP_USER_AGENT"> |
Field: | priority* |
---|---|
Description: | priority allows you to modify the priority of the e-mail you will receive. 3 is normail priority for an e-mail (default) and 1 is the highest priority. |
Syntax: |
If you wish to have the highest priority: If you wish to have the lowest priority (normal): |
Field: | print_blank_fields |
---|---|
Description: | print_blank_fields allows you to request that all form fields are printed in the return HTML, regardless of whether or not they were filled in. PHPFormMail defaults to turning this off, so that unused form fields aren't e-mailed. |
Syntax: | If you want to print all blank fields: <input type="hidden" name="print_blank_fields" value="1"> |
Field: | title |
---|---|
Description: | This form field allows you to specify the title and header that will appear on the resulting page if you do not specify a redirect URL. |
Syntax: | If you wanted a title of 'Feedback Form Results':
<input type="hidden" name="title" value="Feedback Form Results"> |
Field: | return_link_url |
---|---|
Description: | This field allows you to specify a URL that will appear, as return_link_title, on the following report page. This field will not be used if you have the redirect field set, but it is useful if you allow the user to receive the report on the following page, but want to offer them a way to get back to your main page. |
Syntax: | <input type="hidden" name="return_link_url" value="http://your.host.com/main.html"> |
Field: | return_link_title |
---|---|
Description: |
This is the title that will be used to link the user back to the page you specify with return_link_url. The two fields will be shown on the resulting form page as: |
Syntax: | <input type="hidden" name="return_link_title" value="Back to Main Page"> |
Field: | missing_fields_redirect |
---|---|
Description: | This form field allows you to specify a URL that users will be redirected to if there are fields listed in the required form field that are not filled in. This is so you can customize an error page instead of displaying the default. |
Syntax: | <input type="hidden" name="missing_fields_redirect" value="http://your.host.com/error.html"> |
Field: | background |
---|---|
Description: | This form field allow you to specify a background image that will appear if you do not have the redirect field set. This image will appear as the background to the form results page. |
Syntax: | <input type="hidden" name="background" value="http://your.host.xxx/image.gif"> |
Field: | bgcolor |
---|---|
Description: | This form field allow you to specify a bgcolor for the form results page in much the way you specify a background image. |
Syntax: | For a background color of White:
<input type="hidden" name="bgcolor" value="#FFFFFF"> |
Field: | text_color |
---|---|
Description: | This field works in the same way as bgcolor, except that it will change the color of your text. |
Syntax: | For a text color of Black:
<input type="hidden" name="text_color" value="#000000"> |
Field: | link_color |
---|---|
Description: | Changes the color of links on the resulting page. Works in the same way as text_color. |
Syntax: | For a link color of Red:
<input type="hidden" name="link_color" value="#FF0000"> |
Field: | vlink_color |
---|---|
Description: | Changes the color of visited links on the resulting page. Works exactly the same as link_color. |
Syntax: | For a visited link color of Blue:
<input type="hidden" name="vlink_color" value="#0000FF"> |
Field: | alink_color |
---|---|
Description: | Changes the color of active links on the resulting page. Works exactly the same as link_color. |
Syntax: | For a active link color of Blue:
<input type="hidden" name="alink_color" value="#0000FF"> |
Field: | css* |
---|---|
Description: | Allows for the results/error page to link to a Cascading Style Sheet (css). |
Syntax: | To link to main.css:
<input type="hidden" name="css" value="http://your.host.xxx/main.css"> |
Field: | _regex* |
---|---|
Description: |
Allows for regular expression comparisons on form results. For a field to be checked, it must also be listed in required. To check a field, append _regex to the hidden field name. Note: This function uses eregi() so you must use postix regular expressions. |
Syntax: | To check that the date field is in propper date format:
<input type="hidden" name="date_regex" value="$[0-9{4}-[0-9]{2}-[0-9]{2}$"> |
Any other form fields that appear in your script will be mailed back to you and displayed on the resulting page if you do not have the redirect field set. There is no limit as to how many other form fields you can use with this form, except the limits imposed by browsers and your server.
HTML Notes
As you know, most of the software I release is free, and will always be free. Keep in mind that this donation page isn't for me to profit, it's to allow me to continue developing free software and to keep boaddrink.com for you, the user. Please remember that this software is free for you to download and use but that doesn't mean it's not worth anything. You can donate any amount of money you wish... from $1 to $1,000,000. While a million dollars would be nice don't be pressured, any amount helps, even one dollar.
If you wish to donate, please visit http://www.boaddrink.com/donate.php
Thanks,
Andrew Riley
Version | Date | |
1.03 | 2002/01/01 | Added fields recipient_cc, recipient_bcc
and priority. Now the redirected "error" and "thank you" pages receive all the variables POST encoded for any third party scripts. Changed most attributes to use styles rather than html attributes. Changed how colors were implemented. If they are not defined they will use the browser default instead of the old white/black color scheme. Fixed a bug with the non-redirected "error" and "thank you" pages' title. They now properly reflect the page that is displaying. Made CSS fully CSS compliant. Misc. code cleanups |
1.02 | 2001/09/24 | Added value array fix (konrad@shortcircuit.be) Added back in regular expression searching. Defined the version number at the top of the PHP document and reference the define throughout the script. Added a check for valid environmental variables to stop malicious attacks. |
1.01 | 2001/09/10 | Added sort ability. Made the environmental section variable. Fixed a small bug with the apostrophes (screen output). Removed most of the "for" loops. Cleaned up the documentation. Made the documentation HTML 4.1 Transitional. Made the output of PHPFormMail XHTML 1.0. |
0.03b | 2001/05/25 | Add strip slashes to the output e-mail for those that need it. |
0.02b | 2000/02/06 | Documentation added, fixed refers, and general code clean up. |
0.01b | 2000/01/31 | This script was created. |