http://wiki.sunyear.com.tw/index.php?title=VFPCGI_Day10&feed=atom&action=history
VFPCGI Day10 - 修訂沿革
2024-03-28T11:51:39Z
本站上此頁的修訂沿革
MediaWiki 1.16.0
http://wiki.sunyear.com.tw/index.php?title=VFPCGI_Day10&diff=3279&oldid=prev
Elleryq在2006年11月22日 (三) 14:14
2006-11-22T14:14:23Z
<p></p>
<p><b>新頁面</b></p><div>[[Category:VFPCGI]]<br />
=====VFPCGI的第十天=====<br />
其實 CGI 介面除了前面提過的那幾個環境變數之外,還有提供如下變數:<br />
*SERVER_SOFTWARE<br />
*SERVER_NAME<br />
*GATEWAY_INTERFACE<br />
*SERVER_PROTOCOL<br />
*SERVER_PORT<br />
*REQUEST_METHOD<br />
*PATH_INFO<br />
*PATH_TRANSLATED<br />
*SCRIPT_NAME<br />
*QUERY_STRING<br />
*REMOTE_HOST<br />
*REMOTE_ADDR<br />
*AUTH_TYPE<br />
*REMOTE_USER<br />
*REMOTE_IDENT<br />
*CONTENT_TYPE<br />
*CONTENT_LENGTH<br />
*HTTP_ACCEPT<br />
*HTTP_USER_AGENT<br />
<br />
讓我們都印出來看看~請把以下程式存為 cgi07.prg,並設為主程式進行編譯。<br />
<pre><br />
*<br />
* cgi07<br />
*<br />
* Reference:<br />
* CGI Environment Variables http://hoohoo.ncsa.uiuc.edu/cgi/env.html<br />
*<br />
<br />
SET PROCEDURE TO cgilib<br />
<br />
LOCAL oResponse<br />
oResponse = CREATEOBJECT( "RESPONSE" )<br />
<br />
LOCAL lcHtml<br />
TEXT TO lcHtml TEXTMERGE NOSHOW <br />
CGI Environment variables:<br />
&lt;ul&gt;<br />
&lt;li&gt;SERVER_SOFTWARE=&lt;&lt;GETENV("SERVER_SOFTWARE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SERVER_NAME=&lt;&lt;GETENV("SERVER_NAME")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;GATEWAY_INTERFACE=&lt;&lt;GETENV("GATEWAY_INTERFACE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SERVER_PROTOCOL=&lt;&lt;GETENV("SERVER_PROTOCOL")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SERVER_PORT=&lt;&lt;GETENV("SERVER_PORT")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REQUEST_METHOD=&lt;&lt;GETENV("REQUEST_METHOD")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;PATH_INFO=&lt;&lt;GETENV("PATH_INFO")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;PATH_TRANSLATED=&lt;&lt;GETENV("PATH_TRANSLATED")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SCRIPT_NAME=&lt;&lt;GETENV("SCRIPT_NAME")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;QUERY_STRING=&lt;&lt;GETENV("QUERY_STRING")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_HOST=&lt;&lt;GETENV("REMOTE_HOST")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_ADDR=&lt;&lt;GETENV("REMOTE_ADDR")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;AUTH_TYPE=&lt;&lt;GETENV("AUTH_TYPE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_USER=&lt;&lt;GETENV("REMOTE_USER")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_IDENT=&lt;&lt;GETENV("REMOTE_IDENT")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;CONTENT_TYPE=&lt;&lt;GETENV("CONTENT_TYPE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;CONTENT_LENGTH=&lt;&lt;GETENV("CONTENT_LENGTH")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;HTTP_ACCEPT=&lt;&lt;GETENV("HTTP_ACCEPT")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;HTTP_USER_AGENT=&lt;&lt;GETENV("HTTP_USER_AGENT")&gt;&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
ENDTEXT <br />
oResponse.Write( lcHtml )<br />
</pre><br />
<br />
你會看到許多有趣的資訊。<br />
在 ASP 裡面,你可以用 Request.ServerVariables() 來取得這些資訊。<br />
所以我們為 Request 添加一個 Method,命名為 ServerVariables<br />
<pre><br />
PROCEDURE ServerVariables<br />
LPARAMETERS strVarName<br />
RETURN GETENV( strVarName )<br />
ENDPROC<br />
</pre><br />
<br />
再一次改寫 cgi07 為 cgi08 如下,並將 cgi08 設為主程式:<br />
<pre><br />
*<br />
* cgi08<br />
*<br />
* Reference:<br />
* CGI Environment Variables http://hoohoo.ncsa.uiuc.edu/cgi/env.html<br />
*<br />
<br />
SET PROCEDURE TO cgilib<br />
<br />
LOCAL oResponse, oRequest<br />
oResponse = CREATEOBJECT( "RESPONSE" )<br />
oRequest = CREATEOBJECT( "REQUEST" )<br />
<br />
LOCAL lcHtml<br />
TEXT TO lcHtml TEXTMERGE NOSHOW <br />
CGI Environment variables:<br />
&lt;ul&gt;<br />
&lt;li&gt;SERVER_SOFTWARE=&lt;&lt;oRequest.ServerVariables("SERVER_SOFTWARE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SERVER_NAME=&lt;&lt;oRequest.ServerVariables("SERVER_NAME")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;GATEWAY_INTERFACE=&lt;&lt;oRequest.ServerVariables("GATEWAY_INTERFACE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SERVER_PROTOCOL=&lt;&lt;oRequest.ServerVariables("SERVER_PROTOCOL")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SERVER_PORT=&lt;&lt;oRequest.ServerVariables("SERVER_PORT")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REQUEST_METHOD=&lt;&lt;oRequest.ServerVariables("REQUEST_METHOD")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;PATH_INFO=&lt;&lt;oRequest.ServerVariables("PATH_INFO")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;PATH_TRANSLATED=&lt;&lt;oRequest.ServerVariables("PATH_TRANSLATED")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;SCRIPT_NAME=&lt;&lt;oRequest.ServerVariables("SCRIPT_NAME")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;QUERY_STRING=&lt;&lt;oRequest.ServerVariables("QUERY_STRING")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_HOST=&lt;&lt;oRequest.ServerVariables("REMOTE_HOST")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_ADDR=&lt;&lt;oRequest.ServerVariables("REMOTE_ADDR")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;AUTH_TYPE=&lt;&lt;oRequest.ServerVariables("AUTH_TYPE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_USER=&lt;&lt;oRequest.ServerVariables("REMOTE_USER")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;REMOTE_IDENT=&lt;&lt;oRequest.ServerVariables("REMOTE_IDENT")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;CONTENT_TYPE=&lt;&lt;oRequest.ServerVariables("CONTENT_TYPE")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;CONTENT_LENGTH=&lt;&lt;oRequest.ServerVariables("CONTENT_LENGTH")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;HTTP_ACCEPT=&lt;&lt;oRequest.ServerVariables("HTTP_ACCEPT")&gt;&gt;&lt;/li&gt;<br />
&lt;li&gt;HTTP_USER_AGENT=&lt;&lt;oRequest.ServerVariables("HTTP_USER_AGENT")&gt;&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
ENDTEXT <br />
oResponse.Write( lcHtml )<br />
</pre><br />
<br />
這次主要是實做 Request.ServerVariables 方法。<br />
<br />
參考資料:<br />
*[http://hoohoo.ncsa.uiuc.edu/cgi/env.html CGI Environment Variables]<br />
*[http://www.w3schools.com/asp/asp_ref_request.asp ASP Request Object]</div>
Elleryq