PHP sesija i PHP kolačići s primjerom
Što je Cookie?
Kolačić je mala datoteka maksimalne veličine 4 KB koju web poslužitelj pohranjuje na klijentskom računalu.
Nakon što je kolačić postavljen, svi zahtjevi stranice koji slijede vraćaju naziv i vrijednost kolačića.
Kolačić se može pročitati samo s domene s koje je izdan. Na primjer, kolačić postavljen pomoću domene www.guru99.com ne može se čitati iz 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će strane ili oboje.
Ako je to slučaj tada PHP odgovara prosljeđivanjem tokena kolačića u URL-u.
Donji dijagram ilustrira kako funkcioniraju kolačići.
Ovdje,
1) Korisnik traž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 praćenje stanja aplikacije pomoću malih datoteka pohranjenih na računalu korisnika. Put kojim se kolačići pohranjuju ovisi o pregledniku. Internet Explorer ih obično pohranjuje u mapu Temporal Internet Files.
- Personalizacija korisničkog iskustva – to se postiže dopuštanjem korisnicima da odaberu svoje postavke. Stranice koje se traže da slijede personalizirane su na temelju postavljenih postavki u kolačićima.
- Praćenje stranica 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,
- Php "setcookie" je PHP funkcije koristi se za izradu kolačića.
- “cookie_name” je naziv kolačića koji će poslužitelj koristiti kada dohvaća njegovu vrijednost iz varijable polja $_COOKIE. To je obavezno.
- “cookie_value” je vrijednost kolačića i njegova obavezna vrijednost
- “[vrijeme_isteka]” nije obavezno; može se koristiti za postavljanje vremena isteka kolačića kao što je 1 sat. Vrijeme se postavlja korištenjem PHP time() funkcija 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]” nije obavezna, može se koristiti za definiranje hijerarhije pristupa kolačićima, tj.
www.cookiedomain.com
znači cijelu domenu dokwww.sub.cookiedomain.com
ograničava pristup kolačićawww.sub.cookiedomain.com
i njegove poddomene. Imajte na umu da je moguće imati poddomenu poddomene sve dok ukupni broj znakova ne prelazi 253 znaka. - “[sigurno]” nije obavezno, zadana postavka je lažna. Koristi se za određivanje hoće li se kolačić poslati putem https-a ako je postavljen na true ili http-a ako je postavljen na false.
- “[Httponly]” nije obavezan. Ako je postavljeno na true, tada samo skriptni jezici na strani klijenta, tj JavaScript ne može im pristupiti.
Bilješka: funkcija php set cookie mora se izvršiti prije HTML uvodne oznake.
Pogledajmo sada primjer koji koristi kolačiće.
Napravit ćemo osnovni program koji nam omogućuje spremanje korisničkog imena u kolačić koji istječe nakon deset 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đen u super globalnu varijablu.
Sadrži imena i vrijednosti svih postavljenih kolačića.
Broj vrijednosti koje
Niz $_COOKIE može sadržavati ovisno o veličini memorije postavljenoj u php.ini.
Zadana vrijednost je 1 GB.
Testiranje naše aplikacije.
Pretpostavimo da ste spremili svoje PHP datoteke u mapu phptus.
- Korak 1 – otvorite svoj 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.
- Stvorite 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 dohvaćanju vrijednosti kolačića.
- Otvorite URL http://localhost/phptuts/cookie_destroy.php
- Prebacite se na URL http://localhost/phptuts/cookies_read.php kakve 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.
- Svaki put kada se kreira sesija, kolačić koji sadrži jedinstveni ID sesije pohranjuje se na korisničko računalo i vraća sa svakim zahtjevom poslužitelju. Ako preglednik klijenta ne podržava kolačiće, jedinstveni ID php sesije prikazuje se u URL-u
- 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 informacije poput korisničkog ID-a na poslužitelju gdje ih zlonamjerni korisnici ne mogu ometati.
- Želite proslijediti vrijednosti s jedne stranice na drugu.
- Želite alternativu kolačićima na preglednicima koji ne podržavaju kolačiće.
- Želite pohraniti globalne varijable na učinkovit i sigurniji način u usporedbi s prosljeđivanjem u URL-u
- Razvijate aplikaciju kao što je košarica za kupnju koja mora privremeno pohraniti podatke kapaciteta većeg od 4KB.
Stvaranje sesije
Kako biste kreirali sesiju, prvo morate pozvati funkciju PHP session_start, a zatim pohraniti svoje vrijednosti u varijablu polja $_SESSION.
Pretpostavimo da želimo znati koliko je puta stranica učitana, za to možemo koristiti sesiju.
Kod u nastavku pokazuje kako stvoriti i dohvatiti vrijednosti iz sesija
<?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']; ?>
Izlaz:
You are visitor number 1
Uništavanje varijabli sesije
Funkcija session_destroy() koristi se za uništavanje cijelih varijabli 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 o sesiji uključujući kolačiće povezane sa sesijom.
Poništavanje postavljanja oslobađa samo pojedinačne varijable sesije.
Ostali podaci ostaju netaknuti.
Rezime
- Kolačići su male datoteke pohranjene na računalu korisnika
- Kolačići se mogu čitati samo s domene izdavanja
- Kolačići mogu imati vrijeme isteka, ako ono nije postavljeno, tada kolačić ističe kada se preglednik zatvori
- Sesije su poput globalnih varijabli pohranjenih na poslužitelju
- Svaka sesija dobiva jedinstveni identifikacijski ID koji se koristi za praćenje varijabli za korisnika.
- I kolačići i sesije moraju se pokrenuti prije nego što se HTML oznake pošalju pregledniku.