註解:

Dreamweaver CC (含) 以後版本的使用者介面已經簡化了。因此,您在 Dreamweaver CC 和更新版本中可能會找不到本文所描述的一些選項。如需詳細資訊,請參閱本文

關於動態內容來源

動態內容來源就是資訊的儲存區,可讓您從中擷取和顯示要用於網頁中的動態內容。 動態內容的來源不僅僅是指儲存於資料庫中的資訊,同時還包含了 HTML 表單所送出的值、內含於伺服器物件中的值,以及其他內容來源。

Dreamweaver 讓您能輕鬆地連線到資料庫,建立可以從中抽取動態內容的資料集。資料集是資料庫查詢的結果。它會抽取您要求的特定資訊,讓您將該資訊顯示在指定的網頁內。您要根據資料庫中所包含的資訊和要顯示的內容來定義資料集。

不同的技術廠商可能使用不同的資料集技術。在 ASP 和 ColdFusion 中,資料集是定義為查詢。如果您使用其他的資料來源,如使用者輸入或伺服器變數,則在 Dreamweaver 中所定義的資料來源名稱會與資料來源本身的名稱相同。

動態網站需要有資料來源,才能從中擷取並顯示動態內容。Dreamweaver 可以讓您使用資料庫、Request 變數、URL 變數、伺服器變數、表單變數、預存程序,以及動態內容的其他來源。隨著您所使用不同的資料來源,您可以擷取滿足某項要求的新內容,或者是修改頁面的內容以滿足使用者的特別需求。

您在 Dreamweaver 中所定義的所有內容來源都會加入至「繫結」面板中的內容來源清單。然後,您就能將內容來源插入目前選取的網頁中。

關於資料集

網頁無法直接存取儲存在資料庫中的資料。但是網頁可以與資料集互動。資料集是資訊 (記錄) 的子集,而這些資訊是使用資料庫查詢從資料庫所抽取。查詢是搜尋陳述式,專為從資料庫尋找及抽取特定資訊而設計。

在使用資料庫做為動態網頁的內容來源時,您必須先建立一個用來儲存擷取資料的資料集。資料集會在儲存內容的資料庫與產生網頁的應用程式伺服器之間扮演一個媒介的角色。資料集將暫時儲存在應用程式伺服器的記憶體中以加速擷取資料。伺服器一旦不再需要資料集,便會予以捨棄。

查詢產生的資料集,可以只包含某些欄、只包含某些記錄或者是兩者都包含的組合。資料集也可以包含資料庫表格的所有記錄和欄。但是,因為應用程式很少需要使用到資料庫中的每項資料,所以您應該想辦法讓資料集愈小愈好。因為網頁伺服器會在記憶體中暫時保留資料集,所以使用較小的資料集會用到較少的記憶體,還可能改善伺服器效能。

資料庫查詢是以「結構化查詢語言」(Structured Query Language,簡稱 SQL,念法為「sequel」) 所撰寫而成的,這是一種簡單的程式語言,可讓您擷取、加入和刪除資料庫中的資料。隨附於 Dreamweaver 的 SQL Builder,可協助您即使不了解 SQL,也可以建立簡單的查詢。不過,如果您想要建立複雜的 SQL 查詢,就必須了解這種語言的基本概念,才能建立更進階的查詢以及更靈活地設計動態網頁。

在您定義要和 Dreamweaver 搭配使用的資料集之前,您必須先建立資料庫的連線,如果資料庫中還沒有資料,請先將資料輸入到資料庫中。如果您尚未定義網站的資料庫連線,請參考資料庫連線章節,以了解程式開發所需的伺服器技術,並依照其中的說明建立資料庫的連線。

關於 URL 和表單參數

URL 參數會儲存使用者所輸入的擷取資訊。若要定義 URL 參數,請建立使用 GET 方法來送出資料的表單或超文字連結。系統會將資訊附加於被要求頁面 URL 之後,然後與伺服器進行通訊。在使用 URL 變數時,查詢字串中會含有一或多個與表單欄位相關聯的名稱/值配對。這些名稱/值的配對會附加於 URL 之後。

表單參數中會儲存內含於網頁 HTTP 要求中的擷取資訊。如果您建立的是使用 POST 方法的表單,則該表單所送出的資料會傳遞到伺服器。在開始之前,請確定將表單參數傳遞到伺服器。

關於 Session 變數

Session 變數可以讓您儲存及顯示使用者造訪網站期間 (即工作階段) 所保有的資訊。伺服器會為每一位使用者建立個別的工作階段物件,並維持一段相當的時間或維持到該物件明確終止為止。

由於 Session 變數的保留時間涵蓋整個使用者工作階段,而且當該使用者在網站內從一個頁面移至另一個頁面時會一直持續保留著,所以十分適合用來儲存使用者的偏好設定。如果要在頁面的 HTML 程式碼中插入某個值、指派某個值給區域變數,或是提供用來評估條件運算式的某個值,也可以使用 Session 變數。

在定義頁面的 Session 變數之前,您必須先在原始程式碼中建立它們。當您在網路應用程式的原始程式碼中建立 Session 變數之後,您就可以使用 Dreamweaver 來擷取它的值,然後在網頁中使用。

Session 變數的運作方式

Session 變數會儲存資訊 (通常是由使用者送出的表單或 URL 參數),並在使用者瀏覽期間,將該資訊提供給所有網路應用程式的網頁。例如,當使用者登入一個可存取電子郵件、股市行情、氣象報告和每日新聞的入口網站時,網路應用程式便會將登入資訊儲存在 Session 變數中,而這個 Session 變數可以在整個網站的網頁中辨識該使用者。當使用者瀏覽整個網站時,這會讓他們只能看到自己所選取的內容類型。Session 變數也可以提供安全機制,當某個帳戶經過一段時間都未使用時,便會結束該使用者的工作階段。如果使用者忘記登出網站,這也可以釋放伺服器記憶體和處理資源。

Session 變數所儲存的資訊可在使用者工作階段的存留期使用。當使用者在應用程式內開啟網頁時,工作階段便會開始,而當使用者有一段時間沒有在應用程式中開啟另一個網頁,或者當使用者明確地結束工作階段 (通常是按一下「登出」連結) 時,工作階段就會結束。當工作階段存在時,它是專屬於個別使用者,每個使用者都有單獨的工作階段。

使用 Session 變數儲存資訊,網路應用程式中每個網頁都能存取這個資訊。此資訊可能非常多樣化,包括使用者名稱、偏好的字體大小,或是指示使用者是否成功登入的指標。Session 變數的另一個常見用途是持續執行計算,例如:到目前為止在線上測驗中回答正確的題數,或者使用者到目前為止在線上目錄中所選取的產品。

只有在使用者的瀏覽器已設定為接受 Cookie 時,Session 變數才能運作。當工作階段第一次啟用時,伺服器會建立唯一識別使用者的工作階段 ID 編號,然後將包含該 ID 編號的 Cookie 傳送至使用者的瀏覽器。當使用者在伺服器上要求另一個網頁時,伺服器便會讀取瀏覽器中的 Cookie,以識別使用者的身份,並擷取儲存在伺服器記憶體中的使用者 Session 變數。

在 Session 變數中收集、儲存和擷取資訊

在建立 Session 變數之前,您必須先取得所要儲存的資訊,然後傳送到伺服器以進行儲存。您可以使用 HTML 表單或包含 URL 參數的超文字連結,來收集和傳送資訊到伺服器。您也可以從下列來源取得資訊:儲存在使用者電腦上的 Cookie、由使用者瀏覽器與網頁要求一起傳送的 HTTP 標題,或資料庫。

在 Session 變數中儲存 URL 參數的一個典型範例如下:一份產品目錄使用了以連結建立的硬式編碼 URL 參數,將產品資訊傳回至伺服器以儲存在 Session 變數中。當使用者按一下「加入購物車」連結時,該產品的編號便會在使用者繼續購物的同時儲存在 Session 變數中。當使用者進入結帳網頁時,就會擷取儲存在該 Session 變數中的產品 ID。

將表單參數儲存在 Session 變數中的一個典型網頁範例便是以表單為基礎的意見調查。表單會將選取的資訊傳回伺服器上,而伺服器上將有一個應用程式頁面負責為這份意見調查計算分數,並將意見調查中的回應儲存於某個 Session 變數中,以傳送至某個可能會將整個調查總體收集到的回應進行結算工作的應用程式。這些資料也可能會儲存在資料庫中,以供日後使用。

將資訊傳送到伺服器之後,只要在 URL 或表單參數所指定的網頁上為伺服器模式新增適當的程式碼,就能將資訊儲存在 Session 變數中。就像「目標」網頁一樣,您可以在起始網頁上使用 HTML 表單的 action 屬性或是超文字連結的 href 屬性,指定這個網頁。

在 Session 變數中儲存值之後,您就可以使用 Dreamweaver 從 Session 變數擷取該值,然後在網路應用程式中使用。在 Dreamweaver 中定義 Session 變數之後,便可以在網頁中插入其值。

每個網頁的 HTML 語法如下所示:

<form action="destination.html" method="get" name="myform"> </form> 
<param name="href"value="destination.html">

您所使用的伺服器技術和取得資訊的方法,決定在 Session 變數中儲存資訊所用的程式碼。每個伺服器技術的基本語法如下所示:

ColdFusion

<CFSET session.variable_name = value>

ASP

<% Session("variable_name") = value %>

value 運算式通常是伺服器運算式,如 Request.Form("lastname")。例如,如果您使用稱為 product 的 URL 參數 (或含有 GET 方法的 HTML 表單和稱為 product 的文字欄位) 來收集資訊,則下列陳述式會將資訊儲存在名為 prodID 的 Session 變數中:

ColdFusion

<CFSET session.prodID = url.product>

ASP

<% Session("prodID") = Request.QueryString("product") %>

如果您使用含 post 方法的 HTML 表單和名為 txtProduct 的文字欄位來收集資訊,則下列陳述式會將資訊儲存在 Session 變數中:

ColdFusion

<CFSET session.prodID = form.txtProduct>

ASP

<% Session("prodID") = Request.Form("txtProduct") %>

儲存在 Session 變數中的資訊範例

您正在設計主要瀏覽者是年長居民的網站。在 Dreamweaver 中,將兩個連結加入歡迎畫面,讓使用者自訂網站文字的大小。使用者若需要較大、容易閱讀的文字,可以按一下其中一個連結;需要標準大小文字的使用者則可以按一下另一個連結:

儲存在 Session 變數中的資訊
儲存在 Session 變數中的資訊

每個連結都有一個稱為 fontsize 的 URL 參數,負責將使用者的文字偏好設定送出給伺服器,如下列 Adobe ColdFusion® 範例所示:

<a href="resort.cfm?fontsize=large">Larger Text</a><br> 
<a href="resort.cfm?fontsize=small">Normal Text</a>

將使用者的文字偏好設定儲存在 Session 變數中,並在使用者要求的每個網頁上使用它來設定字體大小。

在靠近目標網頁頂端的位置,輸入下列程式碼以建立一個稱為 font_pref 的工作階段,用來儲存使用者的字體大小偏好設定。

ColdFusion

<CFSET session.font_pref = url.fontsize>

ASP

<% Session("font_pref") = Request.QueryString("fontsize") %>

當使用者按一下超文字連結時,網頁便會將 URL 參數中的使用者文字偏好設定傳送到目標網頁。目標網頁上的程式碼會將 URL 參數儲存在 font_pref Session 變數中。在使用者的工作階段期間,應用程式的所有網頁都會擷取此值,並顯示所選取的字體大小。

ASP 和 ColdFusion 應用程式變數

在 ASP 和 ColdFusion 中,您可以使用應程式變數來儲存和顯示應用程式存留期所保有的資訊,而且可以保留給不同的使用者使用。應用程式的存留期,會從第一個使用者在應用程式中要求頁面開始算起,直到網頁伺服器停止為止 (應用程式會定義為虛擬目錄及其子目錄中的所有檔案)。

由於應用程式變數會持續保留於整個應用程式的存留期,而且可以保留給不同的使用者使用,所以十分適合用來儲存所有使用者都需要的資訊,像是目前的時間和日期。應用程式變數的值是定義在應用程式的程式碼中。

ASP 伺服器變數

您可以將下列 ASP 伺服器變數定義為動態內容的來源:Request.CookieRequest.QueryStringRequest.FormRequest.ServerVariablesRequest.ClientCertificates

ColdFusion 伺服器變數

您可以定義下列 ColdFusion 伺服器變數:

用戶端變數

建立資料與特定用戶端的關聯性。用戶端變數會保留使用者在應用程式中從一個頁面移至另一個頁面、以及從一個工作階段移至另一個工作階段的應用程式狀態。「保留狀態」表示要將資訊從一個頁面 (或工作階段) 保存到下一個頁面 (或工作階段),讓應用程式能夠「記住」使用者以及使用者先前的選擇和偏好設定。

Cookie 變數

存取由瀏覽器傳遞到伺服器的 Cookie。

CGI 變數

提供執行 ColdFusion 的伺服器、要求頁面之瀏覽器的相關資訊,以及處理環境的其他相關資訊。

伺服器變數

可供伺服器上的所有用戶端和應用程式存取。這些變數會一直存在於伺服器上,直到伺服器停止為止。

區域變數

是在 ColdFusion 頁面內使用 CFSET 標籤或 CFPARAM 標籤所建立的。

此産品由 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License 授權  Creative Commons 條款未涵蓋 Twitter™ 與 Facebook 文章。

法律說明   |   線上隱私權政策