Example
Example:上例中,若User填入Name:"柯皓仁"
sex:"男"之後,Browser會傳遞下列資訊給CGI
亦即一對以上的Name=value會以&分隔開來,如果Value中含有空白或其他特殊字元,
則會以%??(??為字元之16進位碼)代表.
請告訴我你是誰?
<BR>
<FORM METHOD="POST" ACTION="./who.cgi">
你的姓名是:
<INPUT TYPE="TEXT" NAME="name" SIZE=15 MAXLENGTH=50>
<BR>
男生還是女生:
<INPUT TYPE="RADIO" NAME="sex" CHECKED VALUE="male">男
<INPUT TYPE="RADIO" NAME="sex" VALUE="female">女
<P>
<INPUT TYPE="SUBMIT" VALUE="我決定了">
</FORM>
CGI如何將Form傳過來的資料加以解碼?

一個處理Form輸入的CGI,第一個步驟必須要將Form傳過來的資料加以「解碼」。你可以自己寫個程式將存放在QUERY_STRING
(GET)或標準輸入(POST)中的[Name=Value&Name=Value....]資訊解譯出來,但....,很麻煩的。
幸好!有很多人已經寫了一些做這件事情的工具。
| 使用語言 | 工具 | 在那裡可找到 |
| Sh | cgiparse | /usr/local/netscape/cgi |
| Csh | AA-1.2 | /usr/local/netscape/cgi |
| Perl | cgi-lib.pl | /usr/local/netscape/cgi |
| Perl 5 | CGI.pm-1.53 | /usr/local/netscape/cgi |
| C Language | ncsa-default | /usr/local/netscape/cgi |
| TCL | tcl-proc-args | /usr/local/src/www/cgi |
Example
#!/bin/sh
CGI=/usr/local/netscape/cgi/cgiparse
eval `$CGI -init`
eval `$CGI -form`
echo Content-type: text/html
echo
cat << EOM
<HTML><HEAD>
<TITLE>我知道你是誰喔</TITLE>
<BODY>
<P>
EOM
if [ ! -z "$FORM_name" ]; then
echo "Hello, "
echo $FORM_name
else
echo "你沒有名字嗎?"
fi
if [ ! -z "$FORM_sex" ]; then
echo "Hello, "
echo $FORM_sex
else
echo "你是男生還是女生?"
fi
cat << EOM
<P>
<P><A HREF="./who.htm">回家囉
</A><P>
</BODY></HTML>
EOM
則,經由上述兩指令之後,會產生:
| 環境變數 | 值 |
| FORM_name | 柯皓仁 |
| FORM_sex | 男 |