(二十) 因特网程序:CGI

来源:互联网 发布:淘宝股票行情 编辑:程序博客网 时间:2024/05/18 03:00
  • 通用网关接口

Common Gateway Interface

  • FORM表单

每个标签都有name属性,这个属性是为服务器准备的

action属性:对表单进行处理需要有一个程序,这个属性就是URL地址

method属性:或者是get,或者是post

enctype属性:如果不想在发送这个表单时包括上一个文件,就可以省略这个属性

  • INPUT标签

定义了客户输入的类型,输入数据的格式和行为由type属性控制,type属性包括8种:

text 浏览器将显示一个单行的输入框,name属性给这个输入框起个名字,当这个表单在服务器上被处理的时候就会用到这个名字

size属性给出这个输入框显示的宽度,maxlength设定了这个输入框最大的输入长度,如果这个值大于size,输入框会随用户的输入而卷动

value属性给出了这个输入框中省略的字符串

<input type=text name=fuck size=15 maxlength=10 value=furong>
password 与text用法一样

hidden 输入框不会出现在浏览器,这类输入框供服务器使用

<input type=hidden name=fuck value=furong>
checkbox 允许用户从一组选项里选择几项.几个name属性相同的选择框将被划分为一组,而浏览器将允许用户从一组同名的选择框里进行选择

checkbox比其他输入框多一个checked属性,作用是提供缺省的选择,缺省选择可以用多个,value属性用来把信息返回服务器

<input type=checkbox name=fuck value=1><input type=checkbox name=fuck value=2><input type=checkbox name=fuck value=3>

radio 与checkbox很相似,但每次只允许选择一项

image  允许用户从一副图选择一个(x, y)坐标,返回给服务器的输入数据域映射图的形式差不多,已经很少有人用了

因为映射图办法的效果更好

submit 显示一个按钮.当这个按钮被选中的时候,表单的内容将被传递到服务器去进行处理

reset 使浏览器窗口里显示一个按钮.当这个按钮被选中的时候,表单元素会被重新置为表单第一次被加载的初始值

不会引起与服务器的互动

  • select标签

允许用户从一系列值里进行选择,它的属性包括name,multiple和size

name 属性和往常一样用来给将返回到服务器的信息起名字

multiple 属性允许一个以上的选项被选中,但用户每次见到只有一个.少用

size 属性定义了能够被选取的项目个数,缺省值是1

  • textarea标签

允许用户输入并向服务器返回多行文字.附加属性rows(行)和cols(列)属性

浏览器会根据rows和cols的值来显示一个文本区,超出这个区域加上一个卷动条

  • 编写CGI程序

基本上用c语言.但用shell/Tcl或者最时髦的perl都没问题

  • method属性

get方法主要用来处理那些"没有副作用"的表单,即那些服务器提出一个简单查询的表单

post方法则用来处理那些可能会在服务器上引起某些变化的复杂表单

  • 环境变量

不管你用哪种方法来传递表单信息,有几个重要信息都是以环境变量的形式传递给CGI程序

变量名说明SERVER_SOFTWARE与接收请求并调用程序的那个服务器软件有关的资料SERVER_NAME服务器的主机名或IP地址GATEWAY_INTERFACE服务器上实现的CGI标准的版本号SERVER_PROTOCOL接收来自客户的请求时使用的协议的版本号SERVER_PORT接收到请求的端口号,一般为80REQUEST_HETHOD提出请求的方法,即get或postPATH_INFO关于cgi程序路径的附加信息PATH_TRANSLATEDcgi程序的物理路径SCRIPT_NAME正在执行的脚本程序的名字REMOTE_HOST提出这一请求的计算机主机名字REMOTE_ADDR提出这一请求计算机主机的IP地址AUTH_TYPE如果服务器支持用户验证身份,就要用到这两个变量HEMOTE_USER REMOTE_IDENT远程用户的用户名.很少用CONTENT_TYPE正被传输的信息的内容类型CONTENT_LENGTH传给程序的数据的字节数.当以post方式读取输入的时候,最好利用这个变量来识别结束字符流的null字符或文件尾标志

当method=get时,不允许设置CONTENT_TYPE和CONTENT_LENGTH变量

  • 第一个cgi程序

写下"Content-type:text/plain",加上一个空行

#!/bin/shecho Content-type:text/plainechoecho SERVER_SOFTWARE=$SERVER_SOFTWAREecho SERVER_NAME=$SERVER_NAMEecho GATEWAY_INTERFACE=$GATEWAY_INTERFACEecho SERVER_PROTOCOL=$SERVER_PROTOCOLecho SERVER_PORT=$SERVER_PORTecho REQUEST_HETHOD=$REQUEST_HETHOD



0 0
原创粉丝点击