VFPCGI Day10
出自VFP Wiki
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 方法。
參考資料: