The more general or generic references are listed toward the
beginning of each section. New entries will be added near the
end of a section, unless general or important enough to add at
the beginning.
[24 Jul 97: Created this page from our Web
Resources page, which is largely dormant.
CGI (Common Gateway Interface)
[2 Jan 97: Reorganized this section, moved HTML forms-related
entries to under new heading HTML
Forms below and split the CGI part
into sections:
Matt Wright's The CGI Resources Index
has over 900 resources in 170 categories arranged by: Programs
and Scripts, Books, Programmers, Documentation, Magazine
Articles, and Jobs. This site has a search facility. [added 9
Aug 97].
General Resources:
An Instantaneous Introduction to CGI Scripts and HTML Forms
An overview of the CGI specification (NCSA)
FORM tag syntax
Carlos' FORM Tutorial
PERL Resources:
Matt's Script Archive
NT Perl 5.0
The PERL Language Home Page
CGI.pm--A Perl5 CGI Library (Excellent Resource!)
PERL NT ODBC Module
CGI.pm
POP3Client module
Perl for Windows '95
Visual Basic CGI Resources:
Visual Basic CGI Programming Tutorial
Visual Basic 4.0 CGI Database Programming Guide
Bob Denny's VB CGI Interface Module (a must!)
C/C++ CGI Resources:
JemTek CGI v1.01
C++ CGI Class
CGI Scripting in C
Java Resources:
JARS Java Review Site
ODBC / SQL:
ODBC - Open Database Connectivity -- Connecting the PC to data sources
SQL Summary (Great Resource!)
Accessing Databases via the WWW:
Accessing a Database Server via the World Wide Web
Database Middleware:
Building WWW Infosystems: CGI: Database
Cye H. Waldman's
Definitive HTML Book List is a comprehensive list of books
about authoring and publishing on the World Wide Web. It
includes books on HTML, Web servers, CGI scripting and Perl, Web
page design, VRML, Java, and whatever new directions the Web will
take. [added entry 14 Oct 97].
Tutorials
NCSA's CGI documentation
overview, includes an introduction to CGI, a guide to
upgrading older scripts to CGI compliance, a primer article, a
guide to handling forms with CGI programs, security tips, and the
interface specification, which will help you utilize CGI to the
fullest extent.[checked 5 Oct 97]
Alan Richmond's WWW4 Tutorial hosted on The Web Developer's
Virtual Library (at WWW.Stars.com) CGI tutorial.[Checked
5 Oct 97]
What CGI scripts are
A simple CGI script
Exercise
CGI environment variables
Exercise
Packaging information
Exercise
Forms
Submit buttons
Checkboxes
Radio buttons
Text boxes
Exercise
Text areas and the POST method
The POST method
Appendix: Source code for examples
[updated entry: 2 Jan 97; link checked 5 Oct 97].
W3O's ``official'' list of
HTTP response headers. [entry added 3 Jan 97; checked 5
Oct 97].
CGI Scripts and Script Archives
Robert Niles' The CGI Collection.
Statement of purpose: Central location of CGI information and CGI
Scripts. I don't know about you, but when looking for CGI
information ... and especially CGI scripts I've had to hunt
around the world to find them. Which, in doing so, the hunt
usually ended up wasting alot of my time instead of doing
something productive ...like implementing them.
This site provides an excellent facility to search hundreds of
CGI related pages on multiple sites.
[entry added 2 Jan 97; updated 5 Oct 97].
Matt Wright's Script Archive
provides several well-written and documented Perl CGI scripts by
the archivist along with an FAQ and "help center" for configuring
the script. The scripts (and libraries) include:
Guestbook
Visitors sign in and get added to web page.
Free for All Link Page
Visitors add links to any web site onto list.
WWWBoard
Web discussion board and message forum
Simple Search
Perform keyword searches of web site.
Counter
Graphical count of visitors to web site.
TextCounter
Text-based count of visitors to web page
FormMail
Get the contents of any form mailed to you
HTTP Cookie Library
Set and retrieve HTTP persistent cookies
Random Image Displayer
Randomly display image or background
SSI Random Image Displayer
Random images with proper links and text
Random Link Generator
Let visitors click to a random web page
Random Text
Display random portopn of a text file
TextClock
Display time and date in text on web page
Animation
Animate images (obsoleted by animated GIF89s)
Countdown
Display time until a certain event or date
More recently, Matt has added these C++ CGI programs:
This script can be used to process all of your HTML forms.
Processing includes emailing the client-submitted data to a form
administrator, writing the same data to a flatfile database,
sending email and HTML confirmation to the client, (Note: all
emails interface with the PGP encryption library for secure
communication) requiring that certain input boxes be filled out,
and displaying a dynamic verification screen so that the client
can double check entered information. Examples include a form to
process feedback, a form to automatically download a selected
file, and a ``jump box'' form that allows a user to choose a URl
to jump to from a list.
Guestbook (Last Modified: 8-14-96)
This script allows clients to add entries to your online
guestbook. Based on a similar script by Matt Wright, the
Guestbook script provides an easy-to-use add form that clients
can use to submit their new entries to a constantly growing HTML
``guestbook'' file. The script also provides the option to allow
or disallow the use of HTMl tags in gustbook entries and allows
for you to censor unwanted words. The script will also notify
you via email with new guestbook entries and send an HTML and
email thank you note to the client.
Animations
Basic Animation Scripts (Last Modified 5-12-96)
This link demonstrates various methods of text and graphics
animations.
Random Banner Generator (Last Modified 8-15-96)
Your standard random banner generator. What else can we
say...just what we need, more advertisements!
Miscellaneous Applications
Java To CGI Bridge
Java applets can create interfaces that go beyond the
capability of HTML form tags, Javascript and VBScript. However,
Java applets are limited in their capability of doing practical
things such as connecting to databases, sending email, etc. The
JavaCGIBridge project leverages the strengths of using Perl to
connect to databases and perform application logic while using
Java's superior GUI building facilities to provide a more user-
friendly front-end to CGI/Perl scripts.
Web Store (Last Modified 01-12-97)
Web Store is the culmination in the Online Shopping Scripts.
It merges both the Electronic Outlet HTML and Database
versions and adds all new routines for error handling, order
processing, encrypted mailing, frames, Javascript and VBscript
and other goodies.
Multiple Choice Grader (Last Modified 8-15-96)
This script allows you to create your own multiple choice
exams on the web and, if you create a answer key database, it
will grade the answers submitted by a user.
Classified Ad Manager (Last Modified 7-6-96)
This application manages a classified ads databases allowing
people to barter, trade an sell their stuff, etc. THIS SCRIPT
IS CURRENTLY BEING DEBUGGED.
Mailing List Manager (Last Modified 02-04-97)
This script provides a user interface for browsers to add
their names to your mailing list as well as a Web based
administrator's interface so that you can send mass mailings
to those who have signed your list.
Database Manager (Modified 01-13-97)
This application allows one to maintain (add, modify, delete)
multiple flat-file database from the Web using one script. It
also uses file locking routines to prevent more than one
person from modifying the database at the same time and
incorporates the latest authentication routines.
Database Search Engine (Modified 01-17-97)
This application allows one to search through multiple
databases based on keywords, numerical range or date range
submitted by users.
Fortune Cookie (Last Modified 8-15-96)
Your basic fortune cookie script...with automatically
changing fortunes. This routine can easily be incorporated
into any HTML page by outputting the page from a script or by
calling it with SSI. Or, use it with frames like I did...
Groupware Calendar (Last Modified 8-15-96)
The groupware calendar allows multiple users to view, add to,
modify and delete from a shared calendar. However, though
clients can all see all of the scheduled events, only the
poster of a message can modify that message. Newest feature
includes the ability to manage multiple calendars with
multiple userbases and events from one script.
This shell script simply tests to see which environment
variables are being sent my your browser.
Web Chat (Last Modified 6-3-96)
The oft requested and long promised Chat program is finally
here.
Keyword Search (Last Modified 5-14-96)
This search engine will traverse your entire HTML directory
tree for matches to a client-defined keyword, preparing a
dynamiclly generated HTML page with hyperlinks to hits.
The Basic Bulletin Board Script (Last modified 7-3-96)
Your basic BBS. This Bulletin Board Script allows archived
Usenet-like archived discussion. Users can post new messages
or respond to old ones such that their responses will create
decending threads of conversation.
Authentication Script (Last Modified 7-3-96)
This script basically checks an entered password against a
password file. If the user enters the correct data, she gets
through, if not she is asked to register. Many new flags have
been added for creating user database, emailing notification,
generating passwords, allowing direct registration, or logon
only etc...
Recommended Free Scripts by Other Hackers
For the most part, I am not attempting to be a ``lister of links''
because I am mainly interested in providing content and because
many other netizens are better prepared to keep up with the latest
developments on the web.
If you have not found the script you want, you should read through
my offsite resources list for lists of CGI applications by
programmers other than me and Gunther Birznieks. However, below
are several scripts by other programmers which I am often asked
for, but which have been written well enough by others. these are
not the ONLY scripts of these types, but they are scripts I felt
were pretty good.
Free For All Link Page
This script, by Matt Wright allows you to set up a page which
your users can then add links to in specified categories
Random Link Generator
This package, by Matt Wright allows you to set up a page
which has a link on it. When this link is clicked on, the
user is taken to a random url pulled out of a list of urls
that you specify.
Countdown
This program, by Matt Wright allows you to implement a simple
countdown to a specific date in your web pages.
Count 2.2
This is a CGI program by Muhammad A Muquit to keep record of
the raw hits of a web page. It generates a GIF image of the
number of hits and returns to the browser as an in-lined
image.
Logger
This script saves access date+time, the visitor's host name,
his IP address and browser type, and the referring page (if
any) to a log file on the server (default name =
logfile.txt). This file will be automatically mailed to you.
Script by Walter Soldierer.
Browser Matcher
This script by Drea Leeds determines which browser the client
is using to view your page and then redirects them to a
browser specific page. You can see the thing work by clicking
here
Browser Detection Script
Another good browser detection script by Steven Elliot Pav
jump_list.cgi and jump_off.cgi
Both scripts are used to create jump buttons from a page to
any other page. These scripts were both kindly donated by
Jeff Mackintosh and can be seen in action at
http://www.huntington-ny.com
Also, has links to several libraries, including:
Mail Test Package
This program is used to make sure that the default mail
setup for most of these scripts works on your local machine. It
will help you debug mailing problems.
Authentication Libraries
These libraries help provide a CGI-based authentication
system so that you can password protect HTMl files within your
site without using server-based security.
Mail Libraries
These libraries help you mail with your CGI programs. There
are separate libraries for UNIX and non-UNIX operating systems so
that you can mail on whatever OS your web server runs on.
CGI.pm
An excellent all-purpose Perl 5 CGI library with a multitude
of useful routines that you will need to use time and again.
http-lib.pl
This library helps you create client/server CGI apps or
simply apps that use sockets to communicate with other servers
or CGI scripts on other servers.
cgi-lib.pl
The ultimate library for CGI programmers. Brenner has
placed almost every basic CGI function into this library that has
become the industry standard for everything from parsing form
input to outputting the basic HTTP protocol commands.
cgi-lib.sol
A very old attempt at a library from me. Not really very
good (I don't use it anymore) but cetainly interesting to look
at. Many of the subroutines I still use outside of the library
package.
date.pl
A very good date library from the standard Perl
distribution. This will help you convert, manipulate and analyze
dates in your CGI apps.
flush.pl
A perl library used to flush out the buffer when desired.
[entry added 2 Jan 97; updated 5 Oct 97].
Rod Clark's CGI script archive
includes a small collection of useful scripts written in Perl,
including:
Swish-Web Gateway for SWISH Search Engine
Swish-Web is a more flexible and possibly less buggy alternative to
EIT's WWWWAIS gateway.
Pickmail User Lookup
Pickmail lets you enter a fragment of a user's real name or user name,
and then view all the user names that match. It displays mailto links
for those users' e-mail addresses.
form.cgi Form Mailer
The form.cgi script mails you whatever a user enters on an HTML form.
This script can be installed in the system cgi-bin directory, so it can
be used by any local user. It lets users design their response pages
using free-form HTML.
Logtail Access Log Snapshot
Logtail lets you quickly check your Web server's access log for the
latest usage information for your page or directory. The script doesn't
read the log file sequentially. It seeks to the end of the file and
backs up from there.
Loadav Average System Load Snapshot
Loadav displays the results of the uptime command, with a few
explanatory notes and a little extra formatting.
Readnews Web Newsreader
Readnews retrieves the most recent article headers from a Usenet
newsgroup. It presents a status bar from which you can retrieve earlier
batches of article headers. The Readmsg script reads an article whose
header you select.
Small Hours Guestbook
The guestbook script supports multiple guestbook pages. It can write
messages in forward or reverse chronological order.
Hukilau 2 Search Engine
This is a modification of Russ Adams' Hukilau search engine. Hukilau
searches files in real time, instead of using a stored index. This can
be slow, but it's useful sometimes. Version 2 displays abstracts from
the text surrounding the matches. This makes it easier to see which
search results are the most useful.
[entry added 2 Jan 97; checked 5 Oct 97].
Dale Bewley's Perl Script
archive has several CGI programs available, including:
cookie-test.pl v1.0
Simple little script to set and print a cookie. You might
look at the docs for a long explanation of cookies.
download.pl v1.0
Simple little script that let's you download my Perl site.
You may want to look at it to see how you can suggest a filename
for the browser to save as.
gif2html v1.25
Create an HTML file for each graphic in a directory. Now
with template and caption support. gif2html.pl also inserts
width and height tags for GIF's automatically
gtindex.pl v1.20
This script will create an HTML index of all the graphics
specified on the command line. And create parallel indexes with
thumbnails if you have them.
hserv v0.91
Updates a Web page to point to your weberver at home, using pip.
pfind v1.11b2
Lists all the homepages on a system in a HTML table or VRML
format. The VRML part is kinda messed up, I'm working on a new
version.
postcard.cgi v1.0b6
Send a picture postcard to your friends. Auto expires old
cards. Flat file back end. Still to come is a pay version with
a database back end and more features like image uploading.
nph-replace v1.0
A simple demo of creating a multipart document. If you have
always wondered how to have a CGI output some virtual HTML then
think for a while and output more virtual HTML now you know.
ranban v1.0
Produces random images, links, or banner ads.
slideshow v1.0
Creates a client pull slideshow from existing html
documents. Now optionally outputs to framesets!
thumbnail v0.9
Create thumbnails using convert.
thumbindex v0.9
Creates an index of thumbnails, in table format, which link
to their full size versions.
The following are scripts developed on the job, which may
have some implementation-specific non-portable coding.
hform v1.0
Simple script to create a homepage. Nothing fancy. Neatest
thing is the form that it started from. Did all the work in
JavaScript, but since it was WAY slow on certain Macs the
production version relies on this perl only.
pip v1.3p
Finds the IP of a [PPP] user on the local machine. IUPUI only.
survey v1.1
Users click a link to this CGI, which will administer a
unique survey dependant on HTTP_REFERER, answer a couple of
questions, and are taken directly back to the page they started
on. I'll eventually get back to finish this up.
wapriori.pl v1.1
Library to make it easier to handle forms that make
incidents in Apriori via the Web.
walkin v1.03
Used with Apriori Trouble Ticket System at the IUPUI Help
Desk. Enables you to quickly create incidents via an interactive
menu, bypassing the Apriori interface.
wwwalkin v0.7
CGI version of walkin.pl.
This site also has an extensive list of other CGI Script
archives, along with some CGI/Perl books, newsgroups, mailing
lists, and other reference information.
Robin Chatterjee's
Perl for Win32 page contains frequently asked questions and
copies of the perl-win32-users mailing list responses to them.
[added 26 Nov 1997]
Helper Utilities
The cgiutils
program makes it easier to produce easily a full HTTP/1.x
response header by NPH [No-Parse-Headers] scripts. It can also
be used to just calculate the Expires: header, given the time to
live in a human-friendly way, like ``1 year 3 months 2 weeks 4
days 12 hours 30 mins 15 secs.'' [entry added 2 Jan 97].
Open Market's FastCGI home pagw. FastCGI is
a new, open extension to CGI that provides high performance for
all Internet applications without any of the limitations of
existing Web server APIs. FastCGI application libraries (C/C++,
Java, Perl, Tcl) and upgrade modules for popular free servers
(NCSA, Apache) are available. [added 13 Oct 96; checked 02 Jan
97].
Perl Libraries for CGI
See Yahoo or another link service for CGI libraries written in
other languages besides Perl.
Compatibility with all CGI interactions, including File Upload
Convenient utility functions
Compatible with Perl5 security features such as taint,
warnings, (command line options -Tw) and use strict;
Debugging facilities
Good starting point for migration to more sophisticated libraries
[entry updated 2 Jan 97].
Lincoln Stein's CGI.pm,
a Perl5 CGI Library. This perl 5 library uses objects to
create Web fill-out forms on the fly and to parse their contents.
It is similar to cgi-lib.pl in some respects. It provides a
simple interface for parsing and interpreting query strings
passed to CGI scripts. However, it also offers a rich set of
functions for creating fill-out forms. Instead of remembering
the syntax for HTML form elements, you just make a series of Perl
function calls. An important fringe benefit of this is that the
value of the previous query is used to initialize the form, so
that the state of the form is preserved from invocation to
invocation.
Everything is done through a ``CGI'' object. When you create
one of these objects it examines the environment for a query
string, parses it, and stores the results. You can then ask the
CGI object to return or modify the query values. CGI objects
handle POST and GET methods correctly, and correctly distinguish
between scripts called from <ISINDEX> documents and form-based
documents. In fact you can debug your script from the command
line without worrying about setting up environment variables.
[entry updated 19 Jan 97].
Not Reviewed
The following resources haven't been visited, checked since
the date indicated, if any. The URLs may be stale or the
information dated, but maybe it's current.
Brigitte Jellinek's Server
Side Scripts includes a guestbook with a map and formlib.pl,
a form-handling library written in Perl.
Un-CGI
parses GET and POST queries and runs your CGI program with the
original values stored in new environmental variables named after
the original variable.
Cookware's GATE, integrated
cgi-bin based software technology that allows you to create
databases, Stick Pages, form remailers, shopping systems and
more.
cgic does for CGI programming what gd does for GIF generation.
With cgic, writing sophisticated cgi form-handling programs in C
becomes a straightforward process. The hard work has been done
for you. These are some of the features of cgic:
Parses form data, correcting for defective and/or inconsistent browsers
Transparently accepts both GET and POST form data
Handles line breaks in form fields in a consistent manner
Provides string, integer, floating-point, and single- and multiple-choice
functions to retrieve form data
Provides bounds checking and default values for numeric fields
Loads CGI environment variables into C strings which are always non-null
Provides a way to capture CGI situations for replay in a
debugging environment
Provides a safer form of the system() function
.
Public-use
form handler for those not having access to their machine's
cgi-bin dir, or who are unfamiliar with writing cgi
scripts/programs but who want to gather information via forms on
the WWW.
To use the formhandlers, you create the form on your machine,
in your html directory(ies), and set the action to the handler.
The handler will then take the submitted data and e-mail it to a
specfied recipient. Three formats are available, but feel free
to e-mail me if you need a format specifically for your
needs.
Applications for this include online registration
(unencrypted), questionnaires, testing, etc. Nobody on the host
system sees any of the submitted data.
Free CGI
scripts, including a simple page access counter, a feedback
form and script, and a guestbook that puts new entries into a
database.
A gzipped tar archive of SAFEMAIL,
which provide secure mailing from a Perl CGI script. Here's
a short example of what a script using SAFEMAIL might look like:
#! /usr/local/bin/perl
use CGI;
$q = new CGI;
use SAFEMAIL;
$mail = new SAFEMAIL;
$mail->to("tony\@austria.eu.net"); # an arg sets the field
$mail->subject($q->param("subject"));
$mail->body("hello tony");
print $q->header("text/plain");
print "mail to '" . $mail->to . "'\n"; # no arg just returns the field
print "this is safemail version " . $mail->version . "\n";
$mail->send;
$err = $mail->status;
print "ERROR '$err'\n" if $err ne "";
SHAREWARE: Catalog Ordering
System CGI Package documentation. I've just completed a
preliminary version of the Catalog Ordering System. I'm
releasing the product as shareware, hoping people will find it
useful. A brief list of features:
Easy configuration.
The configure script will prompt you for all the information
it needs and set the system up for you. No going through the
source code replacing variables; the system does all that for you.
Imagemap support.
COS allows you to set up in-catalog imagemaps through its own
imagemap decoder. Although I used an older version of the NCSA
imagemap decoder as a starting point, it seems to work well.
Support for multiple catalogs.
You can generate multiple catalogs within the COS.
Automatic Catalog Page Generation.
Using a template you create, multiple pages for products in
your catalog can be created from the same "mold", simply by
filling in the blanks.
University of Florida, CIS,
Perl Archive World Wide Web page has links to The Hypertext
Perl Man Page provided by rgs@cs.cmu.edu, The
Frequently Asked Questions List, or the out of date Hypertext
Very slow cross-Atlantic link to Nexor Searchable Index,
comp.lang.perl: The Perl Usenet Newsgroup, The Perl
FTP Archive courtesy of the University of Florida Computer and
Information Sciences, examples from both "Programming Perl" and
"Learning Perl", Quotes by the Perl God, Larry Wall, Just Another
Perl Hacker : A collection of japhs from Randal Schwartz, What
the comp.archives catalog of free compilers and interpreters has
to say about perl, and the 99.44% pure Perl Purity Test. There
are also links to these Perl sites: Metronet Perl5 Page, Metronet
Gopher Server, NEXOR Ltd Perl Page, A Wais index of
Comp.Lang.Perl, and an Index of Perl/HTML archives.
A Perl 5 Web site that provides
information on this new release as well as pointers to other Perl
archives.
Web Scripting Library for Perl 5 takes advantage of Perl 5's
object oriented features in a package called CGI.pm. CGI.pm is a
complete replacement for the venerable cgi-lib.pl and adds many
new features. It's most powerful feature is the ability to
generate forms simply and easily, using a handful of method calls
rather than a shopping-cart-full of HTML tags.
Nik Silver's Perl Tutorial:
Start is the start of a tutorial on Perl originally from the
first part of a one-day hands-on workshop at the School of
Computer Studies, University of Leeds, in the UK. Contents:
A basic perl program
The first line
Comments and statements
Simple printing
Running the program
Scalar variables
Operations and assignment
Interpolation
Exercise
Array variables
Array assignments
Displaying arrays
Exercise
Filehandling
Exercise
Control structures
foreach
Testing
for
while and until
Exercise
Conditionals
Exercise
String matching
Regular expressions
The $_ special variable
More on REs
Some example REs
Exercise
Substitution and translation
Options
Remembering patterns
Translation
Exercise
Split
Exercise
Associative arrays
Operators
Environment variables
Subroutines
Parameters
Returning values
Local variables
[entry updated: 20 Jan 96; updated 2 Jan 97].
Babymail
is a free perl script that offers a subset of the functionality
of Kevin Hughes' and Tom Grubers' hypermail program. Basically,
it takes a Unix-format mailbox file and converts it into a
browseable HTML archive. Useful for maintaining an archive of
forwarded Usenet posts, among other things. [entry added 2 Jul
96].
DISCLAIMER
The sites listed on this Web page are provided by
organizations outside CMP Media, Inc. The links on this page are
offered as an informational convenience. Their presence does not
constitute an endorsement or an approval by CMP Media, Inc. --
-- of any of the sites
listed or products, services, or opinions published on those
sites. CMP Media, Inc. bears no responsibility for the accuracy
or the content of sites listed here. Please contact the site's
webmaster -- not CMP Media, Inc. -- to answer any of your
questions about a site.
REPORTS
Analyize In-Line NAC strategies and products.
ANALYTICS Plan and design your enterprise blade server deployments
InformationWeek U.S. IT Salary Survey 2008
Salaries for business technology professionals are falling. Here's what you need to know in order to make good hiring decisions and personal career choices. Download Today