用CGIC庫函數獲取表單中的參數值

CGIC是很是優秀的C語言CGI庫函數。 其下載地址爲: www.boutell.com/cgic/#obtain ,如今的版本號是2.05。
從 cgic.c的代碼能夠看出,它定義了main函數,而在cgictest.c中定義了一個cgiMain函數。也就是說,對於使用CGIC編寫的CGI 程序,都是從cgic.c中的代碼進入,在庫函數完成了一系列必要的操做(好比解析參數、獲取系統環境變量)以後,它纔會調用你的代碼(從你定義的 cgiMain進入)。
咱們在提交一個表單(form)時,怎樣把表單內的值提取出來呢?
好比下面這個表單:
<form action="cgi-bin/out.cgi" method="POST" enctype="multipart/form-data">
    <input type="text" name="name" />
    <input type="text" name="number" />
    <input type="submit" value="Submit" />
</form>

當out.cgi收到請求時,須要把輸入框」name」和輸入框」number」內的值提取出來。並且無論form中的action是GET仍是POST,都要有效。

下面給出示例代碼:
下載: test.c

   1. #include <stdio.h>
   2. #include "cgic.h"
   3. #include <string.h>
   4. #include <stdlib.h>
   5. 
   6. int cgiMain() {
   7.     char name[241];
   8.     char number[241];
   9.     cgiHeaderContentType("text/html");
  10.     fprintf(cgiOut, "<HTML><HEAD>\n");
  11.     fprintf(cgiOut, "<TITLE>My CGI</TITLE></HEAD>\n");
  12.     fprintf(cgiOut, "<BODY>");
  13.     cgiFormString("name", name, 241);
  14.     cgiFormString("number", number, 241);
  15.     fprintf(cgiOut, "<H1>%s</H1>",name);
  16.     fprintf(cgiOut, "<H1>%s</H1>",number);
  17.     fprintf(cgiOut, "</BODY>\n");
  18.     fprintf(cgiOut, "</HTML>\n");
  19.     return 0;
  20. }

從上面的代碼能夠看出,第13行和第14行獲取了輸入框的值。

能夠看到該網頁的提交方式是enctype="multipart/form-data",可是在CGIC中已經幫咱們作好判斷了,
因此無論咱們提交網頁是什麼格式的,都沒問題 獲取輸入參數值在CGIC中其實有一族函數,cgiFormString是其中最經常使用的一個。 cgiFormStringNoNewlines用來去掉換行符(若是用戶是在一個TextArea裏輸入字符的話); cgiFormStringSpaceNeeded用於測試輸入值的長度,能夠以此爲依據,而後按需精確分配緩衝區。
相關文章
相關標籤/搜索