⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0503004.htm

📁 VC知识库5_chm_decompile_20040520_210715
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="../../vckbase.css">
</head>

<body>

<div align="justify">
  <table border="0" width="100%" class="font" height="57">
    <tr>
      <td width="27%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">VC知识库(五)</font>
      </td>
      <td width="73%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">www.vckbase.com</font>
      </td>
    </tr>
    <tr>
      <td width="100%" height="4" class="header" valign="top" align="center" colspan="2">
      <hr>
      </td>
    </tr>
    <tr>
      <td width="100%" height="17" class="header" valign="top" align="center" colspan="2">
      <BIG> 一种更亲切的<FONT class=eng>CGI</FONT>开发系统<FONT 
            class=eng>WinCGI</FONT></BIG>
      </td>
    </tr>
    <tr>
      <td width="100%" height="17" class="info" align="center" colspan="2">
      <SMALL> 闻怡洋 <A  
            href="http://www.vchelp.net/"><FONT  
            class=engul>http://www.vchelp.net/</FONT></A></SMALL> 
      </td>   
    </tr>   
    <tr>  
      <td width="100%" height="22" class="font" colspan="2"> 
        <hr> 
      </td>   
    </tr>  
    <tr>  
      <td width="100%" height="5" class="font" colspan="2">  
      <SMALL> 
                  <P>CGI的开发在某种角度来说过于复杂,主要是体现在获取环境变量和分解/解码数据上面。在Windows系统中可以使用WinCGI系统来进行开发。WinCGI的优点就在于减轻了开发者分解/解码数据的负担,而且提供统一的输入输出方式供使用。</P> 
                  <P>在WinCGI程序执行时第一个参数会是一个文件名称,如:yourCGI.exe  
                  para.txt,在该文件中记录了所有的环境变量信息和参数信息,而且该文件的结构与INI文件结构相同,所以利用Windows提供的标准函数:GetPrivateProfileString就可以取出所有的参数。而且文件中的数据全部已经经过解码,你可以直接使用。  
                  </P> 
                  <P>在参数文件中有以下几个区(Section)  
                  <UL> 
                    <LI>[CGI]  
                    <LI>[Accept]  
                    <LI>[System]  
                    <LI>[Extra Headers]  
                    <LI>[Form Literal]  
                    <LI>[Form External]  
                    <LI>[Form File]  
                    <LI>[Form Huge] </LI></UL>文件格式如同: <PRE>[CGI]
CGI Version=CGI/1.2 (Win)
Query String=XXXXXX
[Section]
key=value
key=value
...
</PRE> 
                  <P>在这个参数文件中对我们特别有用的是以下一些数据: 
                  <P> 
                  <P>[CGI]区中的各个关键字记录了系统的参数和对方浏览器和对方IP地址等等信息。下面列出一些常用的关键字:  
                  <UL> 
                    <LI>Request Method:传送数据的方式,如果传送方式为GET,你也可以通过检查Query  
                    String关键字的值来取得传送来的数据,否则就需要通过读取[Form Literal]区来取得输入。  
                    <LI>Request Protocol:所使用的协议和版本,如HTTP/1.0。  
                    <LI>From:浏览器使用者的邮件地址。  
                    <LI>User Agent:浏览器名称,如Netscape,Internet Explorer。  
                    <LI>Content Type:上传数据的类型,格式如type/subtype  
                    <LI>Content Length:上传数据的长度  
                    <LI>Content File:当数据过长时通过写如该关键字所指明的文件来保存数据。  
                    <LI>Server Name:WEB服务器的网络地址名称。  
                    <LI>Server Software:WEB服务器的软件名称和版本。  
                    <LI>Server Port:WEB服务器监听的端口。  
                    <LI>CGI Version:服务器上CGI系统的版本。  
                    <LI>Remote Address:客户端的IP地址。 </LI></UL> 
                  <P></P> 
                  <P>[CGI]区中的各个关键字记录了系统的参数和对方浏览器和对方IP地址等等信息。如果传送方式为GET,则需要检查Query  
                  String关键字的值。</P> 
                  <P>[ACCEPT]区中的关键字记录了客户方浏览器可以接受的数据类型。所以可以看出[CGI]区和[ACCEPT]区中的信息和普通CGI中的环境变量的值没有区别。</P> 
                  <P>[SYSTEM]区是一个很重要的区,GMT Offset关键字表示客户方的时区,Output  
                  File关键字为输出文件的文件名称,因为在WinCGI中你不需要直接向输出流中写数据,取而代之的是使用临时文件来保存数据,在CGI程序退出后WinCGI系统会将该文件的内容返回给客户并删除该文件(同时也删除调用过程中的所有临时文件)。  
                  </P> 
                  <P>接下来的[Form  
                  Literal]区包含有经过解码的数据。原本格式为:key=value&amp;key=value&amp;...的数据经过解码后被存放于这个区,但是一些例外的情况就要使用[Form  
                  External]和[Form Huge]区。在[Form External]区中数据格式如同:key=pathname  
                  length,当上传的字符串长度大于254时,就会使用这个区,pathname指明了包含被解码后的字符存放的文件,length为字符串长度。当上传的数据长度大于64K时,数据会被存放入一个独立的文件,该文件的文件名称由[System]区中的Content  
                  File关键字指明。[Form Huge]区中数据格式如同:key=offset  
                  length其中offset为该数据在文件中的起始位置,length为数据的长度。 </P> 
                  <P>下面有一个例子:设输入为,a_cgi_sample.exe?name=your_name&amp;email=your@mail.com&amp;memo=length_gt_254<BR>则文件中包含数据的几个区形式如下:<PRE>[Form Literal]
name=your_name
email=your@mail.com
[Form External]
;假设memo字段长度为500
memo=a_temp_file 500
</PRE> 
                  <P></P> 
                  <P>最后给出一个WinCGI程序的伪代码轮廓:<PRE>void main(int argc,char** argv)
{
	if(argc == 1)
		error raise; //无法得到配置文件
	char szCfgFile[]=argv[1];
	Read [Form Literal] section for input data
	char szOutFile[]=Read &quot;Output File&quot; key from [System] section;
	fopen(szOutFile)
	{
		write result to outFile
		close outFile
	}
	return ;//退出
}
</PRE> 
                  <P>总的说来,WinCGI程序与普通CGI的程序的区别不大,只是在输入输出的方法上略有区别。</P> 
      </SMALL>  
      </td>     
    </tr>    
    <tr> 
      <td width="100%" height="12" class="font" colspan="2">  
      </td>     
    </tr> 
    <tr> 
      <td width="100%" height="6" class="font" colspan="2">  
      </td>     
    </tr> 
    <tr> 
      <td width="100%" height="8" class="font" colspan="2">  
      </td>     
    </tr> 
    <tr>    
      <td width="100%" height="17" class="font" colspan="2"></td>     
    </tr>    
  </table>     
</div>     
     
</body>     
     
</html>     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -