Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103118134
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-15 21:17:15

HTTP-REFERER:调用该CGI程序的网页的URL

REMOTE-HOST:调用该CGI程序的Web浏览器的机器名和域名。

REQUEST-METHOD:指的是当Web服务器传递数据给CGI程序时所采用的方法,分为GETPOST两种方法。GET方法仅通过环境变量(QUERY-STRING)传递数据给CGI程序,POST方法通过环境变量和标准输入传递数据给CGI程序,因此POST方法可较方便地传递较多的数据给CGI程序。

SCRIPT-NAME:CGI程序的名称。

QUERY-STRING:当使用POST方法时,Form中的数据最后放在QUERY-STRING,传递给CGI程序。

CONTENT-TYPE:传递给CGI程序数据的MIME类型,通常为″applica tion/x-www-form-url encodede″,它是从HTML Form中以POST方法传递数据给CGI程序的数据编码类型,称为URL编码类型。

CONTENT-LENGTH:传递给CGI程序的数据字符数(字节数)

C语言程序中,要访向环境变量,可使用getenv()库函数。例如:

if (getenv (″CONTENT-LENGTH″)) 
n=atoi(getenv (″CONTENT-LENGTH″));

请注意程序中最好调用两次getenv():第一次检查是否存在该环境变量,第二次再使用该环境变量。这是因为函数getenv()在给定的环境变量名不存在时,返回一个NULL()指针,如果你不首先检查而直接引用它,当该环境变量不存在时会引起CGI程序崩溃。

三、From输入的分析和解码

1.
分析名字/值对

当用户提交一个HTML Form,Web浏览器首先对Form中的数据以名字/值对的形式进行编码,并发送给Web服务器,然后由Web服务器传递给CGI程序。其格式如下:

name1=value1&name2=value2&name3=value3&name4=value4&...

其中名字是Form中定义的INPUTSELECTTEXTAREA等标置(Tag)名字,值是用户输入或选择的标置值。这种格式即为URL编码,程序中需要对其进行分析和解码。要分析这种数据流,CGI程序必须首先将数据流分解成一组组的名字/值对。这可以通过在输入流中查找下面的两个字符来完成。

每当找到字符=,标志着一个Form变量名字的结束;每当找到字符& ,标志着一个Form变量值的结束。请注意输入数据的最后一个变量的值不以&结束。一旦名字/值对分解后,还必须将输入中的一些特殊字符转换成相应的ASCII字符。这些特殊字符是:

+:+转换成空格符;

%xx:用其十六进制ASCII码值表示的特殊字符。根据值xx将其转换成相应的ASCII字符。

Form变量名和变量值都要进行这种转换。下面是一个对Form数据进行分析并将结果回送给Web服务器的CGI程序。

阅读(323) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~