PHP-økt og PHP-informasjonskapsler med eksempel

Hva er informasjonskapsel?

En informasjonskapsel er en liten fil med maksimal størrelse på 4KB som webserveren lagrer på klientdatamaskinen.

Når en informasjonskapsel er satt, returnerer alle sideforespørsler som følger informasjonskapselens navn og verdi.

En informasjonskapsel kan kun leses fra domenet den er utstedt fra. For eksempel et sett med informasjonskapsler som bruker domenet www.guru99.com kan ikke leses fra domenet career.guru99.com.

De fleste nettstedene på internett viser elementer fra andre domener, for eksempel reklame. Domenene som betjener disse elementene kan også sette sine egne informasjonskapsler. Disse er kjent som tredjeparts informasjonskapsler.

En informasjonskapsel opprettet av en bruker kan bare være synlig for dem. Andre brukere kan ikke se verdien.

De fleste nettlesere har alternativer for å deaktivere informasjonskapsler, tredjeparts informasjonskapsler eller begge deler.

Hvis dette er tilfelle, svarer PHP ved å sende informasjonskapseltokenet i URL-en.

Diagrammet nedenfor illustrerer hvordan informasjonskapsler fungerer.

Hva er Cookie

Her

1) En bruker ber om en side som lagrer informasjonskapsler

2) Serveren setter informasjonskapselen på brukerens datamaskin

3) Andre sideforespørsler fra brukeren vil returnere informasjonskapselnavnet og verdien

Hvorfor og når skal jeg bruke informasjonskapsler?

  • Http er en statsløs protokoll; informasjonskapsler lar oss spore applikasjonens tilstand ved å bruke små filer som er lagret på brukerens datamaskin. Banen der informasjonskapslene lagres avhenger av nettleseren. Internet Explorer lagrer dem vanligvis i mappen Temporal Internet Files.
  • Personliggjøring av brukeropplevelsen – dette oppnås ved å la brukere velge sine preferanser. Siden som blir bedt om som følger er personlig tilpasset basert på de angitte preferansene i informasjonskapslene.
  • Spore sidene besøkt av en bruker

Opprette informasjonskapsler

La oss nå se på den grunnleggende syntaksen som brukes til å lage en informasjonskapsel.

<?php

setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]);

?>

HER,

  • Php "setcookie" er PHP funksjon brukes til å lage informasjonskapselen.
  • "cookie_name" er navnet på informasjonskapselen som serveren vil bruke når den henter verdien fra matrisevariabelen $_COOKIE. Det er obligatorisk.
  • "cookie_value" er verdien av informasjonskapselen og dens obligatoriske
  • "[utløpstid]" er valgfritt; den kan brukes til å angi utløpstiden for informasjonskapselen, for eksempel 1 time. Tiden settes ved hjelp av PHP time() funksjonene pluss eller minus et antall sekunder større enn 0 dvs. time() + 3600 i 1 time.
  • "[cookie_path]" er valgfritt; den kan brukes til å angi informasjonskapselbanen på serveren. Skråstreken "/" betyr at informasjonskapselen vil bli gjort tilgjengelig på hele domenet. Underkataloger begrenser informasjonskapseltilgangen til underdomenet.
  • "[domene]" er valgfritt, det kan brukes til å definere informasjonskapseltilgangshierarkiet, dvs www.cookiedomain.com betyr hele domenet mens www.sub.cookiedomain.com begrenser informasjonskapseltilgangen til www.sub.cookiedomain.com og dets underdomener. Merk at det er mulig å ha et underdomene til et underdomene så lenge det totale antallet tegn ikke overstiger 253 tegn.
  • "[sikker]" er valgfritt, standarden er falsk. Den brukes til å bestemme om informasjonskapselen sendes via https hvis den er satt til sann eller http hvis den er satt til usann.
  • "[Httponly]" er valgfritt. Hvis den er satt til true, er det kun klientside-skriptspråk, dvs JavaScript får ikke tilgang til dem.

OBS: php set cookie-funksjonen må utføres før HTML-åpningskoden.

La oss nå se på et eksempel som bruker informasjonskapsler.

Vi skal lage et grunnleggende program som lar oss lagre brukernavnet i en informasjonskapsel som utløper etter ti sekunder.

Koden nedenfor viser implementeringen av eksemplet ovenfor "cookies.php".

<?php
     setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds
     echo 'the cookie has been set for 60 seconds';
?>

Utgang:

the cookie has been set for 60 seconds

Henter informasjonskapselverdien

Lag en annen fil med navnet "cookies_read.php" med følgende kode.

<?php
     print_r($_COOKIE);    //output the contents of the cookie array variable 
?>

Utgang:

Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )

Merk: $_COOKIE er en PHP innebygd superglobal variabel.

Den inneholder navnene og verdiene til alle de angitte informasjonskapslene.

Antall verdier som

$_COOKIE-arrayen kan inneholde avhenger av minnestørrelsen angitt i php.ini.

Standardverdien er 1 GB.

Tester applikasjonen vår.

La oss anta at du har lagret PHP-filene dine i phptus-mappen.

  • Trinn 1 – åpne nettleseren og skriv inn URL-en http://localhost/phptuts/cookies_read.php

Henter informasjonskapselverdien

Merk: Bare en tom matrise har blitt vist

  • Trinn 2 – Nettleser til URL http://localhost/phptuts/cookies.php

Henter informasjonskapselverdien

  • Trinn 3 – Bytt tilbake til den første fanen og klikk deretter på oppdateringsknappen

Henter informasjonskapselverdien

Vent et minutt og klikk deretter på oppdateringsknappen igjen. Hvilke resultater fikk du?

Slett informasjonskapsler

  • Hvis du vil ødelegge en informasjonskapsel før utløpstiden, setter du utløpstiden til en tid som allerede har gått.
  • Opprett en ny arkivert kalt cookie_destroy.php med følgende kode
<?php

 setcookie("user_name", "Guru99", time() - 360,'/');

?>
  • Gjenta trinn 1 til 3 fra delen ovenfor om å hente verdier for informasjonskapsler.
  • Åpne URL-en http://localhost/phptuts/cookie_destroy.php
  • Bytt til URL http://localhost/phptuts/cookies_read.php hvilke resultater viser den?

Hva er en økt?

  • En økt er en global variabel lagret på serveren.
  • Hver økt tildeles en unik id som brukes til å hente lagrede verdier.
  • Hver gang en økt opprettes, lagres en informasjonskapsel som inneholder den unike økt-ID-en på brukerens datamaskin og returneres med hver forespørsel til serveren. Hvis klientnettleseren ikke støtter informasjonskapsler, vises den unike php-sesjons-IDen i URL-en
  • Sesjoner har kapasitet til å lagre relativt store data sammenlignet med informasjonskapsler.
  • Sesjonsverdiene slettes automatisk når nettleseren lukkes. Hvis du ønsker å lagre verdiene permanent, bør du lagre dem i databasen.
  • Akkurat som $_COOKIE matrisevariabelen, lagres øktvariabler i $_SESSION matrisevariabelen. Akkurat som informasjonskapsler, må økten startes før eventuelle HTML-tagger.

Hvorfor og når skal jeg bruke Sessions?

  • Du vil lagre viktig informasjon som bruker-ID sikrere på serveren der ondsinnede brukere ikke kan temperere med dem.
  • Du vil overføre verdier fra en side til en annen.
  • Du vil ha alternativet til informasjonskapsler på nettlesere som ikke støtter informasjonskapsler.
  • Du ønsker å lagre globale variabler på en effektiv og sikrere måte sammenlignet med å sende dem i URL-en
  • Du utvikler en applikasjon som en handlekurv som må lagre informasjon midlertidig med en kapasitet større enn 4KB.

Opprette en økt

For å opprette en økt må du først kalle PHP session_start-funksjonen og deretter lagre verdiene dine i matrisevariabelen $_SESSION.

La oss anta at vi vil vite hvor mange ganger en side har blitt lastet inn, vi kan bruke en økt til å gjøre det.

Koden nedenfor viser hvordan du oppretter og henter verdier fra økter

<?php

session_start(); //start the PHP_session function 

if(isset($_SESSION['page_count']))
{
     $_SESSION['page_count'] += 1;
}
else
{
     $_SESSION['page_count'] = 1;
}
 echo 'You are visitor number ' . $_SESSION['page_count'];

?>

Utgang:

You are visitor number 1

Ødelegge øktvariabler

Session_destroy()-funksjonen brukes til å ødelegge hele Php-sesjonsvariablene.

Hvis du bare vil ødelegge et enkelt sesjonselement, bruker du funksjonen unset().

Koden nedenfor illustrerer hvordan du bruker begge metodene.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

unset($_SESSION['product']); //destroy product session item 

?>

Session_destroy fjerner alle øktdata inkludert informasjonskapsler knyttet til økten.

Unset frigjør bare de individuelle øktvariablene.

Andre data forblir intakte.

Oppsummering

  • Informasjonskapsler er små filer lagret på brukerens datamaskin
  • Informasjonskapsler kan kun leses fra det utstedende domenet
  • Informasjonskapsler kan ha en utløpstid, hvis den ikke er angitt, utløper informasjonskapselen når nettleseren lukkes
  • Økter er som globale variabler lagret på serveren
  • Hver økt får en unik identifikasjons-ID som brukes til å spore variablene for en bruker.
  • Både informasjonskapsler og økter må startes før noen HTML-tagger er sendt til nettleseren.