服务器与CGI程序交换信息的协作方式是通过环境变量实现的。无论什么请求,CGI程序总能在特定位置找到某些信息。无论环境变量怎样定义,总有一些变量有着特定含义。环境变量是一个保存用户信息的内存区。例如,所有的机器都有一个PATH环境变量,当在当前目录找布道文件时就要查找PATH变量。当服务器收到一个请求后,它首先要收集它能得到的所有相关信息,并把它放入内存。那么,服务器要收集什么信息呢?
关于服务器自身的详细信息
关于用户的信息信息
关于用户请求的信息
服务器不知道CGI程序到底需要那些信息,所以它把这些信息一起收集,那么如果有什么重要的东西就不会遗漏了。为了向你展示服务器收集那些环境变量,在上一期的教程里我已经为各位写了一个程序,该程序将几乎所有的信息都反映在了浏览器里。所以在进一步学习变量的时候,请首先把程序调试好。
环境变量
1.与服务器相关的环境变量
GATEWAY_INTERFACE
服务器遵守的CGI版本
SERVER_NAME
服务器的IP或名字
SERVER_PORT
主机的端口号
SERVER_SOFTWARE
服务器软件的名字
2.与客户机相关的环境变量
服务器了解你的CGI程序,但它一定不知道你的客户机环境。正因为如此,同客户机有
关的变量才是最重要的。因为它涉及到你的浏览器等等。
ACCEPT
例出能被次请求接受的应答方式
ACCEPT_ENCODING
列出客户机支持的编码方式
ACCEPT_LANGUAGE
表明客户机可接受语言的ISO代码
AUTORIZATION
表明被证实了的用户
FORM
列出客户机的EMAIL地址
IF_MODIFIED_SINGCE
当用get方式请求并且只有当文档比指定日期更早时才返回数据
PRAGMA
设定将来要用到的服务器代理
REFFERER
指出连接到当前文档的文档的URL
USER_AGENT
标明客户使用的软件
3.与请求相关的环境变量
每次服务器受到的请求都不可能是一样的。这意味着有许多CGI程序必须注意的信息。这些与请求相关的信息包含有用户调用的信息,用户如何发送请求,以及作为请求的一部分传送了多少(什么)信息。这些对你的程序来说是非常重要的,因此我们将化些时间详细地讨论一下其中的一些变量。特别是下面写出的三个变量。这三个变量相当重要。
REQUEST_METHOD
QUERY_STRING
CONTENT_LENGTH
你必须熟悉这三个变量,因为它们用来表示数据是如何送到CGI程序的;然后你所要要做的事情就是在这三个变量里取出数据,进行下一步的编程。其他的一些变量的用处很多,
你可以了解你的竞争对手正在调用你的程序,你可以辨别用户是否注册,或者你可以设置连接到你的CGI程序以便要求附加路径信息包含在请求之中——因此你不必猜测你的用户正在你的服务器的哪个页面上。
AUTH_TYPE
服务器用的确认模式
CONTENT_FILE
含有CGI程序的数据文件
CONTENT_LENGTH
POST请求中向标准输入(STDIN)发送的字节数
CONTENT_TYPE
被发送数据的类型
PATH_INFO
CGI程序的附加路径
PATH_TRANSLATED
PATH_INFO对应的绝对路径
QUERY_STRING
传送给CGI程序的URL的问号(?)之后的那一部分
REMOTE_ADDR
最终用户的IP或主机名
REMOTE_USER
如果用户合法,则是用户的组名
REQUEST_LINE
发送给服务器的完整URL请求
REQUEST_METHOD
作为HTTP的一部分请求而传送数据的方法,比如get。
SCRPT_NAME
运行的脚本名字