VFPCGI Day10

出自VFP Wiki

(修訂版本間差異)
跳轉到: 導航, 搜尋

在2006年11月22日 (三) 14:14的最新修訂版本

VFPCGI的第十天

其實 CGI 介面除了前面提過的那幾個環境變數之外,還有提供如下變數:

  • SERVER_SOFTWARE
  • SERVER_NAME
  • GATEWAY_INTERFACE
  • SERVER_PROTOCOL
  • SERVER_PORT
  • REQUEST_METHOD
  • PATH_INFO
  • PATH_TRANSLATED
  • SCRIPT_NAME
  • QUERY_STRING
  • REMOTE_HOST
  • REMOTE_ADDR
  • AUTH_TYPE
  • REMOTE_USER
  • REMOTE_IDENT
  • CONTENT_TYPE
  • CONTENT_LENGTH
  • HTTP_ACCEPT
  • HTTP_USER_AGENT

讓我們都印出來看看~請把以下程式存為 cgi07.prg,並設為主程式進行編譯。

*
* cgi07
*
* Reference:
*   CGI Environment Variables http://hoohoo.ncsa.uiuc.edu/cgi/env.html
*

SET PROCEDURE TO cgilib

LOCAL oResponse
oResponse = CREATEOBJECT( "RESPONSE" )

LOCAL lcHtml
TEXT TO lcHtml TEXTMERGE NOSHOW 
CGI Environment variables:
<ul>
<li>SERVER_SOFTWARE=<<GETENV("SERVER_SOFTWARE")>></li>
<li>SERVER_NAME=<<GETENV("SERVER_NAME")>></li>
<li>GATEWAY_INTERFACE=<<GETENV("GATEWAY_INTERFACE")>></li>
<li>SERVER_PROTOCOL=<<GETENV("SERVER_PROTOCOL")>></li>
<li>SERVER_PORT=<<GETENV("SERVER_PORT")>></li>
<li>REQUEST_METHOD=<<GETENV("REQUEST_METHOD")>></li>
<li>PATH_INFO=<<GETENV("PATH_INFO")>></li>
<li>PATH_TRANSLATED=<<GETENV("PATH_TRANSLATED")>></li>
<li>SCRIPT_NAME=<<GETENV("SCRIPT_NAME")>></li>
<li>QUERY_STRING=<<GETENV("QUERY_STRING")>></li>
<li>REMOTE_HOST=<<GETENV("REMOTE_HOST")>></li>
<li>REMOTE_ADDR=<<GETENV("REMOTE_ADDR")>></li>
<li>AUTH_TYPE=<<GETENV("AUTH_TYPE")>></li>
<li>REMOTE_USER=<<GETENV("REMOTE_USER")>></li>
<li>REMOTE_IDENT=<<GETENV("REMOTE_IDENT")>></li>
<li>CONTENT_TYPE=<<GETENV("CONTENT_TYPE")>></li>
<li>CONTENT_LENGTH=<<GETENV("CONTENT_LENGTH")>></li>
<li>HTTP_ACCEPT=<<GETENV("HTTP_ACCEPT")>></li>
<li>HTTP_USER_AGENT=<<GETENV("HTTP_USER_AGENT")>></li>
</ul>
ENDTEXT 
oResponse.Write( lcHtml )

你會看到許多有趣的資訊。 在 ASP 裡面,你可以用 Request.ServerVariables() 來取得這些資訊。 所以我們為 Request 添加一個 Method,命名為 ServerVariables

	PROCEDURE ServerVariables
		LPARAMETERS strVarName
		RETURN GETENV( strVarName )
	ENDPROC

再一次改寫 cgi07 為 cgi08 如下,並將 cgi08 設為主程式:

*
* cgi08
*
* Reference:
*   CGI Environment Variables http://hoohoo.ncsa.uiuc.edu/cgi/env.html
*

SET PROCEDURE TO cgilib

LOCAL oResponse, oRequest
oResponse = CREATEOBJECT( "RESPONSE" )
oRequest = CREATEOBJECT( "REQUEST" )

LOCAL lcHtml
TEXT TO lcHtml TEXTMERGE NOSHOW 
CGI Environment variables:
<ul>
<li>SERVER_SOFTWARE=<<oRequest.ServerVariables("SERVER_SOFTWARE")>></li>
<li>SERVER_NAME=<<oRequest.ServerVariables("SERVER_NAME")>></li>
<li>GATEWAY_INTERFACE=<<oRequest.ServerVariables("GATEWAY_INTERFACE")>></li>
<li>SERVER_PROTOCOL=<<oRequest.ServerVariables("SERVER_PROTOCOL")>></li>
<li>SERVER_PORT=<<oRequest.ServerVariables("SERVER_PORT")>></li>
<li>REQUEST_METHOD=<<oRequest.ServerVariables("REQUEST_METHOD")>></li>
<li>PATH_INFO=<<oRequest.ServerVariables("PATH_INFO")>></li>
<li>PATH_TRANSLATED=<<oRequest.ServerVariables("PATH_TRANSLATED")>></li>
<li>SCRIPT_NAME=<<oRequest.ServerVariables("SCRIPT_NAME")>></li>
<li>QUERY_STRING=<<oRequest.ServerVariables("QUERY_STRING")>></li>
<li>REMOTE_HOST=<<oRequest.ServerVariables("REMOTE_HOST")>></li>
<li>REMOTE_ADDR=<<oRequest.ServerVariables("REMOTE_ADDR")>></li>
<li>AUTH_TYPE=<<oRequest.ServerVariables("AUTH_TYPE")>></li>
<li>REMOTE_USER=<<oRequest.ServerVariables("REMOTE_USER")>></li>
<li>REMOTE_IDENT=<<oRequest.ServerVariables("REMOTE_IDENT")>></li>
<li>CONTENT_TYPE=<<oRequest.ServerVariables("CONTENT_TYPE")>></li>
<li>CONTENT_LENGTH=<<oRequest.ServerVariables("CONTENT_LENGTH")>></li>
<li>HTTP_ACCEPT=<<oRequest.ServerVariables("HTTP_ACCEPT")>></li>
<li>HTTP_USER_AGENT=<<oRequest.ServerVariables("HTTP_USER_AGENT")>></li>
</ul>
ENDTEXT 
oResponse.Write( lcHtml )

這次主要是實做 Request.ServerVariables 方法。

參考資料: