PHP seanss ja PHP küpsised näitega

Mis on küpsis?

Küpsis on väike fail maksimaalselt 4KB, mille veebiserver klientarvutisse salvestab.

Kui küpsis on seadistatud, tagastavad kõik järgnevad lehepäringud küpsise nime ja väärtuse.

Küpsist saab lugeda ainult sellest domeenist, kust see on välja antud. Näiteks domeeni kasutades küpsisekomplekt www.guru99.com domeenist ei saa lugeda karrier.guru99.com.

Enamik Internetis olevaid veebisaite kuvab elemente muudest domeenidest, näiteks reklaamist. Neid elemente teenindavad domeenid võivad samuti seada oma küpsiseid. Neid nimetatakse kolmanda osapoole küpsisteks.

Kasutaja loodud küpsis on nähtav ainult talle. Teised kasutajad ei näe selle väärtust.

Enamikul veebibrauseritel on küpsiste, kolmanda osapoole küpsiste või mõlema keelamise võimalused.

Kui see on nii, siis PHP vastab, edastades URL-is oleva küpsise märgi.

Allpool näidatud diagramm illustreerib küpsiste toimimist.

Mis on küpsis

Siin

1) Kasutaja taotleb küpsiseid salvestavat lehte

2) Server seab küpsise kasutaja arvutisse

3) Muud kasutaja lehepäringud tagastavad küpsise nime ja väärtuse

Miks ja millal küpsiseid kasutada?

  • Http on olekuta protokoll; küpsised võimaldavad meil jälgida rakenduse olekut kasutaja arvutisse salvestatud väikeste failide abil. Küpsiste salvestamise tee sõltub brauserist. Internet Explorer salvestab need tavaliselt kausta Temporal Internet Files.
  • Kasutajakogemuse isikupärastamine – see saavutatakse, võimaldades kasutajatel valida oma eelistused. Järgmised soovitud leheküljed on isikupärastatud küpsistes seatud eelistuste alusel.
  • Kasutaja külastatud lehtede jälgimine

Küpsiste loomine

Vaatame nüüd küpsise loomisel kasutatavat põhisüntaksit.

<?php

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

?>

SIIN,

  • Php "setcookie" on PHP funktsioon kasutatakse küpsise loomiseks.
  • "cookie_name" on küpsise nimi, mida server kasutab selle väärtuse hankimisel massiivi muutujast $_COOKIE. See on kohustuslik.
  • "cookie_value" on küpsise väärtus ja selle kohustuslik väärtus
  • „[aegumisaeg]” on valikuline; seda saab kasutada küpsise aegumisaja määramiseks, näiteks 1 tund. Aeg määratakse PHP time() funktsioonide abil pluss või miinus sekundite arv, mis on suurem kui 0, st time() + 3600 1 tunniks.
  • "[cookie_path]" on valikuline; seda saab kasutada serveris küpsiste tee määramiseks. Kaldkriips “/” tähendab, et küpsis tehakse kättesaadavaks kogu domeenis. Alamkataloogid piiravad küpsiste juurdepääsu alamdomeenile.
  • "[domeen]" on valikuline, seda saab kasutada küpsise juurdepääsu hierarhia määratlemiseks, st www.cookiedomain.com tähendab kogu domeeni www.sub.cookiedomain.com piirab juurdepääsu küpsistele www.sub.cookiedomain.com ja selle alamdomeenid. Pange tähele, et alamdomeenil võib olla alamdomeen, kui tähemärkide koguarv ei ületa 253 tähemärki.
  • „[Turvaline]” on valikuline, vaikeväärtus on väär. Seda kasutatakse selleks, et määrata, kas küpsis saadetakse https kaudu, kui see on seatud väärtusele Tõene või http, kui see on seatud väärtusele Väär.
  • „[Httponly]” on valikuline. Kui see on seatud väärtusele Tõene, siis ainult kliendipoolsed skriptikeeled, st JavaScript ei pääse neile juurde.

Märge: php set cookie funktsioon tuleb käivitada enne HTML-i avamärgendit.

Vaatame nüüd näidet, mis kasutab küpsiseid.

Loome põhiprogrammi, mis võimaldab meil salvestada kasutajanime küpsisesse, mis aegub kümne sekundi pärast.

Allolev kood näitab ülaltoodud näite "cookies.php" rakendamist.

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

Väljund:

the cookie has been set for 60 seconds

Küpsise väärtuse toomine

Looge järgmine fail nimega "cookies_read.php" järgmise koodiga.

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

Väljund:

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

Märkus. $_COOKIE on PHP sisseehitatud superglobaalne muutuja.

See sisaldab kõigi seatud küpsiste nimesid ja väärtusi.

Väärtuste arv, mis

Massiiv $_COOKIE võib sisaldada oleneb failis php.ini määratud mälumahust.

Vaikeväärtus on 1 GB.

Meie rakenduse testimine.

Oletame, et olete salvestanud oma PHP-failid kausta phptus.

  • 1. samm – avage oma veebibrauser ja sisestage URL http://localhost/phptuts/cookies_read.php

Küpsise väärtuse toomine

Märkus. Kuvatud on ainult tühi massiiv

  • 2. samm – sirvige URL-i http://localhost/phptuts/cookies.php

Küpsise väärtuse toomine

  • 3. samm – lülituge tagasi esimesele vahelehele, seejärel klõpsake nuppu Värskenda

Küpsise väärtuse toomine

Oodake minut, seejärel klõpsake uuesti värskendamise nuppu. Milliseid tulemusi saite?

Kustuta küpsised

  • Kui soovite küpsise enne selle aegumist hävitada, määrake aegumisajaks aeg, mis on juba möödas.
  • Looge järgmise koodiga uus fail nimega cookie_destroy.php
<?php

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

?>
  • Korrake ülaltoodud küpsiste väärtuste toomise jaotise samme 1 kuni 3.
  • Avage URL http://localhost/phptuts/cookie_destroy.php
  • Lülituge URL-ile http://localhost/phptuts/cookies_read.php milliseid tulemusi see kuvab?

Mis on seanss?

  • Seanss on serverisse salvestatud globaalne muutuja.
  • Igale seansile määratakse kordumatu ID, mida kasutatakse salvestatud väärtuste toomiseks.
  • Iga kord, kui seanss luuakse, salvestatakse kasutaja arvutisse unikaalset seansi ID-d sisaldav küpsis, mis tagastatakse iga päringuga serverile. Kui kliendibrauser küpsiseid ei toeta, kuvatakse URL-is unikaalne php-seansi ID
  • Seansid suudavad salvestada suhteliselt palju andmeid võrreldes küpsistega.
  • Seansi väärtused kustutatakse automaatselt, kui brauser suletakse. Kui soovite väärtused püsivalt salvestada, peaksite need andmebaasi salvestama.
  • Nii nagu massiivi muutuja $_COOKIE, salvestatakse seansi muutujad massiivi muutujasse $_SESSION. Sarnaselt küpsistega peab seanss algama enne HTML-i silte.

Miks ja millal seansse kasutada?

  • Soovite olulist teavet, nagu kasutaja ID, turvalisemalt serverisse salvestada, kus pahatahtlikud kasutajad ei saa nendega toime tulla.
  • Soovite väärtusi ühelt lehelt teisele edastada.
  • Soovite küpsistele alternatiivi brauserites, mis küpsiseid ei toeta.
  • Soovite salvestada globaalseid muutujaid tõhusamalt ja turvalisemalt, võrreldes nende URL-is edastamisega
  • Arendate rakendust, näiteks ostukorvi, mis peab ajutiselt salvestama teavet mahuga üle 4 KB.

Seansi loomine

Seansi loomiseks peate esmalt kutsuma PHP funktsiooni session_start ja seejärel salvestama oma väärtused massiivi muutujasse $_SESSION.

Oletame, et tahame teada, mitu korda leht on laaditud, saame selleks kasutada seanssi.

Allolev kood näitab, kuidas seanssidest väärtusi luua ja hankida

<?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'];

?>

Väljund:

You are visitor number 1

Seansi muutujate hävitamine

Funktsiooni session_destroy() kasutatakse kogu Php seansi muutujate hävitamiseks.

Kui soovite hävitada ainult seansi üksiku üksuse, kasutage funktsiooni unset().

Allolev kood illustreerib mõlema meetodi kasutamist.

<?php

 session_destroy(); //destroy entire session 

?>
<?php

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

?>

Session_destroy eemaldab kõik seansi andmed, sealhulgas seansiga seotud küpsised.

Unset vabastab ainult üksikud seansi muutujad.

Muud andmed jäävad puutumata.

kokkuvõte

  • Küpsised on väikesed failid, mis salvestatakse kasutaja arvutisse
  • Küpsiseid saab lugeda ainult väljastanud domeenilt
  • Küpsistel võib olla aegumisaeg, kui see pole määratud, aegub küpsis brauseri sulgemisel
  • Seansid on nagu serverisse salvestatud globaalsed muutujad
  • Igale seansile antakse kordumatu identifitseerimis-ID, mida kasutatakse kasutaja muutujate jälgimiseks.
  • Nii küpsised kui ka seansid tuleb käivitada enne HTML-märgendite saatmist brauserisse.