Sådan Start en PHP Session

Nøglen til at bruge PHP sessioner er session_start () funktion. Du kalder session_start () på hver side, og derefter få adgang til alle de elementer i $ _SESSION array.

Det kan virke som lidt af et ulige navn for funktionen, session_start (), fordi på de fleste sider, du virkelig bare vil fortsætte sessionen og få adgang til de variabler, der er der. Men i virkeligheden, session_start () gør begge dele: Det starter en ny session, hvis nødvendigt, og fortsætter en eksisterende session, hvor det er relevant.

Den session_start () funktion kaldes simpelthen sådan her:

<? Php

session_start ();

// Andre PHP udsagn her

?>

Her er koden til et par sider, spor, når du adgang til den første side af ansøgningen. Dette viser anvendelsen af ​​session_start (), og derefter etablering af en variabel til at holde den oprindelige adgang tid.

Her er koden for den første side, der kaldes page1.php.

<? Php

session_start ();

$ _SESSION ['AccessTime'] = dato ("M / D / Y g: i: sa");
print "Dette er side 1 <br />";

print "Du forsøger at tilgå ansøgning på:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page2.php\"> Fortsæt til næste side </a> </ div>";

?>

Set i en browser, siden ligner følgende:

Sådan Start en PHP Session

Den næste side i ansøgningen starter derefter sessionen og kan få adgang alle variabler, der allerede er i sessionen. Her er koden for den anden side, page2.php.

<? Php

session_start ();

print "Dette er side 2 <br />";

print "Du forsøger at tilgå ansøgning på:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page3.php\"> Fortsæt til næste side </a> </ div>";

?>

Bemærk i den kode, variablen $ _SESSION ['accessTime'] ikke er indstillet igen, men blot adgang efter sessionen er startet. Når du er på page1.php og klik på linket for at gå til næste side, får du en side som denne:

Sådan Start en PHP Session

Du kan gemme næsten alt i en session, men du bør være opmærksom på, at samlingen kan, og nogle gange gør, forsvinder for en række forskellige årsager. En grund en session kan forsvinde er, at det udløber. Hvis brugerne sidde på en side for længe, ​​måske sessionen ikke være der, når de begynder at bruge programmet igen.

Den praktiske implikation af sessionen forsvinden er, at de variabler, du tidligere har angivet også vil forsvinde. Derfor er det god praksis at kontrollere, om sessionen indeholder de værdier, som du forventer, før du bruger dem.

Der er et par måder at gøre dette. En måde ville være at tjekke alle variabler før adgang til dem. For eksempel kan du ændre koden til at kontrollere for $ _SESSION ['accessTime'] variabel inden du bruger det i produktionen.

<? Php

session_start ();

hvis (! isset ($ _ SESSION ['accessTime'])) {
die (header ("Location: page1.php"));
}

print "Dette er side 2 <br />";

print "Du forsøger at tilgå ansøgning på:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page3.php\"> Fortsæt til næste side </a> </ div>";

?>

Denne liste tilføjes følgende kode:

hvis (! isset ($ _ SESSION ['accessTime'])) {
die (header ("Location: page1.php"));
}

Placeringen af ​​denne kode er vigtig. Fordi kode skal sende en HTTP header, skal det vises, før en anden udgang. Så for eksempel, hvis denne kode dukkede under "Dette er side 2" output, det ville ikke fungere, fordi overskrifterne allerede er blevet sendt. Koden ser forud for enhver produktion, men også vigtigt, vises efter session_start () funktion.

Bedste praksis er at kontrollere, om der findes session-variabler, før du bruger dem, som netop vist. Men det kan få ganske besværligt at kontrollere alle de variabler, som du kan bruge i en stor ansøgning. Med det i tankerne, en anden mulighed er at sætte en global variabel session og tjekke for sin eksistens i stedet for hver variabel individuelt. Her er hvordan du gør det.

Her er en opdateret version af koden, page1.php. I denne kode, er der en enkelt tilføjelse, en ny variabel session kaldet appStarted.

<? Php

session_start ();

$ _SESSION ['AppStarted'] = true;

$ _SESSION ['AccessTime'] = dato ("M / D / Y g: i: sa");

print "Dette er side 1 <br />";

print "Du forsøger at tilgå ansøgning på:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page2.php\"> Fortsæt til næste side </a> </ div>";

?>

Du kan derefter ændre andre sider i ansøgningen for at kontrollere for eksistensen af ​​denne variabel, som i ændringen noteres.

<? Php

session_start ();

hvis (! isset ($ _ SESSION ['appStarted'])) {
die (header ("Location: page1.php"));
}

print "Dette er side 2 <br />";

print "Du forsøger at tilgå ansøgning på:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page3.php\"> Fortsæt til næste side </a> </ div>";

?>


© 2020 Zajacperrone.com | Contact us: webmaster# zajacperrone.com