Decoding forms in other languages
|
|
|
|
| Articles Reviews CGI | ||||||||
| Written by Bogdan V | ||||||||
| Thursday, 12 October 2006 | ||||||||
Page 1 of 6
{mos_sb_discuss:32} C Shell (csh) It is difficult to decode form information using native C shell commands. csh was not designed to perform this type of string manipulation. As a result, you have to use external programs to achieve the task. The easiest and most versatile package available for handling form queries is uncgi, which decodes the form information and stores them in environment variables that can be accessed not only by csh, but also by any other language, such as Perl, Tcl, and C/C++. For example, if the form contains two text fields, named "user" and "age," uncgi will place the form data in the variables WWW_user and WWW_age, respectively. Here is a simple form and a csh CGI script to handle the information: <HTML> Notice the URL associated with the ACTION attribute! It points to the uncgi executable, with extra path information (your program name). The server executes uncgi, which then invokes your program based on the path information. Remember, your program does not necessarily have to be a csh script; it can be a program written in any language. Now, let's look at the program. #!/usr/local/bin/csh The usual header information is printed out. if ($?WWW_name) then uncgi takes the information in the "name" text entry field and places it in the environment variable WWW_name. In csh, environment variables are accessed by prefixing a "$" to the name (e.g., $REMOTE_HOST). When checking for the existence of variables, however, you must use the C shell's $? construct. I use $? in the conditional to check for the existence of WWW_Name. You cannot check for the existence of data directly: if ($WWW_name) then If the user did not enter any data into the "name" text entry field, uncgi will not set a corresponding environment variable. If you then try to check for data using the method shown above, the C shell will give you an error indicating the variable does not exist. The same procedure is applied to the "age" text entry field. if ($?WWW_age) thenHere is another important point to remember. Since the form contains a scrolled list with the multiple selection property, uncgi will place all the selected values in the variable, separated by the " #" symbol. The UNIX command tr converts the "#" character to the space character within the variable for viewing purposes.
|
||||||||
| Last Updated ( Wednesday, 27 June 2007 ) | ||||||||
| < Prev | Next > |
|---|







