用CGI编写web查询系统
CGI简介
公共网关接口(CGI)是一种编程标准,它指定Web服务器调用其他可执行程序(CGI程序)的接口协议标准,CGI程序通过Web服务器和运行Web服务器调用其他可执行程序。它接受由Web浏览器向Web服务器发送信息并处理它,然后将它发送回Web服务器和Web浏览器,CGI程序可以用任何编程语言,如壳牌、Perl、c、java等。用C语言编写的CGI程序具有高速度、高security.cgi节目的特点通常是用来添加查询机制、搜索机制、交互式应用程序和其他应用程序。CGI接口标准包括三个部分:输入、环境变量和标准输出。CGI程序可以获取输入信息从Web服务器通过标准输入(stdin),如从形式获得数据,这是常用的方法后,由于不同的操作系统使用不同的信息交换机制,工艺参数也不同,在UNIX和DOS,一些环境信息的反映系统的情况程序运行时,可以使用父程序之间的信息传递和CGI子程序,它是通过服务器和客户端之间的数据传输量在变化的环境中,操作系统提供了许多环境变量,它定义了程序的执行环境,应用程序可以访问他们的网站。SERVER和CGI接口也设置了一些环境变量来传递一些重要的参数。CGI程序通过标准的输出信息发送到Web服务器(stdout),并发送到服务器的信息可以是一个HTML或纯文本。本文将使用C语言写的一个CGI应用程序的学生成绩查询系统,分析的方法、过程和CGI程序的设计技巧。
两。成绩查询系统简介
在学生成绩公告WWW环境将结果发布后成为各种天的主要手段,每个学生都要自己的密码,所以不必担心安全性能在互联网。任何形式的访问该网站的成绩查询系统的任何学生,只要他们的系列,输入班级,学号和密码,就可以查询系统使用学生成绩查询自己的成绩,其设计思路和系统不仅适用于各种类型的高校公布业绩,也适用于高考,和其他大型试验的结果公布。介绍单一功能的查询系统如果我们想要改进,我们需要添加一些维护结果。要坚持绩效管理的内容,包括成果录入、修改和删除。
三、html表单格式部分
3.1型输运分解
在UNIX系统中,信息是通过CGI stdin /输出传输。因此,如果我们想写一个C语言编写的CGI程序,我们必须了解如何解剖和拦截stdin CGI信息。当用户提交一个HtmlForm,Web浏览器首先将表单中的数据在名称/值对发送给Web服务器的形式,然后把它到CGI程序的Web服务器。其格式如下:
valuelname2 value2name3名= =。
名称输入定义的形式和选择签名,价值是用户输入或选择值,分析和解码的程序,被分解成一系列的名称/值对,这个过程是通过输入流和寻找字符=来完成,当发现角色=,标志一个形式变量的名字的结尾,当发现性格,标志一个形式变量值的结束。当名称/值对分解后,一定是一些特殊字符的输入转换成相应的ASCII字符,如需要转换成+空间,一些特殊的字符转换成ASCII码性格,以上分析分分解和转化过程,在下面的程序中有详细的状态d.3.2html窗体文件查询系统的HTML文件p.htrnl学生成绩查询系统、学生成绩查询系统系列:计算机系、英语系、无线电系,学号:密码:四、学生成绩查询的CGI程序。
CGI程序的分解和接收HTML表格提供的查询条件,然后查询学生的成绩和回报。有学生成绩两个数据文件,一个是***的子数据,其中包含学生的所有科目,***说,主题文件如系计算机是compsub DAT,英语系的主体是engsub.dat文件,elecsub.dat文件是受无线电系;另一个是*** scoer.dat数据文件,该文件包含学号密码,成就每一个学生,***部门,如计算机科学的学生成绩文件compscore.dat部,同样的,其他部门的文件,根据学生的原则凹痕的成就感,学生的分数会显示当学生输入的号码和密码符合数据文件的内容。主要(int argc char argv { }){登记int m = 0;int len;我,文件,* FPL,打开(char)filename2;filename1 { 100 },{ 100 },{ 100 }标题; / * * /字符数据集变量{ 10 } { 10 };char标识{ 100 } { 10 }密码{ 100 } { 10 };int评分{ 100,} { 20 }和{ 100 },,allsum;浮AVG { 100 } alltotalavg;int、等级、数量、指标发现,J,善良;printf(内容类型:文本/ HTML %c %c,10,10);len = atoi(getenv(content_lengith );为(i = 0;len()!Feof (stdin)); I++) {m=I (stdin, inputs{I}.val=readdstdin, len); / * * / read STDiN information AddToSpace (inputs{I}.val); Convert (inputs{I}.val (inputs{I}.val, inputs{I}.name=ReadData);} =); strcpy (filename1, /score/setup/); stucpy (filename2, /xcore/data/); if (StrCmp (inputs{o}.val, Department of computer strcat (filename1 / ==0), compusb.dat ); strcat (filename2, compscore.dat); } if(strcmp(inputs{o}.val,英语系)==0 strcat(filenamel,engsub.dat); strcat(filename2,engscore.dat); } if(strcmp(inputs{o}.val,无线电系)==0 } strcat(filename1,elecsub.dat); strcat(filename2,elecscore.dat); } fp=fopen(filename1,r);/*打开文件*/ kind=0; while(fscanf(fp,%s再次!);}否则{等级= 1(我=我如果(和{指数};等级=等级+ 1;slltotalavg = allsum /数;printf(学生成绩查询系统);pritf(%s
本文研究了玉成绩查询系统为例,对C语言CGI编程的方法和过程进行了详细的分析,对网络/内联网应用的深入,网络和多个数据库连接的需求和背景信息的CGI的复杂性可以使网络的最小程序集成,已成为一种普遍的环境支持各种类型的相互作用,但由于CGI模式中的每一个执行启动外部程序,所以它的应用是实时的,有限的网络,塞纳API和jocbc应用成熟。