CGI Applications
Return to
Main Index
Overview
CGI stands for "Common Gateway Interface,". What this
means is that they are programs that are commonly run on a server when
a web browser invokes them from a web page. This means that the web browser
does not need to have any fancy viewers or plugins for the CGI program
to run.
The CGI Scripts provided for you are basically self-contained.
There is little, if anything, that needs to be done to them to make them
operate. The complicated part for most users trying to add cgi scripts
is file paths and permissions. Even experienced programmers and webmasters
struggle at times to properly configure cgi programs. If you are a Novice
User with limited knowledge in this area, it is strongly recommended that
you first become highly proficient with HTML and web page creation before
attempting to do this yourself.
Adding CGI Scripts
We provide many CGI scripts with your account which you
will find in a directory called cgi-bin. We do not provide
free support for CGI scripts which we do not install on your server, so
if you wish to add new CGI scripts you may want to do a bit of research
on them first unless you are familiar with them already. Adding new scripts
requires a more advanced knowledge of programming terms and skills and
is not generally recommended for Novice Users.
If you are an experienced user, (or a novice who myopically
decides to install your own scripts) you can access more technical cgi
information in the Advanced User section of
this manual.
Return to
Main Index
Go To Top of Page
CGI Script Resources
There are many good resources for CGI scripts found on
the web. The scripts at Matt's Script Archive found at http://www.worldwidemart.com/scripts/
are very good. Many of our scripts come from there. Another excellent resource
is The CGI Resource Index found at http://www.cgi-perl.com/
Unless you are an expert on the subject, you should look for scripts that
are very well documented and come with step-by-step instructions.
You may contact us for help or installation.
Where to
Put CGI-bin Scripts
Put your cgi-bin scripts in the www subdirectory named
"cgi-bin".
Return to
Main Index
Go To Top of Page
Quick
Guidelines For Using SSI's
No! We are not talking about a Social Security Income
check from uncle Sam! SSI stands for Server Side Include... and it
means that you can insert the contents of another web page, program or
file into the web page that adds the Server Side Include.
A couple of important points you need to follow
for SSI to work on your domain.
1. The web page that adds the SSI instruction
to include another page or program MUST end with .shtml or .sht rather
than .html or .htm.
2. The URL to the page you want to insert must
be relative to the current web page rather than a full URL.
The SSI feature on your domain is limited to what is known
as a "exec cgi command". This simply means that you can insert into
any page the ability to execute any cgi program. The format for a Server
Side Include is:
<!--#exec cgi="/cgi-bin/THE-PROGRAM-NAME-HERE.cgi"-->
One quick observation... do you notice how this SSI instruction
uses a *relative* URL (/cgi-bin/....) instead of a FULL URL? This is very
important to keep in mind when using SSI.
For example, let's say we want to include a counter program
(that has the name, counter.cgi) on our home page, called normally index.html.
Remember! Because we want to add a SSI instruction in our home page, it
must end with .shtml or .sht. In this case, we would name it index.shtml.
The counter program is named counter.cgi, and like
all cgi programs, this program is found in the cgi-bin directory of your
domain.
So the SSI instruction to include on your web page, where
you want the counter to be displayed is:
<!--#exec cgi="/cgi-bin/counter.cgi"-->
Return
to Main Index
Go To Top of Page
Permission
Settings for Provided Scripts
All of the cgi scripts provided as part of your domain
have been setup and configured properly. As mentioned earlier, one
of the most difficult tasks of dealing with CGI programs is correct settings
of file permissions. Listed below are the default permission settings
for the installed CGI programs.
|
wwwboard Permission
|
| bbs dir |
chmod 755 |
| bbs/messages |
chmod 755 |
| bbs/index.sht |
chmod 666 |
| bbs/data |
chmod 666 |
| cgi-bin/wwwboard.pl |
chmod 755 |
|
Guestbook Permission
|
| Guestbook dir |
chmod 755 |
| Guestbook/guestbook.cgi |
chmod 755 |
| Guestbook/guestbook.setup |
chmod 666 |
| Guestbook/guestbook.html |
chmod 666 |
|
Free
for all Links Permission
|
| links dir |
chmod 755 |
| links/links.htm |
chmod 666 |
| cgi-bin/links.pl |
chmod 755 |
|
Graphic
Counter Permission
|
| counter dir |
chmod 775 |
| counter/logs |
chmod 777 |
| counter/ all other files |
chmod 666 |
| cgi-bin/counter |
chmod 755 |
|
Cgi-bin
always chmod 755 all scripts chmod 755 in main bin
|
| cgi-bin/counters (text counter) |
chmod 755 |
|
Random Text
|
| random dir |
chmod 775 |
| random/random.txt |
chmod 666 |
|
Password Admin
|
| password dir |
chmod 755 |
| All password files |
chmod 666 |
Return
to Main Index
Go To Top of Page
Cgiwrap--Secure
Server CGI Wrapper
Your domain includes secure server access, allowing you
to collect customer information in a secure fashion. Since you might
also want to run a cgi program in secure mode, we make available Cgiwrap
- a system that allows safe, secure use of cgi programs. We have created
a sort short cut for this as well.
When you want to use a cgi script or program in secure
mode, you
must change the URL to follow this format:
https://machine.safe-order.net/cgi-domain/script.cgi
Machine - that is the machine name that
is hosting your domain.
cgi-domain - replace the word domain with
your domain name.
script.cgi - use the name of the cgi script located
in your cgi-bin directory.
For nph-style scripts, use nph-cgiwrap or nph-cgiwrapd
instead.
Return
to Main Index
Go To Top of Page
Preconfigured
CGI-bin Scripts We Provide
This section contains all of the information you need to create
your web pages for use with the CGI scripts we provide for you
as part of your account. These scripts are recommended for users
with Advanced knowledge and experience
with HTML and web page creation.
NOTE: Due to the width restrictions of
this page some code strings appear broken. Do NOT duplicate the
breaks. Enter code strings in one continual line.
FormMail.
This script is one from Matt's Script Archive
which we have installed and preconfigured for your domain. FormMail
is a generic www form to e-mail gateway, which will parse the results of
any form and send them to the specified user. This script has many formatting
and functional options, most of which can be specified through the form.
This means you don’t need any programming knowledge, nor do you need multiple
scripts for multiple forms. This also makes FormMail the perfect system
wide solution for allowing users form-based user feedback capabilities
without the risks of allowing freedom of CGI access.
Note: If you wish to use FormMail on a secure server
please see the special instructions here.
There is only one form field that you must have in your
form, for FormMail to work correctly. This is the recipient field.
Other hidden configuration fields can also be used to enhance the operation
of FormMail on your site.
The action of your form needs to point towards this script,
and the method must be POST in capital letters. Here's an example of the
form fields to put in your form:
<FORM METHOD=POST ACTION="http://yourdomain.com/cgi-bin/formmail.cgi">
<input type=hidden name="recipient" value="whoever@yourdomain.com">
<input type=hidden name="subject" value="Order">
<input type=hidden name="return_link_url" value="http://yourdomain.com/">
<input type=hidden name="return_link_title"
value="Back to Main Page">
The following are descriptions and the proper syntax
for fields you can use with FormMail.
Return
to Main Index
Go To Top of Page
Recipient Field
Description:. This form field allows you to specify
to whom your form results will be mailed Most likely you will want
to configure this option as a hidden form field with a value equal to that
of your email address.
Syntax: <input type=hidden name="recipient"
value="email@yourdomain.com">
Subject Field
Description: The subject field will allow you
to specify the subject that you wish to appear in the email that is sent
to you after the 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:
<input type=hidden name="subject" value="Your
Subject">
To allow the user to choose a subject:
<input type=text name="subject">
Email Field
Description: This form field will allow the user
to specify their return email address. If you want to be able to return
e-mail to your user, it is strongly suggested that you include this form.
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.
Syntax: <input type=text name="email">
Realname Field
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">
Redirect Field
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://yourdomain.com/to/file.html">
To allow them to specify a URL they wish to travel
to once the form is filled out:
<input type=text name="redirect">
Required Field
Description: You can require 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, separated by commas. 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 the syntax like:
<input type=hidden name="required" value="email,phone">
Return
to Main Index
Go To Top of Page
Env_report Field
Description: Allows you to have Environment variables
included in the email 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. The following is a short list of valid environment variables
that might be useful:
REMOTE_HOST - Sends the hostname making the request.
REMOTE_ADDR - Sends the IP address of the remote
host.
HTTP_USER_AGENT - The browser the client is using.
(Note: In our case, both REMOTE_HOST and
REMOTE_ADDR are the same, since our servers don't do the reverse DNS lookup
needed to generate the true REMOTE_HOST string).
Syntax: If you wanted to find all the above variables,
you would put the following into your form:
<input type=hidden name="env_report" value="REMOTE_HOST,REMOTE_ADDR,HTTP_USER_AGENT">
Sort Field
Description: This field allows you to choose the
order you would like your variables to appear in the email form that FormMail
generates. You can choose to have the field sorted alphabetically or specify
a set order in which you want the fields to appear in your email message.
By leaving this field out, the order will simply default to the order
in which the browsers send the information to the script (which is usually
the exact same order as they appeared in the form). When sorting by a set
order of fields, you should include the phrase "order:" as the first part
of your value for the sort field, and then follow that with the field names
you want to be listed in the email message separated by commas.
Syntax: To sort alphabetically:
<input type=hidden name="sort" value="alphabetic">
To sort by a set field order:
<input type=hidden name="sort" value="order:name1,name2,etc...">
Return
to Main Index
Go To Top of Page
Print_config Field
Description: print_config allows you to specify
which of the config variables you would like to have printed in your e-mail
message. By default, no config fields are printed to your email. This is
because the important form fields, like email, subject, etc. are included
in the header of the message. However some users have asked for this option
so they can have these fields printed in the body of the message. The config
fields that you wish to have printed should be in the value attribute of
your input tag separated by commas.
Syntax: If you want to print the email and subject
fields in the body of your message, you would place the following form
tag:
<input type=hidden name="print config" value="email,
subject">
Print_blank_fields Field
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. FormMail defaults to turning this
off, so that unused form fields aren't emailed.
Syntax: <input type=hidden name="print_blank_fields"
value="1">
Title Field
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">
Return_link_url Field
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://
yourdomain.com/index.htm">
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:
Back to Main Page
Syntax: <input type=hidden name="return_link_title"
value="Back to Main Page">
Formmail authors instructions
Return
to Main Index
Go To Top of Page
Cgiemail
Cgiemail is another form processing script, totally different
than FormMail. It is a program written in the C language that takes the
contents of fill-in boxes on a form and emails them to a specified location.
In addition to the form specification in the .html file, a mail specification
in a .txt file is required to format the resulting email message.
We provide the cgiemail in the cgi-bin directory of your
server. You need to have an action in your order.htm file to call it. It
should look like this:
<form method=post action="http://www.yourdomain.com/cgi-bin/cgiemail/order.txt">
Details are provided below. While there are a number of
subsections below this one, they all work together and are meant to be
read from start to finish.
order.htm
Look for a file in your www directory called order.htm.
This is our example form we put on your site that shows how a form should
be configured to work with Cgiemail. Look at it in a browser, and download
it to your hard drive using FTP so you can see how it works. If you've
never dealt with HTML forms before, don't worry, they're easy to create
and understand.
The form prompts the user for data which is sent to the
server as simple key-value pairs. Each <input> tag
specifies a record. The key is given by the name
attribute, and the value is given by the value attribute. The type attribute
tells the browser what kind of data to expect. Now, try looking at the
example.
Please note that the hidden items are used to transmit
critical info to Cgiemail. They provide the location of the success file,
the name of the person the results should be sent to, and the subject of
the form. When making your own forms, you may want to change the email
address in the "required-to" field, and likely the subject in the
"subject" field. The first item tells Cgiemail what to show the
user after successfully completing the form. You can, but don't need to
customize this.
Return
to Main Index
Go To Top of Page
After that come the items that are actually
presented to the user. You'll want to use type=text input items
with cgiemail: it's a simple tool. The size=60 tells the browser
how big to make the box. The name=something is required in each
input tag, otherwise the browser wouldn't know how to send the data to
the server. The value=" " attribute is correct in most cases, unless
you want a default value in the form.
Note that if a field begins with required-, cgiemail
will require that the user enter a value for this field. This is particularly
useful if you want to require a user to submit their email address.
When the user presses the Submit button, the data
goes to our machine where cgiemail starts doing something with it. What
is does is controlled by the order.txt file discussed below.
By the way, you can name your HTML form anything
you want to.
order.txt
Now that we have all this data, what do we do with it?
Mail it, of course! But for flexibility, cgiemail requires that you create
a mail.txt file to show it what to send. (If you didn't want flexibility
you'd use a mailto link.) The program will read this file, perform substitutions,
and pass it to the mail system.
Make sure that you upload mail.txt in ASCII
mode.
Failure to upload mail.txt in ASCII mode will generate the message:
"Server Error: The server encountered an internal
error or misconfiguration and was unable to complete your request."
There is already an example order.txt document in the
forms directory in your www directory.
By the way, there's nothing magical about the name
order.txt. Feel free to call it mail1.txt or form1.mail, or whatever suits
you, as long as the form has the correct name for what you uploaded.
Note that the first several lines are mail headers.
You probably shouldn't change that part, or the corresponding parts in
your form. In particular, there must be a To: header or the mail
won't go anywhere!
What cgiemail does is simply replace every string
that looks like [key] with the value the user typed into the field
with name=key. That's all. You can lay out your form as is best
for your users, but lay out your mail.txt as is best for you to read. You
can even insert gobs of text to help format the output. Only the [key]
parts will be replaced by cgiemail.
Cgiemail does not report environmental variables
like FormMail will, but other than that, it is an excellent program, allowing
you more flexibility in the way you want your data returned by the form.
Return
to Main Index
Go To Top of Page
Secure
Server Order Forms
Normally, any text (such as your credit card number)
sent from your browser to the web server is sent as plain text. This means
that a hacker could potentially intercept (however unlikely) the information
sent from your browser and read it. However, by using the secure server,
the information is encrypted before it is sent from your browser. It would
be practically impossible for anyone to decrypt it without knowing the
key. Please use the secure server only when necessary, as when requesting
sensitive information from your visitors.
The domains hosted by us are housed on many different
computers, each of which have a different machine name. To find out what
machine name to use for your secure order access calls, check the faq file
of your domain at:
http://www.yourdomain.com/faq.html
Each server has its own safe-order site, and although
you will be putting your form on your own domain, it must be called through
the safe-order server in order for the form to be secure.
To do this, create your form as usual and put it somewhere
in your www directory. You can put your form anywhere you want to, but
for this example, let's assume the normal URL for your form can be accessed
from a browser with this URL:
http://www.yourdomain.com/signup/secureform.html
To call the form through the secure-order server, you
need to use the following URL to access your pages via the secure server
(even though your form resides on your own domain space):
https://machinename.safe-order.net/yourdomain/signup/secureform.html.
That would be the URL you would put as an <HREF> to
link to your form from whatever page you have your visitors link from.
Don't forget the "s" in "https."
To call scripts in your cgi-bin via the secure server
you should use a URL like this:
https://machinename.safe-order.net/cgi-yourdomain/your-cgi.cgi
Return
to Main Index
Go To Top of Page
Special instructions for using FormMail.cgi
with the Secure Server
If you are using formmail.cgi through the secure server,
you can still place your form anywhere on your webspace you want to, but
you MUST use the following URL as the ACTION of your form:
https://machinename.safe-order.net/cgi-bin/formmail.cgi
Here's an example of how the first parts of your
form might look:
<FORM METHOD=POST ACTION="https://machinename.safe-order.net/cgi-bin/formmail.cgi">
<input type=hidden name="recipient" value="whoever@yourdomain.com">
<input type=hidden name="subject" value="Order">
<input type=hidden name="return_link_url" value="http://yourdomain.com/">
<input type=hidden name="return_link_title"
value="Back to Main Page">
It is still important that you call your order page through
a secure URL in order for it to work properly. You must use:
https://machinename.safe-order.net/yourdomain/order.htm.
If you call formmail.cgi through the secure server, you
must also call the order form through the secure server. Otherwise, a "bad
referrer" message will result.
Return
to Main Index
Go To Top of Page
Guestbook
Guestbook allows you to set up your own comments page.
From there, visitors can add entries to your Guestbook and they will be
displayed with the most recent at the top and scrolling down, or vice versa.
Other options include the ability to limit HTML in the entry, link to e-mail
address with mailto tag, use a log to log entries, redirect to a different
page after signing, emailing whenever a new entry is added, and much more.
Guestbook is already set up for use on your server.You can simply use the following URL to access it:
http://yourdomain.com/Guestbook/guestbook.html
If you want to change any of the configuration options,
locate the guestbook.cgi file in your Guestbook directory (inside your
www directory). Download it to your hard drive in ASCII mode, and save
it somewhere safe. Create a copy of the file and give it the same name,
then edit the options as specified below. Keep your backup of the original
guestbook.cgi in case you run into problems.
Option 1: $mail
This option will allow you to be notified via an
E-mail address when a new entry arrives in your Guestbook. The entry will
be mailed to you as a notification. If you should choose to turn this variable
on you will need to fill in the 2 variables that go along with it:
$recipient - Your email address, so that
the mailing program will know who to mail the entry to.
$mailprog - The location of your sendmail program
on your host machine.
Option 2: $uselog
This will allow you the ability to use the short log
feature. It is already turned on so you will have to change it to 0 if
you do not wish to use it. It has been implemented since there are many
people who feel no need to have a log when people are making entries to
a file anyway. Keep in mind that it will show errors which is one nice
aspect about it.
Option 3: $linkmail
Turning this option on will make the address links in
your guestbook become hyperlinked. So instead of simply having name@some.host)
it will put
(<ahref="mailto:name@some.host">name@somehost</a>
so that anyone can simply click on the address to email them.
Option 4: $separator
This allows you to choose whether you want guestbook
entries to be separated by a Paragraph Separator <p>, or a Horizontal
Rule <hr>. By changing the 0 in the script to a 1, you will turn on
the <hr> separator and turn off the <p> separator. The 0 option will
do the reverse of that; turn on the <p> and turn off the <hr>.
Option 5: $redirection
By choosing 1 you will enable auto redirection and 0
will return a page to the user telling them their entry has been received
and click here to get back to the Guestbook.
Option 6: $entry_order
Set this option to 0 and the newest entries will be added
below the rest of the entries. Keep this option at 1 and the Guestbook
will add the newest entries at the top.
Option 7: $remote_mail
Many users of the Guestbook have requested that a form
letter be automatically sent to the remote user when they fill in the Guestbook.
Turning this option on will tell the script to automatically mail any user
who leaves an email address. You can specify the contents of the mail message
by editing the section of the script that sends mail to the remote user.
By default it sends a message that says, "Thank you for adding to my Guestbook."
and then shows them their entry. If you should choose to turn this variable
on, you will need to fill in the 2 variables that go along with it:
$recipient - Your email address so that
the mailing program will know who to mail the entry to.
$mailprog - The location of your sendmail program
on your host machine.
Option 8: $allow_html
This option allows you to turn on or off the use of HTML
tags by users of your guestbook. Setting this variable to 1
allows
users to embed html tags such as &
|