首页 > 其他 > 详细

《cgic编程 — (一)》

时间:2020-07-08 11:26:44      阅读:100      评论:0      收藏:0      [点我收藏+]

1.cgi通信方式

  当有数据从客户端浏览器传到Web服务器后,web服务器会根据传送的类型(基本有二类:GET/POST),将接收到的数据传入 QUERY_STRING或变量中, CGI程序可以通过标准输入,在程序中接收web服务器接收的数据。当要向浏览器发送信息时,只要向Web服务器发送特定的文件头信息,即可通过标准输出将信息发往Web服务器, Web服务器处理完由CGI程序发来的信息后就会将信息发送给浏览器。

 

2.接收数据

  用GET方式接收到的数据保存在Web服务器的QUERY_STRING 变量里,而通过POST方式接收到的数据是保存在Web服务器变量里。两种数据接收方式的区别是:以GET方式接收的数据是有长度限制,而用POST方式接收的数据是没有长度限制的;以GET方式发送数据,可以通过URL的形式来发送,但POST方式发送的数据必须要通过Form才发送。

 

3.CGI变量

char *cgiServerSoftware 
    服务器软件名称,或者一个空的字符串

char *cgiServerName 
    返回服务器名称或空 
char *cgiGatewayInterface 
    网关接口(通常是 CGI/1.1)或空 
char *cgiServerProtocol 
    网络协议(usually HTTP/1.0)或空 
char *cgiServerPort 
    服务器端口(usually 80),或空 
char *cgiRequestMethod 
    请求方式(usually GET or POST)或空 
char *cgiPathInfo 
    指出附加虚拟路径 
char *cgiPathTranslated 
    指出附加虚拟路径并由服务器转为本地路径 
char *cgiscriptName 
    调用程序的名字 
char *cgiQueryString 
    包含GET-method请求或者<ISINDEX> 标签。不需解析,除非用<ISINDEX>标签,通常由CGIC函数库自动解析。 
char *cgiRemoteHost 
    从浏览器返回客户主机的名字 
char *cgiRemoteAddr 
    从浏览器返回客户的IP地址 
char *cgiAuthType

    返回用户授权信息 
char *cgiRemoteUser 
    鉴别用户cgiAuthType. 
char *cgiRemoteIdent 
    返回用户的名字(用户通过用户坚定协议)

char *cgiContentType 
    返回MIME内型 
char *cgiAccept 
    参考 cgiHeaderContentType() cgiUserAgent 
char *cgiUserAgent 
    获取的用户浏览器信息 
char *cgiReferrer 
    指向用户访问的URL. 
int cgiContentLength 
    表单或查询数据的字节被认为是标准的. 
FILE *cgiOut 
    CGI输出。cgiHeader函数,象cgiHeaderContentType,首先被用于输出mime头;用于 fprintf() 和fwrite()。cgiOut通常相当于stdout。 
FILE *cgiIn 
    CGI输入

  

4.CGIC库主要函数

  用一般 ANSI C或C++编译器就可以编译CGIC程序 , 与C程序不同的是,用CGIC写的源码其主函数是cgiMain(), 而不是通常的main。 CGIC的函数库会自动把cgiMain连接到相应的main上。 

CGIC库主要函数说明:

cgiFormResultType cgiFormString( char *name, char *result, int max)
    用于从输入域中copy字符串。将域名max-1字节中的字符copy到缓冲区result。若域不存在,则copy一个空串到result缓冲区。在此函数中所有的新行由换行符代表。

cgiFormResultType cgiFormStringNoNewlines( char *name, char *result, int max) 
    与cgiFormString函数相似,只是所有的CR和LF都被去掉。

cgiFormResultType cgiFormStringSpaceNeeded( char *name, int *length) 
    返回指向name的字符串的长度,并将长度放入length中。

cgiFormResultType cgiFormStringMultiple( char *name, char ***ptrToStringArray) 
    若同一名字有多个输入域,或域中的字符串可以动态变化,使用本函数。它把名为name的所有输入域的值放在prtToStringArray中。

void cgiStringArrayFree(char **stringArray) 
    释放了分配给stringArray的内存。

cgiFormResultType cgiFormInteger( char *name, int *result, int defaultV) 
    从输入域中取出整数放入result中。

cgiFormResultType cgiFormIntegerBounded( char *name, int *result, int min, int max, int defaultV) 
    若输入域中的整数在界限内则取出并放入result中。

cgiFormResultType cgiFormDouble( char *name, double *result, double defaultV) 
    从输入域中取出浮点数放入result中。

cgiFormResultType cgiFormDoubleBounded( char *name, double *result, double min, double max, double defaultV) 
    若输入域中的浮点数在界限内则取出并放入result中。

cgiFormResultType cgiFormSelectSingle( char *name, char **choicesText, int choicesTotal, int *result, int defaultV) 
    取出复选框(跟在select语句之后的),把选择的名字copy到choicesText,把选择的个数copy到choicesTotal,把当前的选择copy到result。 
    
cgiFormResultType cgiFormSelectMultiple( char *name, char **choicesText, int choicesTotal, int *result, int *invalid) 
    与cgiFormSelectSingle类似,只指向整型数组的result代表了选择的项。

cgiFormResultType cgiFormCheckboxSingle( char *name) 
    若复选框被选中,则函数返回cgiFormSuccess,否则返回cgiFormNotFound。

cgiFormResultType cgiFormCheckboxMultiple( char *name, char **valuesText, int valuesTotal, int *result, int *invalid) 
    与cgiFormCheckboxSingle类似,但它处理同一名字有多个复选框的情况。name指向复选框的名字;valuesText指向包含有每个复选框中参数的一个数组;valuesTotal指向复选框的总数;result是一个整型数组,每个复选框选中的用1代表,没选中的用0代表。

cgiFormResultType cgiFormRadio( char *name, char **valuesText, int valuesTotal, int *result, int defaultV) 
    与cgiFormCheckboxMultiple相似,只是这里是单选按钮而不是复选框。

void cgiHeaderLocation(char *redirectUrl) 
    重定向到redirectUrl指定的URL。

void cgiHeaderStatus(int status, char *statusMessage) 
    输出状态代码status和消息statusMessage。

void cgiHeaderContentType(char *mimeType)
   用于告知浏览器返回的是什么类型的文档。在任何向浏览器输出之前被调用,否则将出错或浏览器不能识别。

cgiEnvironmentResultType cgiWriteEnvironment(char *filename) 
    本函数把当前CGI环境写入filename文件中以便以后调试时使用

cgiEnvironmentResultType cgiReadEnvironment(char *filename) 
    本函数从filename文件中读取CGI环境以便用来调试。

  

 

《cgic编程 — (一)》

原文:https://www.cnblogs.com/zhuangquan/p/13265840.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!