您的位置:首页 > 其它

CGI程序制作

2017-10-19 10:17 141 查看
本文的内容是:制作一个CGI程序

CGI程序的制作:

这篇文章所介绍的CGI程序是C语言做的。
先用C语言写一个程序,编译,连接,得到一个.exe的可执行文件。
将这个.exe的可执行文件的扩展名.exe改为.cgi,就好了,这就是一个CGI程序了。

如果不需要一个实例,那么可以看看文章最下面,有简单的代码

以下是C语言代码(以下代码在DevCpp5.11中通过,通过的编译器为GCC 4.9.2 32/64-bit Release,其它编译器大部分也可以正确编译):

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);
else
fputc('\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程序不只有C语言可以写,不过C语言是我最熟悉的语言,顺手。

没有最好的编程语言,只有最适合自己的。别说Python好,只有适合自己才算好!

CGI程序也可以用Python编写,C++也可以,Perl也可以,不过Perl和Python是脚本。在这,用的是C语言。其实我觉得只要是一个可以编写可执行程序的就可以。VB也行,Delphi也行,C#。

其它关于CGI程序所要用的函数或另外的编程语言实现,大家可以去搜一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: