Inledning

När webbutvecklare designar webbprogram vill de ibland ha åtkomst till variabelinformation som inte skickas genom en URL-adress men är tillgänglig i programmet. T.ex. kan ett kalenderprogram be besökaren att ange önskad tidszon. Det kan sedan visa datum och tid i den tidszonen i programmets alla sidor. Sessionsvariabler erbjuder denna funktion.

Även om sessionsvariabler är ett kraftfullt verktyg för en webbutvecklare genererar inte Dreamweaver automatiskt all kod som krävs för att arbeta med dem. I det här dokumentet beskrivs sessionsvariabler och information för hur de används på olika servermodeller som stöds av Dreamweaver.

Installationskrav

För att använda och förstå det här dokumentet krävs det att utvecklaren jobbar med en servermodell, t.ex. ASP eller ColdFusion. Det krävs att utvecklaren besitter kunskap om följande koncept. Utvecklaren måste dessutom använda en version av Dreamweaver som stöder dynamisk utveckling (Dreamweaver MX eller Dreamweaver MX 2004). Se de relaterade avsnitten i Dreamweavers bruksanvisning eller Hjälpsystem för mer information.

  • Förbereda för att skapa dynamiska platser
  • Göra sidor dynamiska

Så här fungerar sessionsvariabler

Sessionsvariabler låter utvecklare lagra besöksinformation genom att ställa in en variabel som programmet kan komma åt under besökstiden.

För sessionsvariabler gäller följande:

  • Om inte något annat anges slutar sessionsvariabler att gälla 20 minuter efter att besökaren lämnar hemsidan.
  • Sessionsvariabler förfaller om inte någon aktivitet av den specifika besökaren upptäcks på hemsidan under 20 minuter. De förfaller även ifall besökaren stänger sin webbläsare.
  • För att sessionsvariabler ska fungera måste besökarens webbläsare acceptera kakor.
  • Alla sidor på den hemsidan måste vara placerade i en och samma mapp på webbservern.
  • Information som sparas i sessionsvariabler är specifika för besökaren. Olika besökare kan inte komma åt varandras sessionsvariabelinformation.

Vanligtvis sparar utvecklare data för sessionsvariabler genom att låta besökare fylla i ett formulär i webbprogrammet. Sessionsvariabeln ställs in till värdet av ett formulärfält. Exemplen i denna TechNote använder information från ett formulärelement för att ange värdet av en sessionsvariabel.

För samtliga servermodeller, förutom ASP.NET, har Dreamweaver en menystyrd funktion för att skriva sessionsvariabler till en sida efter att sessionsvariabeln skapas. Dreamweaver erbjuder emellertid inte en menystyrd funktion för att tilldela ett värde till en sessionsvariabel (kallas även att instansiera en sessionsvariabel). Ett värde måste tilldelas en sessionsvariabel manuellt i källkoden.

Skapa en sessionsvariabel i ASP-, ColdFusion-, JSP-eller PHP-program

Obs! Exemplet för ASP.NET skiljer sig väsentligen från andra servermodeller eftersom ASP.NET vanligtvis använder webbformulär istället för traditionella HTML-formulär. Om du använder ASP.NET-servermodellen, se Exempel för ASP.NET i slutet av detta dokument.

  1. Definiera en ASP-, ColdFusion-, JSP- och PHP-hemsida.
  2. Skapa tre dynamiska sidor på hemsidan. Den första sidan ska innehålla ett HTML-formulär (beskrivs i nästa steg) som leder till den andra sidan. På den andra sidan ska du skapa en hyperlänk som leder vidare till tredje sidan.

    Obs! Orsaken till att tre sidor används i detta exempel är för att bevisa att en sessionsvariabel är tillgänglig för en andra, tredje och efterföljande sida. Frågevariabler, vilket är ett alternativ till sessionsvariabler, kan överföras från en sida till en annan. De är emellertid inte tillgängliga för en tredje eller efterföljande sida.

  3. Skapa ett formulär på den första sidan som innehåller ett formulärtextfält och en bekräftelseknapp. Se till att formulärets kontrollattribut anges enligt följande:
    • Markera textfältet och namnge det ”txtFirstName” med egenskapsverktyget.
    • Välj en formulärtagg (klicka på den röda streckade linjen som omger formulärets kontroller eller klicka på formulärtaggen i valområdet). Ställ in den andra sidan som formuläråtgärden i egenskapsverktyget. Specificera post som formulärmetod. Hämtningsmetoden används också ofta med sessionsvariabler. För enkelhetens skull används dock postmetoden i detta exempel.
  4. På den andra sidan, öppna kodvyn (Visa > Kod). Ovanför den inledande <html>-taggen, ange koden för din servermodell från listan nedan:

    Denna kod hämtar innehållet från formulärnamnet med namn ”txtFirstName” som skapades på den första sidan. Sedan skapas en sessionsvariabel med namnet ”sessFirstName”, vars inställningar är desamma som formulärelements innehåll. Med andra ord skapar denna kod en sessionsvariabel som innehåller informationen som användaren anger på formulärsidan.

    • ASP (VBScript) (se till att koden finns på en och samma rad utan radbrytning)

      <%session("sessFirstName")=Request.Form("txtFirstName")%>
    • ASP (JavaScript) (se till att koden finns på en och samma rad utan radbrytning)
      <%Session("sessFirstName")=String(Request.Form("txtFirstName"))%>
    • ColdFusion
      <cfset Session.sessFirstName = #Form.txtFirstName#>

      För att använda sessionsvariabler kräver ColdFusion även att en Application.cfm-fil skapas i webbplatsroten ifall din webbsida inte redan har en. Filen Application.cfm måste innehålla följande kod:

      <CFAPPLICATION NAME="Name" SESSIONMANAGEMENT="Yes">

      Obs! På UNIX-system kan filnamnen vara skiftlägeskänsliga. Se till att inleda filnamnet Application.cfm med stort A. Se dokumentationen till ColdFusion för andra Application.cfm-inställningar.
    • JSP (se till att koden finns på en och samma rad utan radbrytning)
      <%session.setAttribute("sessFirstName", request.getParameter("txtFirstName"));%>

      Följande kod fungerar också men har blivit inaktuell i de senaste Java-specifikationerna:

      <%session.putValue("sessFirstName", request.getParameter("txtFirstName"));%>
    • PHP
      <?php session_start(); session_register("sessFirstName"); $sessFirstName = $HTTP_POST_VARS['txtFirstName']; ?>

      Om ett PHP-fel uppstår i webbläsaren i Windows kan det bero på att det inte finns någon giltig katalog för att spara sessions data i installationen av PHP. Den här parametern kallas session.save_path i PHP.ini-filen liksom httpd.conf-filen. Katalogplatsen är valfri, men följande inställningar borde gå bra:

      session.save_path = c:\php\sessiondata

      Beroende på din PHP-konfiguration är det ibland nödvändigt att manuellt aktivera sessionshantering på alla sidor som förknippas med sessionen. Ange följande kodrad överst på varje sida:

      <?php session_start();?>

      Istället för att anropa funktionen session_start() på varje sida kan PHP starta sessioner automatiskt genom att slå på alternativet session.auto_start i filen php.ini. Mer information om hur man konfigurerar PHP för sessionshantering finns underSessionshantering med PHP 4.
  5. Öppna panelen Bindningar på denna sida genom att välja Windows > Bindningar. Från plus (+)-menyn, välj Sessionsvariabel. I dialogrutan Sessionsvariabel, ange ”sessFirstName” (utan citattecken) i namnfältet och klicka på OK.
  6. Expandera sessionsvariabelikonen som finns i panelen Bindningar. Dra ikonen ”sessFirstName” till Dokumentfönstret. Sessionsvariabelns innehåll skrivs till denna sida.
  7. Öppna den tredje sidan och upprepa steg 4 och 5. Se återigen till att det finns en länk till den tredje sidan på den andra sidan.
  8. Spara, publicera och testa alla tre sidor. Om du inte får de resultat du förväntar dig, kontrollera versaler och stavningen av formulärelementet, sessionsvariabeln och frågevariabeln. Sessionsikonen visas nu i panelen Bindningar för varje sida på denna webbplats.

 

Skapa en sessionsvariabel i ASP.NET

  1. Definiera en ASP.NET-webbplats.
  2. Skapa två sidor på webbplatsen. Den första sidan ska innehålla ett ASP.NET-webbformulär som återsänder till sig själv och omdirigerar sedan till den andra sidan.

    Obs! Orsaken till att två sidor används i detta exempel är för att bevisa att en sessionsvariabel är tillgänglig för en andra, tredje och fjärde sida samt efterföljande sidor. Frågevariabler, vilket är ett alternativ till sessionsvariabler, kan inte överföras från ett ASP.NET-webbformulär på en sida till en annan

  3. Den första sidan måste inkludera ett ASP.NET-webbformulär som innehåller en <asp:textbox>-serverkontroll och en <asp:button>-serverkontroll. Ange textrutekontrollens ”id”-attribut som ”txtFirstName”. Den fullständiga koden för den första sidan finns här nedanför. Välj antingen C# eller VB beroende på vilket språk du har valt för din ASP.NET-webbplats:

    Den här koden hämtar innehållet från den <asp:textbox>-serverkontroll som heter ”txtFirstName”. Den skapar en sessionsvariabel med namn ”sessFirstName”, vars inställningar är desamma som serverkontrollens innehåll. Med andra ord skapar denna kod en sessionsvariabel som innehåller informationen som användaren anger på formulärsidan.

    • ASP.NET (VB) - Sida 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>Sessionssida 1</title></head><body> Exempel på ASP.NET VB-sessionsvariabel och webbformulär - sida 1 <form id="Form1" method="post" runat=”server”><p>förnamn:<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#) - Sida 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>Sessionsida 1</title></head><body> Exempel på ASP.NET C#-sessionsvariabel och webbformulär - sida 1<form id="Form1" method="post" runat=”server”><p>förnamn:<asp:TextBox id="txtFirstName" runat="server" /></p><p><asp:Button id="Button1" runat="server" Text="Submit" onClick="Button1_Click" /></p></form></body></html>
  4. Öppna kodvyn på den andra sidan genom att gå till Visa > Kod och ange sedan koden nedan för att skriva sessionsvariabelns innehåll till sidan. Välj än en gång antingen C# eller VB beroende på vilket språk du har valt för din ASP.NET-webbplats:
    • ASP.NET (VB) - Sida 2 <%@ Page Language="vb" %><html><head><title>Sessionssida 2</title></head><body><p> Exempel på ASP.NET VB-sessionsvariabel och webbformulär - sida 2</p><p>förnamn: <%= session("sessFirstName") %></p></body></html>
    • ASP.NET (C#) - Sida 2 <%@ Page Language="C#" %><html><head><title>Sessionssida 2</title></head><body><p>Exempel på ASP.NET C#-sessionsvariabel och webbformulär - sida 2</p><p>förnamn: <%=Session["sessFirstName"]%></p></body></html>
  5. Spara, publicera och testa båda sidor. Om du inte får de resultat du förväntar dig, kontrollera versaler och stavningen av serverkontrollerna, sessionsvariabeln och frågevariabeln.

Ytterligare information

Se följande sidor för mer information om sessionsvariablar:

 

Denna produkt är licensierad enligt en Creative Commons Erkännande-Ickekommersiell-Dela Lika 3.0 Unported-licens  Twitter™- och Facebook-inlägg omfattas inte av villkoren i Creative Commons-licensen.

Juridiska meddelanden   |   Onlinesekretesspolicy