CGIC是C语言CGI库函数,用于编写CGI程序

CGIC 主要完成以下功能

* 对数据进行语法分析

* 接收以 GET 和 PSOT 两种方式发送的数据

* 把 FORM 中的不同域连接成连续的串

* 为检索 FORM 数据而提供字符串 , 整数 , 浮点以及单项和多项选择功能

* 为数字字段提供边界检测

* 把 CGI 环境变量加载到非空的 C 串中

* 为调试而捕捉 CGI 状态

如何写CGIC应用程序

任何cgic 应用程序必须连接到cgic.c,如果在Linux 下可以用Makefile 做这个工作。

因为CGI 程序需要做一些初始化操作,如获取环境变量,分析数据等,所以cgic 库提供了自己的main()函数,那自己写的cgic程序不能再包含main()函数,而必须以cgiMain()函数开始,cgic.c会调用这个函数。当然这个函数名是可以更改的.还要注意的是,自己编写的cgic 程序必须包含#include<cigi.h>

也就是说cgic,已经做了一些相关的解析工作,在自己的main函数中只要调用cigic 中相应的函数便可。

以下是cigic 库里自带的cgic test程序的cgiMain()

int cgiMain() {
#ifdef DEBUG
LoadEnvironment();
#endif /* DEBUG */
/* Load a previously saved CGI scenario if that button
has been pressed. */
if (cgiFormSubmitClicked("loadenvironment") == cgiFormSuccess) {
LoadEnvironment();
}
/* Set any new cookie requested. Must be done *before*
outputting the content type. */
CookieSet();
/* Send the content type, letting the browser know this is HTML */
cgiHeaderContentType("text/html");
/* Top of the page */
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>cgic test</TITLE></HEAD>\n");
fprintf(cgiOut, "<BODY><H1>cgic test</H1>\n");
/* If a submit button has already been clicked, act on the
submission of the form. */
if ((cgiFormSubmitClicked("testcgic") == cgiFormSuccess) ||
cgiFormSubmitClicked("saveenvironment") == cgiFormSuccess)
{
HandleSubmit();
fprintf(cgiOut, "<hr>\n");
}
/* Now show the form */
ShowForm();
/* Finish up the page */
fprintf(cgiOut, "</BODY></HTML>\n");
return 0;
}
#ifdef DEBUG
LoadEnvironment();
#endif /* DEBUG */

一般采用以上方式,调用环境变量用作调试。 可以插入语句:"#define DEBUG 1 将DEBUG模式打开。

cgiHeaderContentType("text/html") 这个函数主要是输出Content Type Header,告诉浏览器返回的是一个html页面,当然也可以是"image/gif", "image/jpeg" and "audio/wav

外一点就是,cgi程序输出HTML页面的方式都是使用printf把页面一行一行地打印出来,比如cgictest.c中的这一段代码:
fprintf(cgiOut, "<textarea NAME=\"address\" ROWS=4 COLS=40>\n");
fprintf(cgiOut, "Default contents go here. \n");
fprintf(cgiOut, "</textarea>\n");
上面这段代码的运行结果就是在页面上输出一个textarea。 第一个参数cgiOut实际上就是stdin,所以我们可以直接使用printf,而不必使用fprintf。不过在调试的时候会用到fprintf来重定向输出

CGI 调试起来比较麻烦,CGIC提供了一个函数可以将环境变量输入到文件,方便调试。

cgiWriteEnvironment("/etc/conf.d/c0/capcgi.dat");

cgic 写CGI程序相关推荐

  1. 用C/C++写CGI程序

            使用CGIC库的简要: 库的函数说明: http://www.boutell.com/cgic/#cgiFormStringNoNewlines 1. 打印CGI标准输出头部: cgi ...

  2. CGI简介用C来写CGI程序简要指南

    1. 什么是CGI? CGI 是通用网关接口(Common Gateway Interface)的缩写. 它主要用于服务器端动态输出客户端的请求(如,HTML页面/二进制文件). 也就是说客户端请求参 ...

  3. CGI简介——用C来写CGI程序简要指南

    http://www.cnblogs.com/ribavnu/archive/2012/11/18/2775552.html 1. 什么是CGI ? CGI 是通用网关接口(Common Gatewa ...

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

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

  5. 用 c 写 CGI 程序简要指南

    文章摘要:  CGI规定了Web服务器调用其他可执行程序(CGI程 序)的接口协议标准.Web服务器通过调用CGI程序实现和Web浏览器的交互.CGI程序可以用任何程序设计语言编写,如Shell脚本语 ...

  6. C、Shell、Perl基于Tomcat开发CGI程序环境配置

    基于Tomcat7.0版本号配置CGI开发环境,步聚例如以下: 以我的Tomcat7安装文件夹为例:TOMCA_HOME = /Users/yangxin/Documents/devToos/java ...

  7. C++ Web 编程 CGI公共网关接口(CGI):第一个 CGI 程序

    Table of Contents C++ Web 编程 什么是 CGI? Web 浏览 CGI 架构图 Web 服务器配置 第一个 CGI 程序 Hello World! 这是我的第一个 CGI 程 ...

  8. html网页和cgi程序编程,十分钟搞懂什么是CGI

    原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解.不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧. CGI真 ...

  9. 在apache中运行 cgi程序

    cgi 就是网站中各种后台的程序,该程序可以通过网页运行,cgi可以通过C编写,也可以通过shell,python编写 如何在apache中运行各种cgi程序,例如shell perl等程序 1.在a ...

最新文章

  1. 面向初学者的10个热门计算机视觉项目
  2. python电脑配置要求-1.安装python3.5及电脑环境变量的配置
  3. effective C++ 条款 21:必须返回对象时别妄想返回其reference
  4. css3实现超出文本指定行数(指定文本长度)用省略号代替
  5. 区位码\机器码\内码关系
  6. 安徽计算机学业水平测试内容,【2017年整理】安徽省学业水平测试信息技术(必修)知识点.doc...
  7. 获取页面所有属性并生成html6,JavaScript基础练习题(三)
  8. Rational Rose学习笔记02:创建用例图
  9. IO流 (二) ----- 文件流
  10. 关于RAID与SCSI的一些基本概念(一)
  11. yoloV3的惊艳结果--比较yoloV2
  12. Chrome书签同步方法
  13. AR/VR---沉浸式体验
  14. 学了一年php感觉什么都不会,php自学要多久_一个学了1年php后选择放弃
  15. 留言赠书|GitHub收获1W星标《迁移学习导论》重新整理升级
  16. 证明集合包含关系的5种方法
  17. 小游戏-在评论留下你的运行结果吧
  18. linux组raid的工具,Linux下MegaRAID命令行使用工具
  19. iPhone各型号物理分辨率和逻辑分辨率
  20. 大数据时代,Java还行吗?

热门文章

  1. 微信小程序文件目录介绍
  2. 【Angular 基础入门】——知识点整合
  3. ETH区块确认数如何获取
  4. 记一篇迟到的2019年年终总结
  5. 索尔维会议记录软件测试,TBBT第4季2集:索尔维会议(附视频)
  6. 阿翔编程学-XFire
  7. 两万字长文总结,梳理 Java 入门进阶哪些事(推荐收藏)
  8. 大龄焦虑?如何看待程序员35岁职业危机?
  9. 我们的世界又何尝不是一粒沙呢!
  10. 从0到1爬虫学习笔记:04Scrapy框架