网络:CGI程序制作
生活随笔
收集整理的這篇文章主要介紹了
网络:CGI程序制作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CGI程序制作
C語言做CGI程序。
先用C語言寫一個程序,編譯,連接,得到一個.exe的可執行文件。
將這個.exe的可執行文件的擴展名.exe改為.cgi,就好了,這就是一個CGI程序了。
代碼:
/*forms.c*/ #include <stdio.h> #include "function.h" int main(void) {PrintHTTPHead();PrintHTMLHead();PrintHTMLTitle("技微工作室成員注冊頁面");printf("<style type=\"text/css\">");printf("h1,div{text-align:center;}");printf("div{width:300px;margin-left:auto;margin-right:auto;}");printf("</style>");PrintHTMLBody();printf("<h1>技微工作室成員注冊頁面</h1>");printf("<div>");printf("<form action=\"cgi/register.cgi\" method=\"post\">");printf("<table border=\"0px\" cellspacing=\"0px\" cellpadding=\"5px\" width=\"300px\">");printf("<tr><td>網名:</td><td><input type=\"text\" name=\"name\"/></td></tr>");printf("<tr><td>密碼:</td><td><input type=\"password\" name=\"password\"/></td></tr>");printf("<tr><td>電子郵箱:</td><td><input type=\"text\" name=\"email\"/></td></tr>");printf("<tr><td>備注:</td><td><textarea name=\"memo\" cols=\"20\" rows=\"3\">備注</textarea></td></tr>");printf("<tr><td colspan=\"2\"><input type=\"submit\" value=\"注冊\"/><input type=\"reset\" value=\"重置\"/><input type=\"button\" value=\"退出\" onclick=\"javascript:window.close();\"/></td></tr>");printf("</table>");printf("</form>");printf("</div>");PrintHTMLFoot(); }?
/*register.c*/ #include <stdio.h> #include <string.h> #include <stdlib.h> #include "function.h"int main(void) {PrintHTTPHead();PrintHTMLHead();PrintHTMLTitle("register");PrintHTMLBody();char *method,string[255],*temp,tem[4],ch;int length;FILE *fp;temp=string;method=getenv("REQUEST_METHOD");/*用什么方法提立表單*/if(strcmp(method,"POST")==0){length=atoi(getenv("CONTENT_LENGTH"));if(length>255){printf("您的信息似乎不對!");PrintHTMLFoot();exit(0);}fp=fopen("cgi\\information\\inf.txt","a+");if(fp==NULL){printf("服務器端保存信息失敗!");PrintHTMLFoot();exit(0);}fgets(string,length+1,stdin);while(*temp!='\0') {ch=*temp;if(ch=='+'){temp++;continue;}while(ch=='%'){strncpy(tem,temp,3);tem[3]='\0';if(strcmp(tem,"%40")==0)break;temp+=3;ch=*temp;}if(strcmp(tem,"%40")==0){fputc('@',fp);temp+=3;strcpy(tem,"");continue;}if(ch!='&')fputc(ch,fp);elsefputc('\n',fp);temp++;}fputc('\n',fp);fputc('\n',fp);if(fclose(fp)==EOF){printf("文件關閉失敗!");PrintHTMLFoot();exit(0);}printf("信息記錄成功!");}PrintHTMLFoot(); }?
/*function.h*/ #include <stdio.h> void PrintHTTPHead()/*這個函數必須調用,因為先要發送一個http頭*/ {printf("Content-type:text/html;");printf("\n\n");/*這后面必須要兩個加車,因為http頭后面要空一行*/ } void PrintHTMLHead() {printf("<html>");printf("<head>"); } void PrintHTMLBody() {printf("</head>");printf("<body>"); } void PrintHTMLFoot() {printf("</body>");printf("</html>"); } void PrintHTMLTitle(char *title) {printf("<title>%s</title>",title); }?
下面是一個簡單的例子。
#include <stdio.h> int main(void) {printf("Content-type:text/html;");/*在我教室電腦上測試,可少,不過不推薦不寫這個*/printf("\n\n");/*測試,不可少*//*以下就是輸出一個html文件的代碼,就是這樣*/printf("<html>");printf("<head>");printf("<title>WELCOME</title>");printf("</head>");printf("<body>");printf("<h1>WELCOME</h1>");printf("</body>");printf("</html>"); }這里,用printf函數輸出html代碼,不用說,大家應該看得出。
如果要提交表單的話,就在form標簽的action屬性里面填上處理程序。處理程序那邊有post和get兩種方式獲取提交的數據,然后就可以處理了。
?
總結
以上是生活随笔為你收集整理的网络:CGI程序制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Python批量合并多个工作簿中的同
- 下一篇: cs231n:assignment2——