next up previous contents
Next: Using Tokenize on Up: Form Processing Previous: The DIY Approach

The cgiparse approach on the CERN server

The CERN HTTPD server comes with a useful script called cgiparse, which does most of the hard work we did above. It will work with either the GET or POST methods, though again we recommend using POST for forms of any length.

cgiparse reads the QUERY_STRING environment variable (as set if you use the GET method) or, if QUERY_STRING is not set, reads CONTENT_LENGTH characters from standard input (as set if you use the POST method). What it does next depends on which flag you give it, but for now we're only interested in the `` -form'' flag.

`` cgiparse -form'' outputs a string which, when evaluated by the Bourne shellgif, sets environment variables (with `` FORM_'' prepended to their names) for each of the form elements. It also URL decodes the variables for you.

Thus a script to do the same task as above (now written in Bourne shell!) would be:

#!/bin/sh
eval `cgiparse -form`
$filename=$FORM_pubname
$doc_root="/cs/research/www/www/htdocs"
$fullfilename=$doc_root"/misc/uk/london/pubs/auto-"$filename".html"

#Write the entry to a file in HTML
echo "<TITLE>"$FORM_pubname"</TITLE>" > $fullfilename
echo "<H1>"$FORM_pubname"</H1><HR>" >> $fullfilename
echo "<I>"$FORM_pubaddress"</I><P>" >> $fullfilename
echo "<h2>Area:</h2> "$FORM_area"\n" >> $fullfilename
echo -n "<h2>Description:</H2>" >> $fullfilename

.....and so on...

cgiparse can take many other command line options to modify it's behaviour, and can be used for tasks other than form processing - we recommend the CERN httpd Reference Manual which is available on the web for a more detailed explanation.



Jon Crowcroft
Wed May 10 11:46:29 BST 1995