PHP-økt og PHP-informasjonskapsler med eksempel
⚡ Smart oppsummering
Informasjonskapsler og økter i PHP bevarer begge tilstand på tvers av den tilstandsløse HTTP-protokollen, men lagrer data på forskjellige måter. Denne gjennomgangen forklarer hvordan informasjonskapsler lagrer små filer på klienten, hvordan økter lagrer data på serveren, og hvordan man oppretter, leser og sletter hver av dem med fungerende kode.

Hva er informasjonskapsel?
En informasjonskapsel er en liten fil med en maksimal størrelse på 4 KB 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 bare leses fra domenet den er utstedt fra. For eksempel kan ikke en informasjonskapsel som bruker domenet www.guru99.com 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.
Diagrammet nedenfor illustrerer hvordan informasjonskapsler fungerer.
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 track statusen til programmet ved hjelp av små filer lagret på brukerens datamaskin. Banen der informasjonskapslene lagres, avhenger av nettleseren. Internet Explorer lagrer dem vanligvis i mappen Midlertidige Internett-filer.
- Personliggjøring av brukeropplevelsen – dette oppnås ved å la brukerne velge sine preferanser. Sideforespørslene som følger er personlig tilpasset basert på preferansene som er angitt i informasjonskapslene.
- Tracking sidene som en bruker har besøkt
Opprette informasjonskapsler
La oss nå se på den grunnleggende syntaksen som brukes for å lage en informasjonskapsel.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
HER,
- «Setcookie» er PHP funksjon brukes til å lage informasjonskapselen.
- «cookie_name» er navnet på informasjonskapselen som serveren bruker når den henter verdien fra arrayvariabelen $_COOKIE. Dette er obligatorisk.
- «cookie_value» er verdien til informasjonskapselen, og den er obligatorisk.
- «[expiry_time]» er valgfritt; det kan brukes til å angi utløpstiden for informasjonskapselen, for eksempel 1 time. Tiden angis ved hjelp av PHP time()-funksjonen pluss eller minus et antall sekunder større enn 0, dvs. time() + 3600 for 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 tilgangshierarkiet for informasjonskapsler, f.eks.
www.cookiedomain.combetyr hele domenet menswww.sub.cookiedomain.combegrenser informasjonskapseltilgangen tilwww.sub.cookiedomain.comog dets underdomener. - «[sikker]» er valgfri; standardinnstillingen er usann. Den brukes til å avgjøre 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 sann, vil klientsideskriptspråk som JavaScript får ikke tilgang til informasjonskapselen.
OBS: PHP setcookie-funksjonen må kjøres før HTML-åpningstaggen.
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 seksti 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 innebygd superglobal variabel i PHP. Den inneholder navnene og verdiene til alle de angitte informasjonskapslene.
Antall informasjonskapsler og størrelsen på dem er begrenset av nettleseren, vanligvis rundt 50 informasjonskapsler per domene og 4 kB per informasjonskapsel.
Tester applikasjonen vår. La oss anta at du har lagret PHP-filene dine i en phptuts-mappe.
- Trinn 1 – åpne nettleseren din og skriv inn URL http://localhost/phptuts/cookies_read.php
Merk: Bare en tom matrise har blitt vist
- Trinn 2 – bla til URL http://localhost/phptuts/cookies.php
- Trinn 3 – bytt tilbake til den første fanen, og klikk deretter på oppdateringsknappen
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 fil med navnet cookie_destroy.php med følgende kode
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Gjenta trinn 1 til 3 fra avsnittet ovenfor om henting av informasjonskapselverdier.
- Åpne URL http://localhost/phptuts/cookie_destroy.php
- Bytt til URL http://localhost/phptuts/cookies_read.phpHvilke 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-økt-ID-en i URL.
- 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 ønsker å lagre viktig informasjon, som bruker-ID-en, på en sikrere måte på serveren der ondsinnede brukere ikke kan tukle med den.
- Du vil overføre verdier fra en side til en annen.
- Du ønsker et alternativ 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 inn i URL.
- Du er utvikletping en applikasjon som en butikkping handlekurv som midlertidig må lagre informasjon med en kapasitet større enn 4 KB.
Opprette en økt
For å opprette en økt må du først kalle PHP session_start-funksjonen og deretter lagre verdiene dine i arrayvariabelen $_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 session 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
Funksjonen session_destroy() brukes til å ødelegge hele PHP-sesjonen.
Hvis du bare vil ødelegge ett enkelt sesjonselement, bruker du unset()-funksjonen.
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 øktdataene, inkludert informasjonskapsler knyttet til økten.
`unset` frigjør bare de individuelle øktvariablene. Andre data forblir intakte.




