Wprowadzenie
Podczas projektowania aplikacji sieci Web projektanci sieci Web czasami chcą uzyskać dostęp do informacji o zmiennych, które nie przechodzą przez adres URL, ale są dostępne w aplikacji. Np. aplikacja sieci kalendarza sieciowego może pytać odwiedzających o preferencje strefy czasowej. Potem może wyświetlać datę i godzinę w tej strefie czasowej na stronach aplikacji. Zmienne sesji oferują tę funkcjonalność.
Chociaż zmienne sesji stanowią wydajne narzędzie na wyposażeniu projektanta sieci Web, program Dreamweaver nie generuje automatycznie całego kodu niezbędnego do ich działania. W tym dokumencie opisano zmienne sesji i przedstawiono kroki umożliwiające korzystanie z nich w różnych modelach serwerów obsługiwanych przez program Dreamweaver.
Wymagania wstępne
Aby używanie i zrozumienie tego dokumentu było możliwe, projektant musi pracować z modelem serwerowym, np. programem ASP lub ColdFusion. Projektant musi posiadać wiedzę praktyczną dotyczącą następujących pojęć. Ponadto musi używać wersji programu Dreamweaver obsługującej projektowanie dynamiczne (Dreamweaver MX lub Dreamweaver MX 2004). Zobacz powiązane rozdziały podręcznika Korzystanie z programu Dreamweaver lub systemu Pomocy i dowiedz się więcej.
- Przygotowanie do tworzenia witryn dynamicznych
- Przekształcanie stron w strony dynamiczne
Funkcjonowanie zmiennych sesji
Zmienne sesji umożliwiają projektantom przechowywanie informacji o odwiedzających przez ustawienie zmiennej, która jest dostępna dla aplikacji w trakcie trwania sesji odwiedzającego.
Zmienne sesji mają następujące cechy:
- O ile nie określono inaczej, zmienne sesji wygasają 20 minut po opuszczeniu witryny przez zwiedzającego.
- Zmienne sesji wygasają, jeśli przez 20 minut nie zostanie wykryta w witrynie żadna aktywność ze strony odwiedzającego tę określoną witrynę. Wygasają również, jeśli odwiedzający zamknie przeglądarkę sieci Web.
- Aby zmienne sesji działały, przeglądarka odwiedzającego musi być tak skonfigurowana, aby były akceptowane pliki cookie.
- Wszystkie strony danej witryny muszą być zlokalizowane w obrębie jednego katalogu na serwerze sieci Web.
- Informacje przechowywane w zmiennych sesji są właściwe dla odwiedzających witrynę. Poszczególne osoby odwiedzające witrynę nie mogą uzyskać dostępu do informacji o zmiennych sesji innych osób.
Zwykle projektanci przechwytują dane do zmiennych sesji, prosząc odwiedzających o wypełnienie formularza w aplikacji sieci Web. Zmienna sesji jest ustawiona na wartość pola formularza. W przykładach w ramach tej uwagi TechNote użyto informacji z elementu formularza do ustawienia wartości zmiennej sesji.
Dla wszystkich modeli serwerów z wyjątkiem programu ASP.NET program Dreamweaver ma funkcję zarządzaną z poziomu menu polegającą na zapisywaniu zmiennych sesji na stronie po utworzeniu zmiennej sesji. Program Dreamweaver nie zapewnia jednak funkcji zarządzanej z poziomu menu polegającej na przypisaniu wartości do zmiennej sesji (zwanej również tworzeniem wystąpienia zmiennej sesji). Konieczne jest przypisanie wartości do zmiennej sesji ręcznie w ramach kodu źródłowego.
Utwórz zmienną sesji w aplikacjach ASP, ColdFusion, JSP lub PHP
Uwaga: Przykład dla programu ASP.NET znacznie różni się od innych modeli serwerów, gdyż program ASP.NET zwykle korzysta z formularzy sieci Web zamiast z tradycyjnych formularzy HTML. Jeśli korzystasz z modelu serwera ASP.NET, zobacz przykład z programem ASP.NET na końcu tego dokumentu.
-
Zdefiniuj witrynę internetową ASP, ColdFusion, JSP lub PHP.
-
Utwórz trzy strony dynamiczne w obrębie witryny. Pierwsza strona zawiera formularz HTML (opisany w kolejnym kroku), który jest przesyłany do drugiej strony. Na drugiej stronie utwórz hiperłącze wskazujące trzecią stronę.
Uwaga: Powodem, dla którego użyto w tym przykładzie trzech stron jest udowodnienie, że zmienna sesji jest dostępna dla drugiej, trzeciej i kolejnej strony. Zmienne żądań, które są alternatywą dla zmiennych sesji, mogą być przenoszone z jednej strony do kolejnej. Nie są jednak dostępna dla trzeciej lub kolejnej strony.
-
Na pierwszej stronie utwórz formularz, który zawiera jeden element formularza pola tekstowego oraz przycisk prześlij. Pamiętaj, aby atrybuty kontrolek formularza zostały ustawione w następujący sposób:
- Wybierz pole tekstowe i nazwij je „txtFirstName”, używając Inspektora właściwości.
- Wybierz znacznik formularza (kliknij czerwoną przerywaną linię otaczającą kontrolki formularza lub kliknij znacznik formularza w selektorze znaczników). Ustaw drugą stronę jako aktywność formularza w Inspektorze właściwości. Wskaż Post jako metodę formularza. Metoda „get” jest również często używana ze zmiennymi sesji, ale w tym przykładzie użyto metody Post dla uproszczenia.
-
Na drugiej stronie uruchom widok Kod (Wyświetl> Kod). Nad znacznikiem otwierającym <html> wpisz kod modelu serwera z listy poniżej:
Ten kod pobiera zawartość z elementu formularza o nazwie „txtFirstName” utworzonego na pierwszej stronie. Następnie tworzy zmienną sesji o nazwie „sessFirstName”, której nadawana jest ta sama wartość co zawartość elementu formularza. Innymi słowy, kod ten tworzy zmienną sesji zawierającą informacje, które użytkownik wprowadza na stronie formularza.- ASP (VBScript) (pamiętaj, aby długość kodu nie przekraczała jednego wiersza i aby nie używać podziałów wiersza)
<%session("sessFirstName")=Request.Form("txtFirstName")%> - ASP (JavaScript) (pamiętaj, aby długość kodu nie przekraczała jednego wiersza i aby nie używać podziałów wiersza)
<%Session("sessFirstName")=String(Request.Form("txtFirstName"))%> - ColdFusion
<cfset Session.sessFirstName = #Form.txtFirstName#>
Używanie zmiennych sesji ColdFusion wymaga również utworzenia pliku Application.cfm w katalogu głównym serwisu (jeśli jeszcze go tam nie ma). Plik Application.cfm musi zawierać następujący kod:
<CFAPPLICATION NAME="Name" SESSIONMANAGEMENT="Yes">
Uwaga: W systemach UNIX w nazwach plików uwzględniana jest wielkość liter. Pamiętaj, aby w nazwie pliku Application.cfm A było wielką literą. Pozostałe ustawienia dotyczące pliku Application.cfm podano w dokumentacji ColdFusion. - JSP (pamiętaj, aby długość kodu nie przekraczała jednego wiersza i aby nie używać podziałów wiersza)
<%session.setAttribute("sessFirstName", request.getParameter("txtFirstName"));%>
Następujący kod również zadziała, ale w najnowszych specyfikacjach został już zdezaktualizowany:
<%session.putValue("sessFirstName", request.getParameter("txtFirstName"));%> - PHP
<?php session_start(); session_register("sessFirstName"); $sessFirstName = $HTTP_POST_VARS['txtFirstName']; ?>
Jeśli w przeglądarce w systemie Windows wystąpi błąd PHP, to jego przyczyną może być brak prawidłowego katalogu do zapisywania danych sesji w tej instalacji PHP. Parametr ten nosi nazwę jest session.save_path w pliku PHP.ini oraz pliku httpd.conf. Lokalizacja katalogu jest opcjonalna, ale może to być na przykład następująca wartość:
session.save_path = c:\php\sessiondata
W zależności od konfiguracji PHP czasami trzeba ręcznie włączyć zarządzanie sesjami na wszystkich stronach powiązanych z sesją. Umieść następujący wiersz kodu na górze każdej strony:
<?php session_start();?>
Zamiast przywoływać funkcję session_start() na każdej stronie, można aktywować automatyczne uruchamianie sesji przez protokół PHP, włączając opcję session.auto_start w pliku php.ini.
- ASP (VBScript) (pamiętaj, aby długość kodu nie przekraczała jednego wiersza i aby nie używać podziałów wiersza)
-
Nadal na tej stronie otwórz panel Powiązania, wybierając kolejno opcje Okno> Powiązania. Z menu plus (+) wybierz opcję Zmienna sesji. W oknie dialogowym Zmienna sesji wprowadź "sessFirstName" (bez cudzysłowu) w polu nazwy i kliknij przycisk OK.
-
Rozwiń ikonę zmiennej sesji, która jest wyświetlana w panelu Powiązania. Przeciągnij ikonę "sessFirstName" do okna Dokument. Zawartość zmiennej sesji zostaje zapisana na tej stronie.
-
Otwórz trzecią stronę i powtórz kroki 4 i 5. Podobnie upewnij się, że druga strona ma łącze do trzeciej strony.
-
Zapisz, publikuj i testuj wszystkie trzy strony. Jeśli nie uzyskasz spodziewanych wyników, sprawdź wielkość liter i pisownię elementu formularza, zmiennej sesji i zmiennej żądania. Ikona sesji jest teraz widoczna w panelu Powiązania dla każdej strony w tej witrynie.
Tworzenie zmiennej sesji w programie ASP.NET
-
Zdefiniuj witrynę sieci Web ASP.NET.
-
Utwórz dwie strony w ramach witryny. Pierwsza strona zawiera formularz sieci Web programu ASP.NET, który uruchamia własny mechanizm odświeżania, a następnie przekierowuje na drugą stronę.
Uwaga: Powodem, dla którego użyto w tym przykładzie dwóch stron jest udowodnienie, że zmienna sesji jest dostępna na drugiej, trzeciej, czwartej stronie oraz kolejnych. Zmienne żądania, które stanowią alternatywę dla zmiennych sesji, nie mogą być przenoszone z formularza sieci Web programu ASP.NET z jednej strony na drugą
-
Pierwsza strona musi zawierać formularz sieci Web programu ASP.NET zawierający jeden formant serwera <asp:textbox> oraz formant serwera <asp:button>. Ustaw atrybut "id" formantu typu pole tekstowe na "txtFirstName". Pełny kod dla pierwszej strony podano poniżej. Wybierz C# lub VB w zależności od tego, który język został wybrany dla witryny ASP.NET:
Ten kod pobiera zawartość z formantu serwera <asp:textbox> o nazwie "txtFirstName." Tworzy zmienną sesji o nazwie „sessFirstName”, która otrzymuje tę samą wartość co zawartość formantu serwera. Innymi słowy, kod ten tworzy zmienną sesji zawierającą informacje, które użytkownik wprowadza na stronie formularza.
- ASP.NET (VB) - Page 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>Session Page 1</title></head><body> ASP.NET VB session variable and web form example - page 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#) - Page 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>Session Page 1</title></head><body> ASP.NET C# session variable and web form example - page 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 drugiej stronie uzyskaj dostęp do widoku Kod, wybierając kolejno opcje Widok > Kod i wprowadź kod poniżej, aby zapisać zawartość zmiennej sesji na stronie. Znowu wybierz C# lub VB w zależności od tego, który język został wybrany dla witryny ASP.NET:
- ASP.NET (VB) - Page 2 <%@ Page Language="vb" %><html><head><title>Session Page 2</title></head><body><p>Zmienna sesji VB ASP.NET i formularz internetowy — przykłady, strona 2</p><p>first name: <%= session("sessFirstName") %></p></body></html>
- ASP.NET (C#) - Page 2 <%@ Page Language="C#" %><html><head><title>Session Page 2</title></head><body><p>Zmienna sesji C# ASP.NET i formularz internetowy— przykłady, strona 2</p><p>first name: <%=Session["sessFirstName"]%></p></body></html>
-
Zapisz, publikuj i testuj obie strony. Jeśli nie uzyskasz spodziewanych rezultatów, sprawdź wielkość liter i pisownię formantów serwera, zmiennej sesji oraz zmiennej żądania.
Dodatkowe informacje
Więcej szczegółów dotyczących zmiennych sesji znajduje się w następujących artykułach:
Więcej podobnych
Zaloguj się na swoje konto