// tcc -DNO_UNISTD simpleBB.c cgic.c not supporting long file name // cl /DNO_UNISTD simpleBB.c cgic.c supporting long file name #include #include #include "cgic.h" void Get_kind(char *string); void Get_name(char *string); void Get_e_mail (char *string); void Get_content(char *string); void Get_subject(char *string); void PrintOk(char *string); /* cgi 的主程式從這裡開始 */ int cgiMain () { char Name[21]; char E_mail[51]; char Content[2048]; char Subject[81]; char board[21]; char filename[50]; char pathname[50] = "/website/htdocs/html/simpleBB/"; char urlpath[50] = "http://squall.cs.ntou.edu.tw/html/simpleBB/"; FILE *fptr; Get_kind(board); strcpy(filename, pathname); strcat(filename, board); strcat(filename, ".html"); /* 如果 fopen 傳回 NULL 表示開檔失敗,可能是檔案不存在 */ if ((fptr=fopen(filename,"r")) == NULL) { fptr = fopen(filename,"w"); /* 開一個新的檔案準備寫入資料 */ fprintf(fptr,"\n"); fprintf(fptr,"留言內容\n" ""); fprintf(fptr,"
訪客留言" "
"); fclose(fptr); /* 上面三行就是產生基本的 html 資料(寫到 *.html 裡) */ } fptr = fopen(filename,"a"); /* 開檔來新增資料 */ Get_name(Name); Get_e_mail(E_mail); Get_subject(Subject); Get_content(Content); /* 上面四行分別取得從瀏覽器傳來的 name, e-mail, subject 和 content */ fprintf(fptr,"姓名: \n" "%s
\n",Name); fprintf(fptr,"E_mail : \n" "%s
\n",E_mail, E_mail); fprintf(fptr,"主題 : \n" "%s
\n",Subject); fprintf(fptr,"%s
\n",E_mail); fprintf(fptr,"留言內容:\n" "
");
  fputs(Content,fptr);
  fprintf(fptr,"\n

"); fclose(fptr); /* 上面這一段把資料加進 *.html 裡,其實就只是把 html 的語法、內容寫進去而已 */ cgiHeaderContentType("text/html"); /* 設定輸出為一般文字輸出 */ strcpy(filename, urlpath); strcat(filename, board); strcat(filename, ".html"); PrintOk(filename); /* 然後印出新增資料完成的訊息 */ return 0 ; } void Get_name(char *string) { cgiFormStringNoNewlines("name",string,21); /* 將名為 name 的變數內容到到 string 裡,最大長度為 21 bytes 另外幾個函式依此類推 */ return; } void Get_kind (char *string) { cgiFormString("board",string,21); return; } void Get_e_mail (char *string) { cgiFormStringNoNewlines("E_mail",string,51); return; } void Get_content(char *string) { cgiFormString("content",string,2048); return; } void Get_subject(char *string) { cgiFormStringNoNewlines("subject",string,81); return; } /* 如果執行成功的話,就印出訊息... */ void PrintOk(char *filename) { printf("您的文章已經順利貼出 !!
謝謝使用 ...."); printf("看留言版",filename); return ; }