From: Subject: Form Handling CGI script - forms.cgi Date: Wed, 31 Oct 2001 14:33:00 +0100 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_00C6_01C16218.F128BAC0"; type="text/html" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 This is a multi-part message in MIME format. ------=_NextPart_000_00C6_01C16218.F128BAC0 Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.bigbiz.com/forms.html Form Handling CGI script - forms.cgi

Form Handling CGI script - forms.cgi

This document describes how = you can=20 use our forms handling scripts to handle your form data. It features=20 We describe how you can design = your=20 forms, give you some real examples you can copy and enhance. If you are = a=20 FrontPage user, dont worry about the technical details of HTML in this = document,=20 you can use the FrontPage editor's user interface to hide all the html; = and we=20 give a detailed step-by-step example.=20

The forms handler script is called forms.cgi and can be = invoked from=20 your form using an html <FORM> tag and setting=20 action=3D"http://www.bigbiz.com/cgi-bin/forms.cgi". www.bigbiz.com mey = be changed=20 depending on which server you are on, this will be discussed later. For = secure=20 forms you can post to https://www.bigbiz.com/cgi-bin/forms.cgi. If you = are a=20 FrontPage user, you can set your form properties to post to a cgi script = and=20 type in the name of this script, more on that later.=20

Example

Lets start with an example=20
This form lets you enter your name, and email address, and = posts=20 it to the forms.cgi script. This form is configured to send the = message "Thank=20 you for using forms.cgi" to the email address you enter. This is just = a simple=20 demonstration of using forms.cgi to mailback form results.=20
Name: Email address: =

The HTML code for the above example is as follows
Name: Email address:
Lets discuss each component of the form so you understand it = better=20

action=3D"http://www.bigbiz.com/cgi-bin/forms.cgi"

ACTION = specifies the=20 CGI script your form is posted to. Depending on which server you are on, = and=20 whether you want to post the form data securely, the URL can change.=20 =
Server URL Secure URL
web01 http://www.bigbiz.com/cgi-bin/forms.cgi https://www.bigbiz.com/cgi-bin/forms.cgi
web02 http://web02.bigbiz.com/cgi-bin/forms.cgi https://secure.bigbiz.com/cgi-bin/forms.cgi
web03 http://web03.bigbiz.com/cgi-bin/forms.cgi https://web03.bigbiz.com/cgi-bin/forms.cgi
web04 http://web04.bigbiz.com/cgi-bin/forms.cgi https://web04.bigbiz.com/cgi-bin/forms.cgi
web05 http://web05.bigbiz.com/cgi-bin/forms.cgihttps://shop.bigbiz.com/cgi-bin/forms.cgi
It= is=20 important you use the script for the server you are on - it will not = work=20 otherwise.=20

method=3D"POST"

The method will always be POST; this is just the = world=20 wide web standard for cgi scripting.=20

myname

This is a user defined field, it is later listed in = F_fields to=20 put it into the message thats mailed to you. You should probably list = all user=20 defined fields in the F_fields variable.=20

F_to

When you want the form results to be e-mailed, you need to = specify=20 system variables F_to, F_from, and F_subject. In this form we let the = user type=20 in the F_to variable. Note: all system variables begin with an uppercase = F and=20 underscore "F_"; and have special meanings.=20

hidden

Hidden variables are useful to pass user information and = system=20 information to the forms.cgi script. There are many system variables = that=20 control the forms.cgi script (see the reference section). These are = typically=20 passed into the script as hidden variables. You can also pass in user = defined=20 hidden variables to be included in your form results.=20

msg

This is a user defined hidden variable and will be placed in = the=20 body of the email. It is listed in F_fields.=20

yourname

This is a user defined hidden variable and will be = placed in=20 the body of the email. It is listed in F_fields.=20

F_fields

This system variable specifies which variables are to = be=20 included in the body of the message. The format of F_fields determines = how your=20 message will appear, a "+" is replaced with a space, and a "," is = replaced by a=20 new-line. You should always specify a F_fields hidden variable.=20

F_subject

This is a system variable for email - specifies the = subject=20 line used in the message.=20

F_from

This is a system variable for email - specifies the = sender of the=20 message.=20

submit

Each form must have a submit button, the value will be = shown on=20 the button.=20

FrontPage Forms

If you are a FrontPage user, you can design your = forms=20 using the FrontPage editor. As an example we will duplicate creating the = above=20 form using FrontPage. We will show you step-by-step what to do to = achieve the=20 same results as the above html.=20

Click HERE for=20 the FrontPage step-by-step, which includes all the screen shots. The = page has a=20 lot of screen shots and may take some time to load, be patient.=20

Click HERE=20 for the "light" version where you can click-thru to each graphic (loads = much=20 faster).=20

Mail Back Forms

The most common use for forms.cgi is to mail the = users'=20 input to the webmaster. The mailback example above illustrates its use. = As a=20 minimum you should specify a F_to variable. We also recommend setting = F_from,=20 F_subject, and F_fields.

Example:

FEEDBACK FORM
Name:
Email address:
Message:
=20
FEEDBACK FORM=20
Name:
Email = address:
Message:=20

Secure Forms

A popular use of secure forms is for online order = forms.=20 Security is needed to make sure sensitive information (like credit card = numbers=20 and bank account info) cant be intercepted by third parties.=20

To set up a secure form, you need to=20

  • Access the form using a secure URL=20
  • Specify a secure URL for the form ACTION=20
  • Encrypt sensitive fields

Access the form using a secure URL

Your web site is normally = accessed=20 using http://www.yourdomain.com and is considered (by industry experts) = to be=20 non-secure. A third party with the proper equipment can tap the transit = routers=20 and capture the data as it goes across the internet and steal your = information.=20 Think of the analogy of someone tapping your phone line or listening in = on your=20 cellular phone call.=20

Your web site can also be accessed using a secure URL using the https = protocol, example: https://www.bigbiz.com/yourdomain.com. When you use = https,=20 the information across the internet is encrypted and is nearly = impossible for=20 someone capturing the data to decrypt. Your secure URL will depend on = which=20 server your web site was assigned to and you can find it on your = "welcome"=20 message you received when we opened your account.=20

Currently the following are the shared secure server URLs:=20 =
Server Secure URL
web01 https://www.bigbiz.com/yourdomain.com
web02 https://secure.bigbiz.com/yourdomain.com
web03 https://web03.bigbiz.com/yourdomain.com
web04 https://web04.bigbiz.com/yourdomain.com
web05https://shop.bigbiz.com/yourdomain.com
If = you dont=20 know your server - try them all and see which one works.=20

When you have a form on your web site, you can link to it using the = secure=20 URL to the form instead of the regular URL, that will give the users of = your=20 form the feeling of security. Example, suppose your form is at=20 http://www.acme.com/shopping/orderform.html and you are on web01, then = the=20 secure URL is https://www.bigbiz.com/acme.com/shopping/orderform.html.=20

Translating a normal URL to a secure URL is key to making portions of = your=20 web site secure. We illustrate with 2 examples, one on web01 and one on=20 web04:




Note: FrontPage users, you cannot use any web-bots on your secure = forms=20 (example: hit counters), they will not work when you access it using the = shared=20 secure server. Design your secure forms without web-bots.=20

Specify a secure URL for the form ACTION

For the ACTION=3D"URL" = field in=20 the <FORM> tag, specify the secure URL of the forms.cgi script. = The=20 following table shows the URL to use=20 =
Server Secure URL for form ACTION
web01 https://www.bigbiz.com/cgi-bin/forms.cgi
web02 https://secure.bigbiz.com/cgi-bin/forms.cgi
web03 https://web03.bigbiz.com/cgi-bin/forms.cgi
web04 https://web04.bigbiz.com/cgi-bin/forms.cgi
web05https://shop.bigbiz.com/cgi-bin/forms.cgi

Encrypt sensitive fields

For best protection, you can tell = forms.cgi to=20 encrypt some fields. If someone intercepts your e-mail, or somehow gets = your=20 logfile they would have a very difficult time to decrypt your message. = We highly=20 recommend encrypting credit card numbers.=20

Note: To use encryption you must obtain an encryption key first. = Click HERE to get an encryption = key.=20

To encrypt, add "_encrypted" to the variable you want to encrypt in = the=20 F_fields list; the encrypted version of the variables will be sent = instead of=20 the normal versions. You will also need to add system variable F_key, = which is=20 your encryption key as obtained above. You can use your encryption key = on your=20 forms, even tell other people, however DO NOT TELL ANYONE YOUR SECRET = PASS=20 PHRASE. You will use your secret pass phrase to decrypt your messages.=20

Example:=20

When you receive the form results (by email for example), you will = notice=20 the cc_number field is encrypted. You need to use the form at https://www.bigbiz.com/decry= pt.html=20 to decrypt the credit card number. Note: it is very difficult for = someone to=20 guess your decryption phrase, even if they know your encryption key. = We=20 recommend bookmarking the decryption page.

Working = Example:=20
This example form lets you enter a credit card number (you = dont=20 have to enter a real one) and demonstrates encrypting it. It will = email you=20 the encrypted number. When you receive the email, use the Decryption Form to = decrypt the=20 number. You can use your own encryption key, or for = this demo=20 you can use encrytion key=3D"nNxgFpguL0A" decryption phrase=3D"Mary = had a little=20 lamb.".=20
Credit Card=20 Number: Email address:
Encryption=20 Key: (normally this is = hidden)
=20
Example: skip to the section on Secure Order = Forms=20 for a real example=20

OK and Error Pages

After the user submits the form and forms.cgi = processes it, it displays a simple page "Your form has been processed, = thank=20 you". This is probably not adequate for most applications so forms.cgi = allows=20 you to specify your own URL for the thank-you page. Set the URL in the = system=20 variable F_ok_url, example:

Sometimes an error is detected in forms.cgi; a required field is = missing, a=20 email address is not valid, etc... We display the error message and = instruct the=20 user to go BACK and correct it and re-submit. You can override this = behaviour by=20 specifying your own F_error_url, example:

Note: If you specify a cgi script for F_error_url, we will = pass the=20 form variable error_message to it. It will contain the error = message(s).=20

Working Example: This example shows F_ok_url and F_error_url being = used. http://www.bigbiz.c= om/forms/ok-url-test.html=20

Confirmation Page

A confirmation page is optionally displayed to = the=20 users browser after their input has been accepted. If you set the = confirmation=20 page variable F_display, then it overrides the F_ok_url and the default = thank=20 you message. You have better control over the confirmation page display, = and you=20 can include the users input on the page.=20

Set F_display to the title of the confirmation page. The confirmation = page=20 contents will be the same as whats produced by F_fields. You can = override=20 F_fields using F_display_fields. If you want to be fancy, you can = include HTML=20 tags in F_display_fields to customize the output.=20

Example:

'+name+'','Your message dated'+F_date,'has been sent to our = webmaster. We will respond as soon as possible.'"> Several other working examples on this page demostrate the use = of=20 confirmation pages.=20

Validating Credit Card Numbers

forms.cgi can validate credit = card=20 numbers using an industry standard checksum. Simply set the system = variable=20 F_validate_cc to your credit card number variable name. forms.cgi will = check the=20 credit card number and detect errors.
Example: Working Example:
Credit Card Number:
Credit Card=20 Number: = The check will catch = most=20 mistyped and randomly typed numbers. Give it a try.=20

Required fields

forms.cgi can detect missing required fields, = simply set=20 the system variable F_required to the list of required fields. If any of = the=20 fields are blank then an error message is issued.=20

Example:

Working Example: (you must fill in all the fields)=20
Name:
Address:
Phone = Number:
=20

Logfile

forms.cgi normally generates an e-mail message. However = it can=20 be modified to also generate a log file. In order to generate a logfile = you will=20 need to upload your own cgi script to define the name of the log file = and the=20 fields that will be recorded. Here is the format of your script = #!/usr/bin/perl $logfile=3D'your log file name'; $logfilefields=3D'your log file fields'; require('/usr/local/apache/cgi-bin/forms.cgi'); Example =20 #!/usr/bin/perl $logfile=3D'orders.txt'; $logfilefields=3D'F_date,name,address,city,state,zip,amount'; require('/usr/local/apache/cgi-bin/forms.cgi'); And you need to POST to your own script. You will be able to = post your=20 form to either the secure or regular URLs. For example, if you upload = the script=20 named orders.cgi into the cgi-bin directory of your account acme.com on = web01,=20 you can post to
or for secure posting

By specifying the variables $logfile and $logfilefields, the script = will=20 append the form results to a logfile. You can later download the file = and use it=20 for whatever purposes, order tracking, import to database, etc... Set = $logfile=20 to the name of the file, it will be put into your home directory; if you = are a=20 FrontPage user, the file will be put into your _private directory.=20

Set $logfilefields to a list of fields to log, you can include = special fields=20 (ones beginning with F_), and also you can include encrypted fields = (ending with=20 _encrypted). In the above example you may end up with a logfile that = looks like=20 this:

"Sun Jul 19 13:24:57 1998","Trisha Ashby","555 Oak = Blvd.","Los Angeles","CA","90213","13.95" "Sun Aug 2 19:56:18 1998","Peter Miles","294 State Ave., Apt. 2","New = York","NY","10002","75.00" "Tue Aug 18 22:57:35 1998","Joe Sekera","1234 Main = St.","Montclair","CA","95332","20.00"

It is safe to encrypt secret fields into your logfile, if someone = manages to=20 steal your logfile, they cannot get the secret fields. to decrypt your = logfile,=20 download it to your system, and use the decryption page's = "UPLOAD"=20 feature to decrypt an entire file all at once.=20

Note: we assume you already know how to upload scripts into your = cgi-bin=20 directory.=20

Special F_fields Variables

Add these special variables to your = F_fields=20 list if you want them in your message.=20

F_date

The time and date is placed in this variable=20

F_referer

The URL of the form=20

F_ip_address

The IP address of the user submitting the form=20

F_host

The hostname of the user submitting the form, if = available=20

Testing your form

Instead of forms.cgi, use = forms-test.cgi as=20 your <form> action and you can test your form. The test scrript = will=20 display all your input, any errors detected, and give you a summary of = actions=20 it would have taken. We recommend using forms-test.cgi until everything = is OK,=20 then you can change the action to forms.cgi and go live. In case you = haven't=20 noticed yet, the working example in the "Mail Back Forms" topic above = posts to=20 forms-test.cgi; try it.=20

Example

Tip: if you uploaded your own script (see the discussion of = logfile),=20 just name your script forms-test.cgi if you want a test version.=20

Order Form Features

forms.cgi has special features to handle = order forms=20 with multiple lines of items. It can calculate line totals, subtotals, = tax, and=20 order total. (It cannot calculate shipping costs, so you would have to = make a=20 flat rate estimate).=20

On your order form line items, you need to send the fields QTY* and = PRICE*,=20 where * is a number. For example if you have 3 items, you can set = PRICE1,=20 PRICE2, and PRICE3. The corresponding QTY1, QTY2, and QTY3 would be the = quantity=20 ordered, and is generally a user entry field on the order form. You can = define=20 additional line fields, such as CATALOG_NUMBER*, DESC*, etc... which = represent=20 the item on the line.=20

When an order form is submitted, forms.cgi will calculate line totals = (QTY*=20 times PRICE*), and order subtotal (total of all the line totals). If the = special=20 variables F_taxrate is set, then we also calculate the tax (order = subtotal times=20 taxrate). Another special variable F_totalsum gives a list of fields to = sum for=20 the final order total. All of the calculated values (line totals, = subtotals,=20 tax, order total) are available to be used in your email, confirmation, = or=20 logfile using special variable names.=20

Here is an example of a simple order form for a hardware store. We = explain=20 how each form component works. You can try it out and send yourself some = test=20 orders. We also show you how you can make the form secure.=20

=20 For demo purposes, enter your email address: =
For demo purposes, the credit card number "49927398716" = will pass=20 the validation check.
= '+F_orderline*+'',,'Subt= otal'+F_subtotal,'Tax'+F_tax,'Shipping'+Shipping,'Order = Total'+F_total,'Phone Number'+phone,,thanks"=20 name=3DF_display_fields> =20

ACME Hardware Shop Order Form

Quantity Catalog Number Description Price Each
06-1130 3 lb. Ball Peen Hammer 12.50
09-8756 12" Hacksaw, w. starter blade 24.95
13-8722 4 piece Philips Screwdriver Kit 4.33
06-2220 3/8 inch Crescent Wrench 9.99

Sales Tax:  CA = resident=20 (8.25%)        AZ resident (6%)     Other  (no sales tax)

Shipping:   UPS=20 Ground ($10)     UPS Blue ($15)     Fed-Ex ($30)

Credit Card Number Expires /

Ship To

Name  
Address  
City, State Zip  
Phone  

For demo purposes, enter your email address:
For demo purposes, the credit card number "49927398716" will pass the = validation check.
'+F_orderline*+'
',,'Subt= otal'+F_subtotal,'Tax'+F_tax,'Shipping'+Shipping,'Order = Total'+F_total,'Phone Number'+phone,,thanks">

ACME Hardware Shop Order Form

Quantity Catalog Number Description Price Each
06-1130 3 lb. Ball Peen Hammer 12.50
09-8756 12" Hacksaw, w. starter blade 24.95
13-8722 4 piece Philips Screwdriver Kit 4.33
06-2220 3/8 inch Crescent Wrench 9.99

Sales Tax:=A0 CA resident (8.25%) =A0=A0=A0=A0=A0=A0 AZ resident (6%)=A0=A0=A0=A0 Other=A0 (no sales tax)

Shipping:=A0=A0 UPS Ground ($10)=A0=A0=A0=A0 UPS Blue ($15)=A0=A0=A0=A0 Fed-Ex ($30)

Credit Card Number Expires /

Ship To

Name=A0=A0
Address=A0=A0
City, State Zip=A0=A0
Phone=A0=A0

Lets discuss the various fields and their meanings=20

QTY1, QTY2, QTY3, and QTY4

These fields are for user input for # = of=20 items ordered. The name must be QTYnnn where nnn is a number.=20

PRICE1, PRICE2, PRICE3, and PRICE4

These hidden fields are the=20 corresponding single unit prices for each line item. The name must be = PRICEnnn=20 where nnn is a number corresponding to QTYnnn.=20

CATN1-4, ITEM1-4

These are additional descriptions for each line = item.=20 They are referenced in the variable F_orderline which is used to format = the=20 orderline output. You can have more of these XXXnnn variables depending = on what=20 your order processing department needs.=20

F_to, F_from, F_subject

Email fields. This sends the order to = the order=20 processing department.=20

F_taxrate

This radio button set inputs the tax rate to the = script. The=20 number is in percent. The special variable F_taxrate is used to = calculate F_tax=20 using the formula F_subtotal * F_taxrate / 100.=20

Shipping

This radio button set inputs the shipping charges. The = variable=20 Shipping is used later in F_totalsum to determine the order total.=20

F_subtotal

This is a calculated number, it is all the line = totals=20 combined.=20

F_linetotal

This special system variable holds the line total = for each=20 line whose quantity is non-zero. It is used in F_orderline for = formatting the=20 line output. This is a calculated number and has no meaning outside of=20 F_orderline.=20

F_tax

This is the calculated tax based on F_taxrate.=20

F_totalsum

A list of variables to add together to arrive at the = order=20 total. F_subtotal and F_tax are calculated. Shipping is a user input. = The=20 calculated value can be printed using the variable F_total.=20

F_orderline

This gives the format of the order line used in the = output=20 (F_orderline* in F_fields). Each of the '*' variables are replaced by = their=20 corresponding line item values. F_linetotal is a special variable = representing=20 the line total.=20

F_fields

The format of the body of the message. The special = features we=20 use here are F_orderline*, which represents each order line (see=20 F_orderline for its format). Note also the calculated values for = F_subtotal,=20 F_tax, and F_total are printed. The credit card number is encrypted.=20

F_key

The key used for encrytion. The key here corresponds to a=20 decryption phrase "Mary had a little lamb.". When you receive the email = order=20 you can use the decryption page to decode the credit card number.=20

F_cc_validate

We validate the credit card number before = processing.=20

thanks

Just a literal used later in F_display_fields.=20

F_display and F_display_fields

The confirmation page title and = format.=20 Note use of F_orderline* surrounded by <listing></listing> = so we can=20 get a better format confirmation page.=20

F_required

We require the user enter all those fields=20

exp1 and exp2

Fancy input to collect the credit card expiration = date.=20

action=3D"https://www.bigbiz.com/cgi-bin/forms.cgi"

The form = action posts=20 to the secure URL. This is because we want to protect the credit card=20 information.

Secure Order Form

We've taken a copy of the above order form and = uploaded it to the motelworld.com website. motelworld.com is on web02. = We=20 modified the form slightly=20
  • we post the the secure url on web02 = https://secure.bigbiz.com,=20 instead of the web01 url https://www.bigbiz.com=20
  • modified email addresses so it comes from motelworld.com =
Otherwise=20 the form is identical.=20

Note you can invoke the form secure by translating the normal URL http://www.motelw= orld.com/acme/order_test.html=20 to ht= tps://secure.bigbiz.com/motelworld.com/acme/order_test.html.=20 Since you are in charge of the links on your web site, make sure you use = the=20 secure link. Thats all there is to converting a normal order form to a = secure=20 order form.=20

FrontPage design of Secure Order Form

Our final FrontPage = example gives=20 step-by-step instructions to design the secure order form shown above.=20

Go HERE for the = page with all the graphics. The page has a lot of screen shots and may = take some=20 time to load, be patient.=20

Go HERE for = the "light" version where you can click-thru to each graphic (loads much = faster).=20

Reference

This section lists all system variables, (those that = begin=20 with F_). When naming your own variables, dont name any beginning with = "F_". We=20 may add new system variables from time to time, they will always begin = with F_.=20

F_cc

Specifies the Cc recipient(s) of the email message. See = also F_to.=20

F_date

Specify this variable in your F_fields list to get a = time/date=20 stamp. Example will place the time/date, ip_address, and refering URL into = your=20 message, such as: Mon Aug 10 22:41:54 PDT 1998 209.33.112.45 http://www.mydomain.com/shopping/orderform.html

F_display

Will display a web page with this title after = processing the=20 form. The body of the page is determined by F_display_fields or = F_fields. You=20 can use this to display a confirmation to the user that you received = their=20 input.=20

Example:=20

This form sends email and then displays a confirmation.=20

Please send me=20 a catalog
Name:
Address:
City: State:=20 Zip:
',name,address,city+','+state+zip+''"=20 name=3DF_display_fields> =
Please send me a catalog
Name:
Address:
City: State: Zip:
',name,address,city+','+state+zip+''">

F_error_url

The is the URL which will be redirected to if the = forms.cgi=20 script detects an error. If you dont specify one then we simply display = the=20 error message. You can specify an html file or a cgi script. If you = specify a=20 CGI script, you can process the form variable error_message which we = will pass=20 to you.=20

Examples

Note: in the cgi example, if the error was "Credit Card Number = Invalid", then your cgi script will be invoked as=20 http://www.mydomain.com/cgi-bin/error.cgi?error_message=3DCredit+Card+Num= ber+Invalid,=20 which sends the variable error_message into your script with the value = "Credit=20 Card Number Invalid".=20

F_fields

This system variable specifies which variables are to = be=20 included in the body of the message. All user defined fields should = probably be=20 put here. If you dont specify F_fields, then all user variables will be = placed=20 in the message, in alphabetical order.=20

Besides user variables, you can include any system variable in the = list as=20 well, expecially F_date, F_ip_address, and F_referer, and F_host. = Example

F_fields can also define the format of your message and = include=20 literal strings. Any number of these components can be included in the = F_fields=20 list:=20
  • 'xxx' - literal string
    Enclose literals within single quotes. = The=20 literal will be printed as-is. Example: 'Your name is'+name=20
  • variable_name
    The variable's value is printed. You can = specify=20 any variable, user or system.=20
  • variable_name_encrypted
    The variable's encrypted value = is=20 printed. You must also specify a F_key for encryption. Example: = 'Please=20 charge'+total+'to'+credit_card_encrypted+expiration =
Components are=20 joined with either a '+' or a ','.=20
  • +
    A plus sign becomes a space. Example: city+','+state+zip=20
  • ,
    A comma becomes a new-line. Example: = name,address,city+','+state+zip=20

F_from

Specifies the from address of the email that is sent. To = send=20 email you should specify F_from, F_to, and F_subject, and optionally = F_cc.=20 Example Email address:

F_host

Specify this variable in your F_fields list to get the = Hostname=20 of the user (if possible). Hostname is an attempt to resolve the user's = IP=20 address, sometimes it fails because the user's ISP has not configured = reverse=20 DNS. See also F_ip_address.=20

F_ip_address

Specify this variable in your F_fields list to get = the IP=20 Address of the user. IP address may be used as a clue to which ISP they = are=20 using to connect to the internet. For an example see F_date above.=20

F_key and *_encrypted

F_key specifies an encryption key to use = for=20 encrypting fields. Fields to be encrypted are named in the F_fields list = with a=20 _encrypted suffix. Use https://www.bigbiz.com/genkey= .html=20 to get a key to use. Use https://www.bigbiz.com/decry= pt.html=20 to decrypt your messages. Example:

F_linetotal

It holds the current line total (QTY * PRICE), and = is only=20 useful in the F_orderline format. See Order Forms for = details.=20

$logfile

$logfile can be set to the name of a file to log all = results=20 to. You can only set this variable if you upload your own cgi script. = See the=20 discussion on Log Files for an example.=20

The logfile will be either placed in your home directory or in the = web=20 directory _private if it exists (Note: FrontPage automatically creates = the=20 _private directory). To retrieve the contents of the logfile, you can = ftp it=20 from your home directory, make sure you set TEXT or ASCII mode to = transfer the=20 file. If it is placed in your _private web directory, you can get it = with your=20 browser at http://www.yourdomain.com/_private/name_of_file. You = will need=20 to enter your FrontPage userid and password.=20

Note: non-FrontPage users can also use the _private mechanism, simply = create=20 the web directory _private and add appropriate protections with = .htaccess.=20

The variable $logfilefields can be used to specify the format for the = logfile=20 body.=20

$logfilefields

List the variables you want logged. The overall = format of=20 the logfile entries is comma separated values enclosed in quotes = (commonly known=20 as CSV). The logfiles are suitable for importing into spreadsheet and = database=20 programs.=20

Example:

$logfilefields =3D 'name,email,F_date';

F_names

Set this variable to 1 is you want variables to be = preceded by=20 their names.=20

Example:

Normally we dont display names, the body looks like this

Joe = Smith 1234 Main St. 555-1212 However if we set F_names:

the body looks like this

name: Joe Smith address: 1234 Main St. phone: 555-1212

F_ok_url

This is the URL the users browser is redirected to = after=20 successful processing of the form. Example

F_orderline and F_orderline*

F_orderline gives the format of the = F_orderline* variable used in F_fields. It determines the print format = of each=20 line item (whose QTY is nonzero). End variable names with '*' to = indicate it is=20 variable per item.=20

When you use F_orderline* in F_fields, it places the entire block of=20 formatted order lines into the output. You can also use F_orderline* in=20 F_display_fields.=20

QTY* and PRICE*

These special names are used for order form = processing.=20 See the section on Order=20 Forms for details.=20

F_referer

Specify this variable in your F_fields list to get the = URL of=20 the form which posted to the script. Note: some browsers do not send = referer=20 correctly. For an example see F_date above.=20

F_required

You can specify a list of variables which must have a = value.=20 For example if your form requires name, address, and phone number to = have an=20 input use Suppose the user didnt enter any address, then the forms.cgi = will=20 invoke F_error_url with the message "Missing required input: address".=20

F_subject

Specifies the Subject: of the email message. See = F_from for an=20 example.=20

F_subtotal

This is a calcluated amount, and is the sum of all = the line=20 totals. For example QTY1*PRICE1 + QTY2*PRICE2 + ... See Order Forms for = details.=20

F_taxrate and F_tax

If F_taxrate is set, will cause the value of = F_tax=20 to be calculated as F_tax =3D F_taxrate * F_subtotal * 100. (The = multiply by 100=20 is there because the rate is a percentage). The astute programmer will = notice=20 that seting this to a negative number will give a discount. See Order Forms for = details.=20

F_to

Specifies the recipient(s) of the email message. See F_from = for an=20 example.=20

F_totalsum and F_total

F_totalsum is a list of variables which = are added=20 together to calculate F_total. See Order Forms for = details.=20

Example:

F_validate_cc

Specifies the variable name of a credit card = number which=20 will be checked for validity. Note: this only does a industry standard = checksum,=20 it does NOT use the banking network to check funds. It is at most useful = for=20 guarding against mis-typed numbers. Example: Credit Card = Number: Expires: ------=_NextPart_000_00C6_01C16218.F128BAC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.bigbiz.com/pics/secureex1.gif R0lGODlhKwO2APcAAAAAAP///2ZmZgAzAP8AAABmMwAzMwAzZgAzmQAzzAAz/wAAMwAAZgAAmQAA zAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAAArA7YA AAj/AAMIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX MGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOK 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 1rzNdBgQADs= ------=_NextPart_000_00C6_01C16218.F128BAC0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.bigbiz.com/pics/secureex2.gif R0lGODlhQQO2APcAAAAAAP////8AAAAzAABmAABmMwAzMwAzZgAzmQAzzAAz/wAAMwAAZgAAmQAA zAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABBA7YA AAj/AAMIHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuX MGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cq1q9evYMOK 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 ------=_NextPart_000_00C6_01C16218.F128BAC0--