Inleiding

Bij het ontwerpen van webtoepassingen willen webontwikkelaars soms toegang tot variabelegegevens die niet via een URL worden doorgegeven, maar wel beschikbaar zijn in de toepassing. Een webtoepassing voor agenda's kan bijvoorbeeld bezoekers vragen naar hun voorkeur voor een tijdzone. Vervolgens kunnen de datum en tijd van die tijdzone op alle pagina's van de toepassing worden weergeven. Sessievariabelen bieden deze functionaliteit.

Hoewel sessievariabelen een krachtig hulpmiddel zijn in het arsenaal van webontwikkelaars, genereert Dreamweaver niet automatisch alle code die nodig is om te zorgen dat de variabelen werken. In dit document vindt u een beschrijving van de sessievariabelen en de stappen voor het gebruik ervan in de verschillende servermodellen die door Dreamweaver worden ondersteund.

Vereisten

Voor het gebruiken en begrijpen van dit document moet de ontwikkelaar met een servermodel werken, zoals ASP of ColdFusion. Ontwikkelaars moeten bekend zijn met de volgende concepten. Bovendien moeten ze een versie van Dreamweaver gebruiken die dynamische ontwikkeling ondersteunt (Dreamweaver MX of Dreamweaver MX 2004). Zie de desbetreffende secties van de gebruikershandleiding of het Help-systeem van Dreamweaver voor meer informatie.

  • Voorbereidingen voor het bouwen van dynamische websites
  • Pagina's dynamisch maken

Hoe sessievariabelen werken

Sessievariabelen bieden ontwikkelaars de mogelijkheid om bezoekersinformatie op te slaan door een variabele in te stellen die voor de duur van de sessie van de bezoeker voor de toepassing toegankelijk is.

Sessievariabelen hebben de volgende eigenschappen:

  • Tenzij anders aangegeven, verlopen sessievariabelen 20 minuten nadat een bezoeker de site verlaat.
  • Sessievariabelen verlopen als er voor die specifieke bezoeker 20 minuten geen activiteit wordt gedetecteerd. Sessievariabelen verlopen ook als de bezoeker de webbrowser afsluit.
  • Sessievariabelen werken alleen als de browser van de bezoeker is ingesteld voor het accepteren van cookies.
  • Alle pagina's voor de site moeten zich binnen één map op de webserver bevinden.
  • De informatie die in sessievariabelen wordt opgeslagen, is specifiek voor elke sitebezoeker. Sitebezoekers hebben geen toegang tot de variabelegegevens van andere bezoekers.

In het algemeen leggen ontwikkelaars de gegevens voor sessievariabelen vast door een bezoeker een formulier in de webtoepassing te laten invullen. De sessievariabele wordt ingesteld op de waarde van een formulierveld. In de voorbeelden in deze TechNote wordt gebruikgemaakt van informatie van een formulierelement om de waarde van een sessievariabele in te stellen.

Voor alle servermodellen, behalve ASP.NET, heeft Dreamweaver een menufunctie om sessievariabelen naar een pagina te schrijven nadat een sessievariabele is gemaakt. Dreamweaver biedt echter geen menufunctie om een waarde aan een sessievariabele toe te wijzen (ook wel een instantiërende sessievariabele genoemd). Een waarde moet handmatig in de broncode aan een sessievariabele worden toegewezen.

Een sessievariabele maken in ASP-, ColdFusion-, JSP- of PHP-toepassingen

Opmerking: Het voorbeeld voor ASP.NET wijkt aanzienlijk af van de andere servermodellen, aangezien ASP.NET meestal webformulieren gebruikt in plaats van traditionele HTML-formulieren. Als u het ASP.NET-servermodel gebruikt, raadpleegt u Voorbeeld van ASP.NET aan het einde van dit document.

  1. Definieer een ASP-, ColdFusion-, JSP- of PHP-website.
  2. Maak drie dynamische pagina's binnen de site. De eerste pagina bevat een HTML-formulier (wordt in de volgende stap beschreven) dat bij de tweede pagina wordt ingediend. Op de tweede pagina maakt u een hyperlink die naar de derde pagina.

    Opmerking: De reden waarom er in dit voorbeeld drie pagina's worden gebruikt, is om te bewijzen dat een sessievariabele voor een tweede, derde en daaropvolgende pagina beschikbaar is. Aanvraagvariabelen, die een alternatief vormen voor sessievariabelen, kunnen van de ene pagina naar een tweede worden overgedragen. Deze zijn echter niet beschikbaar voor een derde of daaropvolgende pagina.

  3. Maak op de eerste pagina een formulier dat een tekstveldformulierelement bevat en een verzendknop. Zorg ervoor dat de formulierbesturingselementkenmerken als volgt worden ingesteld:
    • Selecteer het tekstveld en noem dit 'txtFirstName' met de Eigenschappencontrole.
    • Selecteer het formulierlabel (klik op de rode gestreepte lijn rond de formulierbesturingselementen of klik op het formulierlabel in de labelkiezer). Stel de tweede pagina in als de formulieractie in de Eigenschappencontrole. Geef 'post' op als de formuliermethode. De 'get'-methode wordt ook vaak gebruikt met sessievariabelen, maar in dit voorbeeld wordt voor het gemak de 'post'-methode gebruikt.
  4. Start Codeweergave (Weergave > Code) op de tweede pagina. Boven de <html>-openingstag typt u de code voor uw servermodel uit de onderstaande lijst:

    met deze code wordt de inhoud uit het formulierelement 'txtFirstName' gehaald, dat op de eerste pagina was gemaakt. Vervolgens wordt de sessievariabele 'sessFirstName' gemaakt, die gelijk wordt gesteld aan de inhoud van het formulierelement. Met andere woorden, met deze code wordt een sessievariabele gemaakt die de informatie bevat die de gebruiker op de formulierpagina invoert.

    • ASP (VBScript) (zorg dat de code zich op een enkele regel bevindt, zonder regeleinden)

      <%session("sessFirstName")=Request.Form("txtFirstName")%>
    • ASP (JavaScript) (zorg dat de code zich op een enkele regel bevindt, zonder regeleinden)
      <%Session("sessFirstName")=String(Request.Form("txtFirstName"))%>
    • formulierelementColdFusion
      <cfset Session.sessFirstName = #Form.txtFirstName#>

      Voor het gebruik van sessievariabelen vereist ColdFusion ook dat een Application.cfm-bestand wordt gemaakt in de root van de site, als uw site er niet al een heeft. Het Application.cfm-bestand moet de volgende code bevatten:

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

      Opmerking: op UNIX-systemen zijn bestandsnamen hoofdlettergevoelig. Zorg ervoor dat de Application.cfm-bestandsnaam met een hoofdletter A wordt gespeld. Raadpleeg de documentatie van ColdFusion voor andere Application.cfm-instellingen.
    • JSP (zorg dat de code zich op een enkele regel bevindt, zonder regeleinden)
      <%session.setAttribute("sessFirstName", request.getParameter("txtFirstName"));%>

      De volgende code werkt ook, maar is in de laatste Java-specificaties afgekeurd:

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

      Als er een PHP-fout optreedt in de browser onder Windows, is het mogelijk dat de installatie van een PHP geen geldige opslagmap heeft voor sessiegegevens. Deze parameter wordt session.save_path genoemd in het PHP.ini-bestand en het httpd.conf-bestand. De maplocatie is optioneel, maar de volgende instelling zou moeten werken:

      session.save_path = c:\php\sessiondata

      Afhankelijk van uw PHP-configuratie, is het soms noodzakelijk om sessiebeheer op alle pagina's die betrekking hebben op de sessie, handmatig in te schakelen. Plaats de volgende coderegel boven aan elke pagina:

      <?php session_start();?>

      In plaats van het aanroepen van de session_start()-functie op elke pagina, kunt u zorgen dat PHP sessies automatisch start door de optie session.auto_start in het php.ini-bestand in te schakelen. Meer informatie over het configureren van PHP voor sessieverwerking vindt u in Sessies verwerken met PHP 4.
  5. Terwijl u zich nog op deze pagina bevindt, opent u het deelvenster Bindingen door Venster > Bindingen te kiezen. Selecteer Sessievariabele in het plusmenu (+). In het dialoogvenster Sessievariabele typt u 'sessFirstName' (zonder aanhalingstekens) in het naamveld en klikt u op OK.
  6. Vouw het sessievariabelepictogram uit, dat in het deelvenster Bindingen wordt weergegeven. Sleep het pictogram 'sessFirstName' naar het documentvenster. De inhoud van de sessievariabele wordt geschreven naar deze pagina.
  7. Open de derde pagina en herhaal stap 4 en 5. Zorg ook hier dat de tweede pagina een link heeft naar de derde pagina.
  8. Vervolgens bewaart, publiceert en test u alle drie de pagina's. Als u niet de verwachte resultaten krijgt, controleert u het hoofdlettergebruik en de spelling van het formulierelement, de sessievariabele en de aanvraagvariabele. Het sessiepictogram is nu zichtbaar in het deelvenster Bindingen voor elke pagina op deze site.

 

Een sessievariabele maken in ASP.NET

  1. Definieer een ASP.NET-website.
  2. Maak twee pagina's binnen de site. De eerste pagina bevat een ASP.NET-webformulier dat naar zichzelf terug wordt gepost en vervolgens naar de tweede pagina leidt.

    Opmerking: De reden waarom er in dit voorbeeld twee pagina's worden gebruikt, is om te bewijzen dat een sessievariabele voor een tweede, derde, vierde en daaropvolgende pagina beschikbaar is. Aanvraagvariabelen, die een alternatief vormen voor sessievariabelen, kunnen niet vanuit een ASP.NET-webformulier op de ene pagina naar een tweede pagina worden overgedragen.

  3. De eerste pagina moet een ASP.NET-webformulier bevatten dat een serverbesturingselement <asp:textbox> en een serverbesturingselement <asp:button> bevat. Stel het 'id'-attribuut van het tekstvakbesturingselement in op 'txtFirstName'. De volledige code voor de eerste pagina wordt hieronder vermeld. Kies of C# of VB, afhankelijk van de taal die u voor uw ASP.NET-site hebt gekozen:

    Met deze code wordt de inhoud uit het serverbesturingselement <asp:textbox> met de naam 'txtFirstName' gehaald. De sessievariabele 'sessFirstName' wordt gemaakt, die gelijk wordt gesteld aan de inhoud van het serverbesturingselement. Met andere woorden, met deze code wordt een sessievariabele gemaakt die de informatie bevat die de gebruiker op de formulierpagina invoert.

    • ASP.NET (VB) - Pagina 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> Voorbeeld van ASP.NET VB-sessievariabele en -webformulier - pagina 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#) - Pagina 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> Voorbeeld van ASP.NET C#-sessievariabele en -webformulier - pagina 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>
  4. Op de tweede pagina gaat u naar Codeweergave door Weergave > Code te kiezen en voert u de onderstaande code in om de inhoud van de sessievariabele naar de pagina te schrijven. Kies opnieuw of C# of VB, afhankelijk van de taal die u voor uw ASP.NET-site hebt gekozen:
    • ASP.NET (VB) - Pagina 2 <%@ Page Language="vb" %><html><head><title>Sessiepagina 2</title></head><body><p>Voorbeeld van ASP.NET VB-sessievariabele en -webformulier - pagina 2</p><p>voornaam: <%= session("sessFirstName") %></p></body></html>
    • ASP.NET (C#) - Pagina 2 <%@ Page Language="C#" %><html><head><title>Sessiepagina 2</title></head><body><p>Voorbeeld van ASP.NET C#-sessievariabele en -webformulier - pagina 2</p><p>voornaam: <%=Session["sessFirstName"]%></p></body></html>
  5. Bewaar, publiceer en test vervolgens beide pagina's. Als u niet de verwachte resultaten krijgt, controleert u het hoofdlettergebruik en de spelling van de serverbesturingselementen, de sessievariabele en de aanvraagvariabele.

Aanvullende informatie

Voor meer informatie over sessievariabelen raadpleegt u de volgende artikelen:

 

Dit werk is gelicentieerd onder de Creative Commons Naamsvermelding/Niet-commercieel/Gelijk delen 3.0 Unported-licentie  De voorwaarden van Creative Commons zijn niet van toepassing op Twitter™- en Facebook-berichten.

Juridische kennisgevingen   |   Online privacybeleid