PHP og Sessions

 



Kort om sessions
Sessions er en feature der gør det muligt, på den ene eller anden måde, at gemme variabler på tværs af forespørgsler til webserveren, og dermed PHP.

I PHP findes der flere forskellige måder hvorpå sessions kan laves. Lad os starte med hvordan PHP identificerer de forskellige brugere fra hinanden. Som standard gemmer PHP en cookie med et unikt ID i. Et ex. på det kunne være "OjLsRYLj1fAAACnsexk". Understøtter browseren ikke cookies, eller hvis brugeren har disabled dem, virker dette naturligvis ikke, og session'sne kan ikke køre.

En løsning på dette er at inkludere det førnævnte unikke ID i querystrengen. Dette gøres med:

<A HREF="nextpage.php?<?=SID?>">click here</A>

Det er selvfølgelig enormt upraktisk - set fra den dovne programmørs vinkel - så derfor har man opfundet en funktion der scanner dokumentet igennem for links og tilføjer det unikke ID på alle links mv. Da dette er enormt resourcekrævende er der næsten ingen ISP'er der tilbyder dette, men kan være en god ting hvis man har sin egen server. Dette gøres ved at compile PHP med --enable-trans-sid.

De registrede data der opsamles i session'en bliver pr. default gemt i en textfil specificeret i konfigurationen. Du kan dog også vælge selv at definere hvor du vil gemme dine data. Kig på funktionen session_set_save_handler() hvis du vil det!

Start session'en
Pr. default bliver sessions ikke startet automatisk (kan ændres ved konfigurationsdirektivet session.auto_start). Derfor skal du øverst på de sider du ønsker at anvende sessions køre funktionen sessions_start(). Nu vil der, hvis der ikke findes en allerede, blive sat en cookie med det unikke ID i. Hvis cookien allerede findes hentes de gemte variabler ind og gøres tilgængelige.

Gemme værdi
For at gemme en værdi i en session bruges session_register(). Herefter vil værdien være tilgængelig for andre dokumenter. For at hente den tilbage igen er det lavet så smart at du bare bruger variabelnavnet. Altså har du gemt $gnyf i et dokument, hedder den stadig $gnyf i et andet!

Et lille eksempel

session1.php


&lt;?php if ($navn) { session_start(); // Lad os begynde! session_register("navn"); // Gem $navn } ?&gt; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Session1.php&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;?php if ($navn) { ?&gt; &lt;b&gt;Tak for det!&lt;/b&gt;&lt;br&gt; Gå nu videre til &lt;a href="session2.php"&gt;seesion2.php&lt;/a&gt; &lt;?php } else { ?&gt; &lt;form action="session1.php"&gt; &lt;b&gt;Skriv dit navn - tak!&lt;/b&gt;&lt;br&gt; &lt;input type="text" name="navn"&gt;&lt;br&gt; &lt;input type="submit" value="okiedokie"&gt; &lt;/form&gt; &lt;?php } ?&gt; &lt;/body&gt; &lt;/html&gt;


session2.php

&lt;?php session_start(); ?&gt; &lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Session1.php&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;?php print "Dit navn er: &lt;b&gt;".$navn."&lt;/b&gt;"; ?&gt; &lt;br&gt;&lt;br&gt;Smart! &lt;/body&gt; &lt;/html&gt;


Håber i kunne bruge denne artikel til noget! :)

//Per H



Skrevet af: | Dato : 2006-03-28 16:3 | Lst : 8373 gange