PHP sesija i PHP kolačići s primjerom
⚡ Pametni sažetak
Kolačići i sesije u PHP-u čuvaju stanje u HTTP protokolu bez stanja, ali podatke pohranjuju na različite načine. Ovaj vodič objašnjava kako kolačići spremaju male datoteke na klijentu, kako sesije čuvaju podatke na poslužitelju i kako ih stvoriti, čitati i uništiti pomoću funkcionalnog koda.

Što je Cookie?
Kolačić je mala datoteka maksimalne veličine 4KB koju web poslužitelj pohranjuje na klijentsko računalo.
Nakon što je kolačić postavljen, svi zahtjevi stranice koji slijede vraćaju naziv i vrijednost kolačića.
Kolačić se može čitati samo s domene s koje je izdan. Na primjer, kolačić postavljen pomoću domene www.guru99.com ne može se čitati s domene career.guru99.com.
Većina web stranica na internetu prikazuje elemente iz drugih domena kao što je oglašavanje. Domene koje poslužuju ove elemente također mogu postaviti vlastite kolačiće. Oni su poznati kao kolačići treće strane.
Kolačić koji kreira korisnik može biti vidljiv samo njemu. Drugi korisnici ne mogu vidjeti njegovu vrijednost.
Većina web preglednika ima opcije za onemogućavanje kolačića, kolačića trećih strana ili oboje.
Ako je to slučaj, PHP odgovara prosljeđivanjem tokena kolačića u URL.
Donji dijagram ilustrira kako funkcioniraju kolačići.
Ovdje,
1) Korisnik zatraži stranicu koja pohranjuje kolačiće
2) Poslužitelj postavlja kolačić na računalo korisnika
3) Ostali zahtjevi stranice od korisnika vratit će naziv i vrijednost kolačića
Zašto i kada koristiti kolačiće?
- HTTP je protokol bez stanja; kolačići nam omogućuju track stanje aplikacije pomoću malih datoteka pohranjenih na korisnikovom računalu. Putanja gdje se kolačići pohranjuju ovisi o pregledniku. Internet Explorer ih obično pohranjuje u mapu Privremene internetske datoteke.
- Personalizacija korisničkog iskustva – to se postiže tako da se korisnicima omogući odabir vlastitih preferencija. Zahtjevi za stranice koji slijede personalizirani su na temelju preferencija postavljenih u kolačićima.
- Tracking stranice koje je korisnik posjetio
Stvaranje kolačića
Pogledajmo sada osnovnu sintaksu koja se koristi za stvaranje kolačića.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
OVDJE,
- "setcookie" je PHP funkcije koristi se za izradu kolačića.
- „cookie_name“ je naziv kolačića koji će poslužitelj koristiti prilikom dohvaćanja njegove vrijednosti iz varijable polja $_COOKIE. Obavezan je.
- „cookie_value“ je vrijednost kolačića i obavezna je.
- „[expiry_time]” je opcionalno; može se koristiti za postavljanje vremena isteka kolačića, na primjer 1 sat. Vrijeme se postavlja pomoću PHP funkcije time() plus ili minus broj sekundi veći od 0, tj. time() + 3600 za 1 sat.
- “[cookie_path]” nije obavezan; može se koristiti za postavljanje puta kolačića na poslužitelju. Kosa crta naprijed “/” znači da će kolačić biti dostupan na cijeloj domeni. Poddirektorije ograničavaju pristup kolačića na poddomenu.
- „[domena]“ je opcionalno; može se koristiti za definiranje hijerarhije pristupa kolačićima, tj.
www.cookiedomain.comznači cijelu domenu dokwww.sub.cookiedomain.comograničava pristup kolačićawww.sub.cookiedomain.comi njegove poddomene. - „[secure]” je opcionalno; zadana vrijednost je false. Koristi se za određivanje šalje li se kolačić putem HTTPS-a ako je postavljen na true ili HTTP-a ako je postavljen na false.
- "[httponly]" je opcionalno. Ako je postavljeno na true, tada će skriptni jezici na strani klijenta, kao što su JavaScript ne može pristupiti kolačiću.
Bilješka: PHP funkcija setcookie mora se izvršiti prije HTML početne oznake.
Pogledajmo sada primjer koji koristi kolačiće.
Napravit ćemo osnovni program koji nam omogućuje pohranjivanje korisničkog imena u kolačić koji istječe nakon šezdeset sekundi.
Kod u nastavku prikazuje implementaciju gornjeg primjera "cookies.php".
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Izlaz:
the cookie has been set for 60 seconds
Dohvaćanje vrijednosti kolačića
Napravite drugu datoteku pod nazivom “cookies_read.php” sa sljedećim kodom.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
Izlaz:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Napomena: $_COOKIE je PHP ugrađena superglobalna varijabla. Sadrži nazive i vrijednosti svih postavljenih kolačića.
Broj kolačića i njihova veličina ograničeni su preglednikom, obično oko 50 kolačića po domeni i 4 KB po kolačiću.
Testiranje naše aplikacije. Pretpostavimo da ste spremili svoje PHP datoteke u mapu phptuts.
- Korak 1 – otvorite web preglednik i unesite URL http://localhost/phptuts/cookies_read.php
Napomena: Prikazan je samo prazan niz
- Korak 2 – pregledajte URL http://localhost/phptuts/cookies.php
- Korak 3 – vratite se na prvu karticu, a zatim kliknite gumb za osvježavanje
Pričekajte minutu, a zatim ponovno kliknite gumb za osvježavanje. Kakve ste rezultate dobili?
Izbriši kolačiće
- Ako želite uništiti kolačić prije isteka vremena, tada postavite vrijeme isteka na vrijeme koje je već prošlo.
- Napravite novu datoteku pod nazivom cookie_destroy.php sa sljedećim kodom
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Ponovite korake od 1 do 3 iz gornjeg odjeljka o preuzimanju vrijednosti kolačića.
- Otvorite URL http://localhost/phptuts/cookie_destroy.php
- Prijeđi na URL http://localhost/phptuts/cookies_read.phpKakve rezultate prikazuje?
Što je sesija?
- Sesija je globalna varijabla pohranjena na poslužitelju.
- Svakoj sesiji dodjeljuje se jedinstveni ID koji se koristi za dohvaćanje pohranjenih vrijednosti.
- Kad god se kreira sesija, kolačić koji sadrži jedinstveni ID sesije pohranjuje se na korisničkom računalu i vraća se sa svakim zahtjevom poslužitelju. Ako klijentski preglednik ne podržava kolačiće, jedinstveni PHP ID sesije prikazuje se u URL.
- Sesije imaju kapacitet pohranjivanja relativno velike količine podataka u usporedbi s kolačićima.
- Vrijednosti sesije automatski se brišu kada se preglednik zatvori. Ako želite trajno pohraniti vrijednosti, trebali biste ih pohraniti u bazu podataka.
- Baš kao i varijabla polja $_COOKIE, varijable sesije pohranjene su u varijabli polja $_SESSION. Baš kao i kolačići, sesija se mora pokrenuti prije bilo koje HTML oznake.
Zašto i kada koristiti Sessions?
- Želite sigurnije pohraniti važne podatke poput korisničkog ID-a na poslužitelju gdje ih zlonamjerni korisnici ne mogu mijenjati.
- Želite proslijediti vrijednosti s jedne stranice na drugu.
- Želite alternativu kolačićima u preglednicima koji ne podržavaju kolačiće.
- Želite pohraniti globalne varijable na učinkovit i sigurniji način u usporedbi s njihovim prosljeđivanjem u URL.
- Razvijate seping aplikacija kao što je trgovinaping košarica koja mora privremeno pohraniti informacije kapaciteta većeg od 4KB.
Stvaranje sesije
Da biste kreirali sesiju, prvo morate pozvati PHP funkciju session_start, a zatim pohraniti vrijednosti u varijablu $_SESSION.
Pretpostavimo da želimo znati koliko je puta stranica učitana. Za to možemo koristiti sesiju.
Donji kod pokazuje kako kreirati i dohvaćati vrijednosti iz sesija.
<?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']; ?>
Izlaz:
You are visitor number 1
Uništavanje varijabli sesije
Funkcija session_destroy() se koristi za uništavanje cijele PHP sesije.
Ako želite uništiti samo jednu stavku sesije, koristite funkciju unset().
Kôd u nastavku ilustrira kako koristiti obje metode.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
session_destroy uklanja sve podatke sesije, uključujući kolačiće povezane sa sesijom.
unset oslobađa samo pojedinačne varijable sesije. Ostali podaci ostaju netaknuti.




