參考手冊

DTW_SETCOOKIE


AIX HP-UX Linux OS/2 OS/390 OS/400 PTX SUN Win NT
X X X X X X X X X

目的

產生可在從屬站系統上設定 cookie 的 JavaScript 程式碼。

格式

@DTW_SETCOOKIE(IN cookie_name, IN cookie_value, IN adv_opts)

@DTW_SETCOOKIE(IN cookie_name, IN cookie_value)

參數

表 49. DTW_SETCOOKIE 參數
資料類型 參數 使用 說明
字串 cookie_name IN 指定 cookie 名稱的 變數或文字字串。
字串 cookie_value IN 指定 cookie 值的 變數或文字字串。

避免在 cookie_value 中使用分號 (;)、逗點 (,) 及空格。若需要這些特殊字元時, 請先使用 Net.Data 函數 DTW_rURLESCSEQ 來處理包含這些特殊字元的字串, 再將字串遞送到 DTW_SETCOOKIE。 例如,

@DTW_SETCOOKIE("my_cookie_name",
@DTW_rURLESCSEQ("my cookie value"))
字串 adv_opts IN 包含可選用屬性的字串, 由分號所隔開,可用來定義 cookie.*。
*可選用的屬性可以是︰

到期 = 日期
指定一個定義 cookie 有效生命週期的日期字串。 在到期日以後,便不再儲存或取回 cookie。 語法:

weekday, DD-month-YYYY HH:MM:SS GMT

其中:

weekday
指定工作日的完整名稱。

DD
指定某月中的日期。

month
指定月份的三字元縮寫。

YYYY
指定年份的四字元號碼。

HH:MM:SS
以小時、分鐘與秒鐘來指定時間戳記。

領域 = 領域名稱
指定 cookie 的領域屬性,使用在領域屬性 匹配。

路徑 = 路徑
指定 cookie 是有效的領域中 URL 的子集。

安全
指定 cookie 只能透過安全的通道傳輸到 HTTPS 伺服器。

未指定 secure 選項時,cookie 可以透過非安全的通道傳送。安全選項不需要瀏覽器對 cookie加密,也不需要 它確保包含 DTW_SETCOOKIE 陳述式的 HTML 頁面要透過 SSL 傳輸。

關於所有進階選項的其餘資訊,請參閱網站 http://home.netscape.com 上的 Netscape cookie 規格。

回覆碼

表 50. DTW_SETCOOKIE 回覆碼
回覆碼 說明
-1001 伺服器無法處理 Net.Data 的配置記憶體要求。
1001 輸入參數包含 NULL 值。
1002 輸入參數包含的字串有空字元結尾。
1003 函數呼叫上傳遞的參數數目不正確。
1005 函數呼叫上傳遞的參數必須是字串變數,但卻是不同的變數類型。

用法注意事項

  1. 如果從屬站 Web 瀏覽器不支援 Java Script,瀏覽器便不設定 cookie。
  2. 因為 DTW_SETCOOKIE 會產生 Java Script 程式碼, 請勿在 <script> 或 <noscript> HTML 元素中呼叫 DTW_SETCOOKIE。
  3. 要取回 cookie,請使用 DTW_GETCOOKIE() 函數。 請參閱DTW_GETCOOKIE以學習如何定義 cookie。
  4. 在兩個不同的 HTTP 要求中定義並取回 cookie。 因為 cookie 只能在被傳送到從屬站以後才可看見, 如果巨集嘗試去獲得定義於相同 HTTP 要求的 cookie, 您可能會接收到不預期的結果。

範例

範例 1:以「安全」進階選項來定義包含使用者 ID 和密碼 資訊

@DTW_SETCOOKIE("mycookie_name_for_userID", "User1")
@DTW_SETCOOKIE("mycookie_name_for_password", "sd3dT", "secure")

範例 2:定義包含到期日進階選項 的 cookie

@DTW_SETCOOKIE("mycookie_name_for_userID", "User1",
   "expires=Wednesday 01-Dec-2010 00:00:00")
@DTW_SETCOOKIE("mycookie_name_for_password", "sd3dT", "expires=Wednesday, 01-Dec-2010 00:00:00; secure")

函數呼叫應在同一行;本範例中分成許多行是受限於版面。

範例 3:在收集使用者資訊之前, 決定使用者 cookie 是否存在

%HTML(welcome) {
  <html>
  <body>
  <h1>Net.Data 俱樂部</h1>
  @DTW_GETCOOKIE("NDC_name", name)
  %IF ($(RETURN_CODE) == "8000") %{ 找不到 cookie。%}
  <form method="post" action="remember">
  <p>歡迎蒞臨本會。請輸入您的姓名。<br />
  <input name="name">
  <input type="submit" value="submit"><br />
</form>
%ELSE
  <p>$(name) 您好,歡迎再度光臨。
%ENDIF
  </body>
  </html>
  %}

HTML(welcome) 區段會檢查 cookie NDC_name 是否存在。如果 cookie 存在, 瀏覽器會顯示一個個人化的歡迎。 如果 cookie 不存在,瀏覽器會要求使用者輸入名稱, 並將它置於 HTML(remember) 區段。 這個區段將使用者名稱記錄到 cookie NDC_name,如下面所顯示:

%HTML(remember) {
  <html>
  <body>
  <h1>Net.Data 俱樂部</h1>
  @DTW_SETCOOKIE("NDC_name", name, "expires=Wednesday, 01-Dec-2010 00:00:00;path=/")
  <p>感謝您。</p>
  <p><a href="welcome">回上一步</a></p>
  </body>
  </html>
  %}


[ 頁面頂端 | 前一頁 | 下一頁 | 目錄 | 索引 ]