一、CGI概述
CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互,
也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理,将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工作。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl、Fortran、Pascal、C语言等。但是用C语言编写的CGI程序具有执行速度快、安全性高(因为C语言程序是编译执行且不可被修改)等特点。
CGI接口标准包括标准输入、环境变量、标准输出三部分。
1.标准输入
CGI程序像其他可执行程序一样,可通过标准输入(stdin)从Web服务器得到输入信息,如Form中的数据,这就是所谓的向CGI程序传递数据的POST方法。这意味着在操作系统命令行状态可执行CGI程序,对CGI程序进行调试。POST方法是常用的方法,本文将以此方法为例,分析CGI程序设计的方法、过程和技巧。
2.环境变量
操作系统提供了许多环境变量,它们定义了程序的执行环境,应用程序可以存取它们。Web服务器和CGI接口又另外设置了自己的一些环境变量,用来向CGI程序传递一些重要的参数。CGI的GET方法还通过环境变量QUERY-STRING向CGI程序传递Form中的数据。
3.标准输出
CGI程序通过标准输出(stdout)将输出信息传送给Web服务器。传送给Web服务器的信息可以用各种格式,通常是以纯文本或者HTML文本的形式,这样我们就可以在命令行状态调试CGI程序,并且得到它们的输出。
下面是一个简单的CGI程序,它将HTML中Form的信息直接输出到Web浏览器。
#include;stdio.h;
#include;stdib.h;
main()
{
int,i,n;
printf(″Contenttype:text/plain\\n\\n″);
n=0;
if(getenv(″CONTENT-LENGTH″))
n=atoi(getenv(CONTENT-LENGTH″));
for(i=0;i;n;i++)
putchar(getchar());
putchar(′\\n′);
fflush(stdout);
}
下面对此程序作一下简要的分析。
prinft(″Contenttype:text/plain\\n\\n″);
此行通过标准输出将字符串″Contenttype:text/plain\\n\\n″传送给Web服务器。它是一个MIME头信息,它告诉Web服务器随后的输出是以纯ASCII文本的形式。请注意在这个头信息中有两个新行符,这是因为Web服务器需要在实际的文本信息开始之前先看见一个空行。
if(getenv(″CONTENT-LENGTH″))
n=atoi(getenv(″CONTENT-LENGTH″));
此行首先检查环境变量CONTENT-LENGTH是否存在。Web服务器在调用使用POST方法的CGI程序时设置此环境变量,它的文本值表示Web服务器传送给CGI程序。

转载于:https://www.cnblogs.com/lihuidashen/p/3390810.html

C语言进行CGI程序设计相关推荐

  1. C语言写CGI程序【转】

    一.CGI概述 CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准.Web服务器通过调用CGI程序实现和Web浏览器的交互, 也就是CGI程序接受Web浏览器发送给 ...

  2. cgic: 为C语言编写CGI的C函数库

    http://www.qqread.com/cgi-perl/v223877.html cgic: 为c语言编写CGI的C函数库 由Thomas Boutell开发 目录 CGIC介绍 怎样写CGIC ...

  3. c语言银行卡管理系统程序设计报告,《c语言程序设计》课程设计报告-职工信息管理系统.doc...

    <c语言程序设计>课程设计报告-职工信息管理系统.doc 还剩 24页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...

  4. 学校门口的树C语言算法,C语言校园导游程序设计汇报.doc

    C语言校园导游程序设计汇报 <应用程序设计 课程设计>报告 班级: 学号: 姓名: 指导教师: 成绩评定: 目录 题目: 设计一个校园导游程序,为来访的客人提供各种信息查询服务 一.需求分 ...

  5. c语言选择结构程序设计笔记,C语言选择结构程序设计.ppt

    <C语言选择结构程序设计.ppt>由会员分享,可在线阅读,更多相关<C语言选择结构程序设计.ppt(32页珍藏版)>请在人人文库网上搜索. 1.选择结构程序设计,关系运算符和关 ...

  6. C语言程序设计与有限元,C语言与有限元程序设计.pdf

    C语言与有限元程序设计.pdf C语言与有限元程序设计 叶 又 戚 燕 (上海交通大攀国家棋其C几D工程中心 上海加0030) (上海大学计算中心 上海匆印力 摘 要 本文通过与FORTRAN77语官 ...

  7. c语言 教学目标,c语言选择结构程序设计教学目标

    c语言选择结构程序设计教学目标 <选择结构程序设计>教学目标 能力要求: a) 能够使用 if 语句编写条件选择程序 b) 能够使用嵌套 if 语句和 switch 语句编写多分支选择结构 ...

  8. c语言选择结构作用,c语言选择结构程序设计教案

    <c语言选择结构程序设计教案>由会员分享,可在线阅读,更多相关<c语言选择结构程序设计教案(16页珍藏版)>请在人人文库网上搜索. 1.选择结构程序设计(一)说明内容1关系运算 ...

  9. c语言俄罗斯方块程序设计论文,c语言俄罗斯方块游戏程序设计报告

    c语言俄罗斯方块游戏程序设计报告 俄罗斯方块程序设计报告 2018-7-1511 计本(2)班 卢文俊C 语言课程设计报告主标题: C 语言课程设计 副标题: 俄罗斯方块游戏 ----界面设计姓 名: ...

最新文章

  1. 动态规划备忘录方法Java_动态规划和备忘录法的区别
  2. CSS3 transform
  3. 小程序框架之wepy报错问题
  4. 三方支付(支付宝为例)
  5. 智慧赋能黔货出山 丰收节交易会·李喜贵:贵州农业数字化
  6. 《系统集成项目管理工程师》必背100个知识点-21监控项目工作ITTO
  7. 喜大普奔!Github 移动端上架!
  8. ubuntu pip更新_Cubietruck开发板折腾002:安装Python管理工具pip
  9. 中文-自然语言处理-开源工具-流行度调查+句法依存树可视化调研
  10. 实现数据库实时更新 jQuery Timers
  11. Python学习——K近邻算法
  12. Javascript事件模型系列(一)事件及事件的三种模型
  13. Spring IoC、应用上下文容器层次分析
  14. Win10 1903:美化鼠标指针
  15. 从石器时代到硅器时代
  16. 现代 opengl 的驱动安装
  17. 用python做了个桌球瞄准器
  18. 瑞利-贝纳尔对流(Rayleigh–Bénard convection)
  19. OpenLayers 3实践与原理探究3-ol3一个完整的例子
  20. Go Ticker实现原理剖析(轻松掌握Ticker实现原理)

热门文章

  1. 蚂蚁金服分布式事务开源以及实践 | SOFA 开源一周年献礼
  2. 深入vuex原理(上)
  3. 指针结构体函数-事实上能够这样具体理解
  4. Kali-linux使用Nessus
  5. CodePlex关闭,建议迁移至GitHub
  6. 不要学习代码,要学会思考(转)
  7. VirtualBox 扩展虚拟硬盘容量
  8. [Java]关于throw,throws,try{}catch(){}
  9. MyEclipse 深色主题
  10. XML轻松学习手册(1)XML快速入门