<INPUT TYPE=hidden NAME=state VALUE="利用格式傳回隱藏的資料">現在大部份的瀏覽器都可以處理隱藏形式的資料,但是必須要了解的是有一些瀏 覽器卻無法處理這樣的資料(同時也可能會令使用者疑惑)。我們應該注意,“ 隱藏(hidden)“並不表示“祕密(secret)“,使用者依然可以利用“view source “的方式來看到這些資料。
如果瀏覽器不能顯示出可以透過最小化(SIZE=0)的屬性來隱藏格式,那麼就會產 生一個很醜的格子。
http://mysite.com/cgi-bin/mycgi
但是您卻可能以底下的方式來呼叫這個 CGI 程式:
http://mysite.com/cgi-bin/mycgi/Bob/27
那麼這個“mycgi“依然會被執行 -- 而 PATH_INFO 這個環境變數就會包含了
/Bob/27 這些文字。當您由一個 CGI 呼叫下一個 CGI 程式的時候,您可以透
過輸出包含這個狀態資訊的 URLs 來保留您想要的資訊。
需要記住的是 URLs 被限制在 1024 個字元之內,瀏覽器將不會被要求去處理多餘的 字元。如果您需要更多或是有令人討厭的長 URLs ,那麼您可以簡單的保留一個暫存 檔案的名稱,而將那些您想要傳遞的資料存放在暫存檔中即可。
例如,您的 CGI 程式可能輸出底下的資料來設定一個 "cookie"。 (注意,Set-Cookie: 的標頭必須出現在完整的一行)
Content-type: text/html Set-Cookie: cookiename=valueofcookie; expires=Saturday, 28-Feb-96 23:59:59 GMT; path=/cgi-bin/mycgiprogram <h1>Web page follows.<h1>
每次當有 URL 來要求伺服器送出一份包含 /cgi-bin/mycgiprogram 的
時候,那麼被設定的 "cookie" 將總是會被送回到伺服器上。這一個 cookie
將會持續送出直到清除的時間到了。清除的時間應該使用上面提過的格林威治時間標準
來設定,但是需要注意的是瀏覽起可能有當地時間的設定,以致於搞混了。正因為這樣
, cookie 最好設定在 24 小時以後清除。
當您的 CGI 程式再一次被使用者連線的時候,被瀏覽器設定的 cookies 將會呈現出 HTTP_COOKIE 這一個環境變數。每一個 cookie 將會出現一個類似 NAME=VALUE 的小 對子。每一對的設定都由分號(;)接著空白來隔開。
就像格式中所說得,在 cookies 中,一些不常用的字元應該利用 %xx 記號的方式來跳 脫(% 後面跟著兩位 16 進位數字來指出字元的 ASCII 碼)。
看看 Netscape 的 Cookie Specification Page <URL:http://www.netscape.com/newsref/std/cookie_spec.html> 來取得更多詳細並且有用的資料。