欢迎来到天天文库
浏览记录
ID:11272856
大小:44.50 KB
页数:9页
时间:2018-07-11
《linux cgi编程基础》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.为什么使用CGI?如前面所见,任何的HTML均是静态网页,它无法实现一些复杂的功能,而CGI可以为我们实现。如:a.列出服务器上某个目录中的文件,对目录中的文件进行操作;b.通过CGI实现串口通讯;c.实现数据库接口;d.实现从摄像头读取一张图片显示在网页上…等等2.CGI是什么?CGI全称是CommonGateIntergace,在物理上,CGI是一段程序,它运行在Server上,提供同客户端Html页面的接口。3.CGI编程语言你可以用任何一种你熟悉的高级语言,C,C++,Cshell,Perl和VB都可以。4.CGI的安全性实际上
2、CGI是比较安全的,至少比那些没有数字签名的ActiveX控件要安全的多。除非你有意在程序里加入了破坏Server的命令,否则一般不会有什么严重的后果。 简单的说来,CGI是用来沟通HTML表单和服务器端程序的接口(interface)。说它是接口,也就是说CGI并不是一种语言,而是可以被其他语言所应用的一个规范集。理论上讲,你可以用任何的程序语言来编写CGI程序,只要在编程的时候符合CGI规范所定义的一些东西就可以了。由于C语言在平台无关性上表现不错(几乎在任何的系统平台下都有其相应编译器),而且对大多数程序员而言都算得上很熟悉(不像P
3、erl),因此,C是CGI编程的首选语言之一。这儿我们介绍的,就是如何使用C来编写CGI程序。 作为CGI编程的最为简单的例子,就是进行表单的处理。因而在这篇文章中,我们主要介绍的就是如何用C来编写CGI程序来进行表但处理。5.传送方法:所谓方法是指调用CGI程序的途径。事实上,要执行程序时,你用一种方法向服务器提出请求,此请求定义了程序如何接受数据。下面介绍常用的两种方法:GET和POST1.GET当使用这种方法时,CGI程序从环境变量QUERY_STRING获取数据。QUERY_STRING被称为环境变量,就是这种环境变量把客户端的数
4、据传给服务器。为了解释和执行程序,CGI必须要分析(处理)此字符串。POST使用POST方法时,WEB服务器通过stdin(标准输入),向CGI程序传送数据。服务器在数据的最后没有使用EOF字符标记,因此程序为了正确的读取stdin,必须使用CONTENT_LENGTH。当你发送的数据将改变Web服务器端的数据或者你想给CGI程序传送的数据超过了1024字节,这是url的极限长度,你应该使用POST方法。实现方法:GET实现方法5、/your.cgi”method=GET>POST实现方法:6.表单编码方式:form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串appe6、nd到url后面,用?分割,加载这个新的url。当action为post时候,浏览器把form数据封装到httpbody中,然后发送到server。如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件7、name)等信息,并加上分割符(boundary)。 GET表单的处理 对于那些使用了属性“METHOD=GET”的表单(或者没有METHOD属性,这时候GET是其缺省值),CGI定义为:当表单被发送到服务器断后,表单中的数据被保存在服务器上一个叫做QUERY_STRING的环境变量中。这种表单的处理相对简单,只要读取环境变量就可以了。这一点对不同的语言有不同的做法。在C语言中,你可以用库函数getenv(定义在标准库函数stdlib中)来把环境变量的值作为一个字符串来存取。你可以在取得了字符串中的数据后,运用一些小技巧进行类型的转换,8、这都是比较简单的了。在CGI程序中的标准输出(output)(比如在C中的stdout文件流)也是经过重定义了的。它并没有在服务器上产生任何的输出内容,而是被重定向到客户浏览器。
5、/your.cgi”method=GET>POST实现方法:6.表单编码方式:form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2...),然后把这个字串appe
6、nd到url后面,用?分割,加载这个新的url。当action为post时候,浏览器把form数据封装到httpbody中,然后发送到server。如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件
7、name)等信息,并加上分割符(boundary)。 GET表单的处理 对于那些使用了属性“METHOD=GET”的表单(或者没有METHOD属性,这时候GET是其缺省值),CGI定义为:当表单被发送到服务器断后,表单中的数据被保存在服务器上一个叫做QUERY_STRING的环境变量中。这种表单的处理相对简单,只要读取环境变量就可以了。这一点对不同的语言有不同的做法。在C语言中,你可以用库函数getenv(定义在标准库函数stdlib中)来把环境变量的值作为一个字符串来存取。你可以在取得了字符串中的数据后,运用一些小技巧进行类型的转换,
8、这都是比较简单的了。在CGI程序中的标准输出(output)(比如在C中的stdout文件流)也是经过重定义了的。它并没有在服务器上产生任何的输出内容,而是被重定向到客户浏览器。
此文档下载收益归作者所有