Úvod
Při navrhování webových aplikací chtějí mít někdy weboví vývojáři přístup k informacím o proměnných, které nejsou předávány prostřednictvím adresy URL, ale jsou k dispozici v aplikaci. Například webová aplikace kalendáře by se mohla návštěvníků dotázat na jejich preferované časové pásmo. Potom by mohla na všech stránkách aplikace zobrazovat datum a čas daného časového pásma. A právě tuto funkci mohou zajistit proměnné relace.
Ačkoli jsou proměnné relace mocným nástrojem v arzenálu webového vývojáře, aplikace Dreamweaver negeneruje automaticky veškerý kód, který je pro jejich funkčnost nezbytný. Tento dokument popisuje proměnné relace a poskytuje postup pro jejich použití v různých modelech serverů podporovaných aplikací Dreamweaver.
Předpoklady
K použití a pochopení tohoto dokumentu je nutné, aby vývojář pracoval s modelem serveru, například ASP nebo ColdFusion. Vývojář potřebuje mít praktické znalosti následujících konceptů. Kromě toho musí používat verzi aplikace Dreamweaver, která podporuje vývoj dynamických webů (Dreamweaver MX nebo Dreamweaver MX 2004). Další informace najdete v odpovídajících částech příručky Použití aplikace Dreamweaver nebo v systému nápovědy.
- Příprava na vytváření dynamických webů
- Tvorba dynamických stránek
Jak fungují proměnné relace
Proměnné relace umožňují vývojářům ukládat informace o návštěvníkovi prostřednictvím nastavení proměnné, která je aplikaci přístupná po dobu trvání relace daného návštěvníka.
Proměnné relace mají tyto vlastnosti:
- Není-li určeno jinak, platnost proměnných relace vyprší 20 minut poté, co návštěvník opustí web.
- Platnost proměnných relace vyprší, pokud po dobu 20 minut není na webu zaznamenána žádná aktivita tohoto konkrétního návštěvníka. Jejich platnost také vyprší, pokud návštěvník zavře webový prohlížeč.
- Aby proměnné relace fungovaly, musí být prohlížeč návštěvníka nastaven, aby přijímal soubory cookie.
- Je nutné, aby všechny stránky pro tento web byly umístěny v jednom adresáři na webovém serveru.
- Informace uložené v proměnných relace jsou specifické pro návštěvníka webu. Návštěvníci webu nemají přístup k informacím o proměnných relace ostatních návštěvníků.
Vývojáři obvykle zachytí data pro proměnné relace tak, že nechají návštěvníka vyplnit formulář ve webové aplikaci. Proměnná relace je nastavena na hodnotu pole formuláře. Příklady uvedené v tomto dokumentu TechNote nastavují hodnotu proměnné relace podle informací z prvku formuláře.
U všech modelů serveru kromě ASP.NET má aplikace Dreamweaver funkci řízenou nabídkou, která po vytvoření proměnné relace zapíše proměnné relace na stránku. Nicméně aplikace Dreamweaver neposkytuje funkci řízenou nabídkou, která proměnné relace přiřadí hodnotu (rovněž známou jako vytvoření instance proměnné relace). Hodnotu je nutné přiřadit proměnné relace ručně ve zdrojovém kódu.
Vytvoření proměnné relace v aplikacích ASP, ColdFusion, JSP nebo PHP
Poznámka: Příklad pro ASP.NET se podstatně liší od ostatních modelů serverů, protože ASP.NET obvykle používá webové formuláře namísto tradičních formulářů HTML. Používáte-li model serveru ASP.NET, podívejte se na příklad modelu serveru ASP.NET na konci tohoto dokumentu.
-
Definujte web ASP, ColdFusion, JSP nebo PHP.
-
V rámci webu vytvořte tři dynamické stránky. První stránka bude obsahovat formulář HTML (popsaný v následujícím kroku), který se odešle na druhou stránku. Na druhé stránce vytvořte hypertextový odkaz směřující na třetí stránku.
Poznámka: Tento příklad používá tři stránky proto, aby dokázal, že proměnná relace je k dispozici pro druhou, třetí a následující stránku. Proměnné žádosti, které jsou alternativou k proměnným relace, mohou být přeneseny z jedné stránky na druhou. Pro třetí a následující stránku už však k dispozici nejsou.
-
Na první stránce vytvořte formulář obsahující jeden prvek formuláře s textovým polem a tlačítko pro odeslání. Ujistěte se, že atributy ovládacích prvků formuláře jsou nastaveny takto:
- Vyberte textové pole a pomocí inspektoru vlastností je pojmenujte „txtFirstName“.
- Vyberte tag formuláře (kliknutím na červenou přerušovanou čáru obklopující ovládací prvky formuláře nebo na tag formuláře v selektoru tagů). V inspektoru vlastností nastavte druhou stránku jako akci formuláře. Jako metodu formuláře nastavte odeslání. U proměnných relace se také často používá metoda „získání“, ale tento příklad pro zjednodušení používá metodu odeslání.
-
Na druhé stránce spusťte zobrazení kódu (Zobrazení > Kód). Nad úvodním tagem <html> zadejte kód pro váš model serveru ze seznamu níže:
Tento kód vytáhne obsah z prvku formuláře s názvem „txtFirstName“, který byl vytvořen na první stránce. Potom vytvoří proměnnou relace s názvem „sessFirstName“, která je nastavena shodně s obsahem prvku formuláře. Jinými slovy tento kód vytvoří proměnnou relace obsahující informace, které uživatel zadá na stránce formuláře.- ASP (VBScript) (ujistěte se, že kód je obsažen na jednom řádku bez zalomení řádků)
<%session("sessFirstName")=Request.Form("txtFirstName")%> - ASP (JavaScript) (ujistěte se, že kód je obsažen na jednom řádku bez zalomení řádků)
<%Session("sessFirstName")=String(Request.Form("txtFirstName"))%> - ColdFusion
<cfset Session.sessFirstName = #Form.txtFirstName#>
Chcete-li použít proměnné relace, aplikace ColdFusion rovněž požaduje, aby byl v kořenovém adresáři webu vytvořen soubor Application.cfm, pokud váš web ještě žádný nemá. Soubor Application.cfm musí obsahovat následující kód:
<CFAPPLICATION NAME="Name" SESSIONMANAGEMENT="Yes">
Poznámka: V systémech UNIX názvy souborů rozlišují malá a velká písmena. Ujistěte se, že název souboru Application.cfm je napsán s velkým A. Další nastavení souboru Application.cfm najdete v dokumentaci k aplikaci ColdFusion. - JSP (ujistěte se, že kód je obsažen na jednom řádku bez zalomení řádků)
<%session.setAttribute("sessFirstName", request.getParameter("txtFirstName"));%>
Následující kód funguje také, ale v nejnovějších specifikacích jazyka Java byl označen jako zastaralý:
<%session.putValue("sessFirstName", request.getParameter("txtFirstName"));%> - PHP
<?php session_start(); session_register("sessFirstName"); $sessFirstName = $HTTP_POST_VARS['txtFirstName']; ?>
Pokud v prohlížeči ve Windows dojde k chybě aplikace PHP, je možné, že instalace aplikace PHP nemá platný adresář pro ukládání dat relace. Tento parametr se nazývá session.save_path v souboru PHP.ini, jakož i v souboru httpd.conf. Umístění adresáře je volitelné, ale následující nastavení bude fungovat:
session.save_path = c:\php\sessiondata
V závislosti na konfiguraci aplikace PHP je někdy nutné ručně povolit správu relací na všech stránkách souvisejících s relací. Do horní části každé stránky umístěte následující řádek kódu:
<?php session_start();?>
Namísto volání funkce session_start() na každé stránce může aplikace PHP spouštět relace automaticky, pokud v souboru php.ini zapnete možnost session.auto_start.
- ASP (VBScript) (ujistěte se, že kód je obsažen na jednom řádku bez zalomení řádků)
-
Stále na této stránce zvolte možnosti Okno > Svázání a otevřete panel Svázání. V nabídce plus (+) vyberte možnost Proměnná relace. V dialogovém okně Proměnná relace zadejte do pole názvu „sessFirstName” (bez uvozovek) a klikněte na tlačítko OK.
-
Rozbalte ikonu proměnné relace, která se zobrazí v panelu Svázání. Do okna dokumentu přetáhněte ikonu „sessFirstName“. Na tuto stránku bude zapsán obsah proměnné relace.
-
Otevřete třetí stránku a zopakujte kroky 4 a 5. Znovu se ujistěte, že druhá stránka obsahuje odkaz na třetí stránku.
-
Všechny tři stránky uložte, publikujte a otestujte. Pokud se nedostaví očekávané výsledky, zkontrolujte použití velkých písmen a pravopis prvku formuláře, proměnné relace a proměnné požadavku. Ikona relace je nyní zobrazena v panelu Svázání pro každou stránku tohoto webu.
Vytvoření proměnné relace v modelu serveru ASP.NET
-
Definujte web ASP.NET.
-
V rámci webu vytvořte dvě stránky. První stránka obsahuje webový formulář ASP.NET, který odešle zpět sám sobě a pak přesměruje na druhou stránku.
Poznámka: Tento příklad používá dvě stránky proto, aby dokázal, že proměnná relace je k dispozici pro druhou, třetí, čtvrtou a následující stránky. Proměnné žádosti, které jsou alternativou k proměnným relace, nemohou být z webového formuláře ASP.NET na jedné stránce přeneseny na druhou stránku.
-
První stránka musí obsahovat webový formulář ASP.NET, který obsahuje jeden ovládací prvek serveru <asp:textbox> a ovládací prvek serveru <asp:button>. Atribut „id“ ovládacího prvku textového pole nastavte na „txtFirstName“. V následující části je k dispozici úplný kód pro první stránku. Zvolte buď C# nebo VB podle toho, který jazyk jste pro web ASP.NET zvolili:
Tento kód vytáhne obsah z ovládacího prvku serveru <asp:textbox> s názvem „txtFirstName“. Vytvoří proměnnou relace s názvem „sessFirstName“, která je nastavena shodně s obsahem ovládacího prvku serveru. Jinými slovy tento kód vytvoří proměnnou relace obsahující informace, které uživatel zadá na stránce formuláře.
- ASP.NET (VB) – Stránka 1 <%@ Page Language="vb"%><script runat="server"> Sub Button1_Click(ByVal s As Object, ByVal e As EventArgs) Session("sessFirstName") = Request("txtFirstName") Response.Redirect("session2.aspx") End Sub</script><html><head><title>Relace – stránka 1</title></head><body> Příklad proměnné relace VB modelu serveru ASP.NET a webového formuláře – stránka 1 <form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
- ASP.NET (C#) – Stránka 1 <%@ Page Language="C#" %><script runat="server"> void Button1_Click(object sender, EventArgs e) { Session["sessFirstName"] = Request["txtFirstName"]; Response.Redirect("session2.aspx"); }</script><html><head><title>Relace – stránka 1</title></head><body> Příklad proměnné relace C# modelu serveru ASP.NET a webového formuláře – stránka 1<form id="Form1" method="post" runat="server"><p>first name:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
-
Na druhé stránce přejděte do zobrazení kódu zvolením možností Zobrazení > Kód a zapište na stránku obsah proměnné relace zadáním níže uvedeného kódu. Opět zvolte buď C# nebo VB podle toho, který jazyk jste web ASP.NET zvolili:
- ASP.NET (VB) – Stránka 2 <%@ Page Language="vb" %><html><head><title>Relace – stránka 2</title></head><body><p>Příklad proměnné relace VB modelu serveru ASP.NET a webového formuláře – stránka 2</p><p>first name: <%= session("sessFirstName") %></p></body></html>
- ASP.NET (C#) – Stránka 2 <%@ Page Language="C#" %><html><head><title>Relace – stránka 2</title></head><body><p>Příklad proměnné relace C# modelu serveru ASP.NET a webového formuláře – stránka 2</p><p>first name: <%=Session["sessFirstName"]%></p></body></html>
-
Obě stránky uložte, publikujte a otestujte. Pokud se nedostaví očekávané výsledky, zkontrolujte použití velkých písmen a pravopis ovládacích prvků serveru, proměnné relace a proměnné požadavku.
Další informace
Další informace týkající se proměnných relace najdete v následujících článcích: