PHP-istunto ja PHP-evästeet esimerkin kanssa
Mikä on Cookie?
Eväste on pieni tiedosto, jonka enimmäiskoko on 4 kt ja jonka verkkopalvelin tallentaa asiakastietokoneelle.
Kun eväste on asetettu, kaikki seuraavat sivupyynnöt palauttavat evästeen nimen ja arvon.
Eväste voidaan lukea vain siitä verkkotunnuksesta, josta se on annettu. Esimerkiksi verkkotunnusta käyttävä evästejoukko www.guru99.com ei voida lukea verkkotunnuksesta karrier.guru99.com.
Suurin osa Internetin verkkosivustoista näyttää elementtejä muista verkkotunnuksista, kuten mainonnasta. Näitä elementtejä palvelevat verkkotunnukset voivat myös asettaa omia evästeitään. Näitä kutsutaan kolmannen osapuolen evästeiksi.
Käyttäjän luoma eväste voi olla näkyvissä vain hänelle. Muut käyttäjät eivät näe sen arvoa.
Useimmissa selaimissa on vaihtoehtoja estää evästeet, kolmannen osapuolen evästeet tai molemmat.
Jos näin on, PHP vastaa välittämällä URL-osoitteessa olevan evästetunnuksen.
Alla oleva kaavio havainnollistaa evästeiden toimintaa.
Täällä
1) Käyttäjä pyytää sivua, joka tallentaa evästeitä
2) Palvelin asettaa evästeen käyttäjän tietokoneelle
3) Muut käyttäjän sivupyynnöt palauttavat evästeen nimen ja arvon
Miksi ja milloin evästeitä tulee käyttää?
- Http on tilaton protokolla; evästeiden avulla voimme seurata sovelluksen tilaa käyttämällä pieniä tiedostoja, jotka on tallennettu käyttäjän tietokoneelle. Polku, johon evästeet tallennetaan, riippuu selaimesta. Internet Explorer tallentaa ne yleensä Temporal Internet Files -kansioon.
- Käyttökokemuksen mukauttaminen – tämä saavutetaan antamalla käyttäjien valita omat mieltymyksensä. Seuraavat pyydetyt sivut on mukautettu evästeissä asetettujen asetusten perusteella.
- Käyttäjän vierailemien sivujen seuranta
Evästeiden luominen
Tarkastellaan nyt evästeen luomiseen käytettyä perussyntaksia.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
TÄSSÄ,
- Php "setcookie" on PHP-toiminto käytetään evästeen luomiseen.
- "cookie_name" on evästeen nimi, jota palvelin käyttää noutaessaan sen arvon $_COOKIE-taulukkomuuttujasta. Se on pakollista.
- "cookie_value" on evästeen arvo ja sen pakollinen arvo
- "[expiry_time]" on valinnainen; sillä voidaan asettaa evästeen vanhenemisaika, kuten 1 tunti. Aika asetetaan PHP time()-funktioilla plus tai miinus sekuntien lukumäärä, joka on suurempi kuin 0 eli time() + 3600 1 tunnin ajan.
- "[cookie_path]" on valinnainen; sitä voidaan käyttää evästepolun asettamiseen palvelimelle. Kenoviiva "/" tarkoittaa, että eväste on saatavilla koko verkkotunnuksessa. Alihakemistot rajoittavat evästeiden pääsyä aliverkkotunnukseen.
- "[domain]" on valinnainen, sitä voidaan käyttää evästeiden käyttöhierarkian määrittämiseen, esim
www.cookiedomain.com
tarkoittaa koko verkkotunnustawww.sub.cookiedomain.com
rajoittaa evästeiden käyttöäwww.sub.cookiedomain.com
ja sen alialueet. Huomaa, että aliverkkotunnuksella voi olla aliverkkotunnus, kunhan merkkien kokonaispituus ei ylitä 253 merkkiä. - "[suojattu]" on valinnainen, oletusarvo on epätosi. Sitä käytetään määrittämään, lähetetäänkö eväste https:n kautta, jos sen arvo on tosi tai http, jos se on epätosi.
- "[Httponly]" on valinnainen. Jos se on tosi, vain asiakaspuolen komentosarjakielet, esim JavaKäsikirjoitus ei pääse niihin käsiksi.
Huomautus: php set cookie -toiminto on suoritettava ennen HTML-alkutunnistetta.
Katsotaanpa nyt esimerkkiä evästeiden käytöstä.
Luomme perusohjelman, jonka avulla voimme tallentaa käyttäjänimen evästeeseen, joka vanhenee kymmenen sekunnin kuluttua.
Alla oleva koodi näyttää yllä olevan esimerkin "cookies.php" toteutuksen.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
lähtö:
the cookie has been set for 60 seconds
Haetaan evästeen arvoa
Luo toinen tiedosto nimeltä "cookies_read.php" seuraavalla koodilla.
<?php print_r($_COOKIE); //output the contents of the cookie array variable ?>
lähtö:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Huomautus: $_COOKIE on PHP sisäänrakennettu superglobaali muuttuja.
Se sisältää kaikkien asetettujen evästeiden nimet ja arvot.
Niiden arvojen määrä, jotka
$_COOKIE-taulukko voi sisältää riippuen php.ini-tiedoston muistin koosta.
Oletusarvo on 1 Gt.
Testaa sovellustamme.
Oletetaan, että olet tallentanut PHP-tiedostosi phptus-kansioon.
- Vaihe 1 – avaa verkkoselain ja kirjoita URL-osoite http://localhost/phptuts/cookies_read.php
Huomautus: Vain tyhjä taulukko on näytetty
- Vaihe 2 – Selaa URL-osoitteeseen http://localhost/phptuts/cookies.php
- Vaihe 3 - Vaihda takaisin ensimmäiseen välilehteen ja napsauta sitten päivityspainiketta
Odota hetki ja napsauta sitten päivityspainiketta uudelleen. Mitä tuloksia sait?
Poista evästeet
- Jos haluat tuhota evästeen ennen sen vanhenemisaikaa, aseta vanhenemisajaksi aika, joka on jo kulunut.
- Luo uusi tiedosto nimeltä cookie_destroy.php seuraavalla koodilla
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Toista vaiheet 1–3 yllä olevasta evästearvojen noutamisesta.
- Avaa URL-osoite http://localhost/phptuts/cookie_destroy.php
- Vaihda URL-osoitteeseen http://localhost/phptuts/cookies_read.php mitä tuloksia se näyttää?
Mikä on istunto?
- Istunto on globaali muuttuja, joka on tallennettu palvelimelle.
- Jokaiselle istunnolle on määritetty yksilöllinen tunnus, jota käytetään tallennettujen arvojen noutamiseen.
- Aina kun istunto luodaan, yksilöllisen istuntotunnuksen sisältävä eväste tallennetaan käyttäjän tietokoneelle ja palautetaan jokaisen pyynnön yhteydessä palvelimelle. Jos asiakasselain ei tue evästeitä, yksilöllinen php-istuntotunnus näkyy URL-osoitteessa
- Istunnot pystyvät tallentamaan suhteellisen suuria tietoja evästeisiin verrattuna.
- Istuntoarvot poistetaan automaattisesti, kun selain suljetaan. Jos haluat tallentaa arvot pysyvästi, sinun tulee tallentaa ne tietokantaan.
- Aivan kuten $_COOKIE-taulukkomuuttuja, istunnon muuttujat tallennetaan $_SESSION-taulukkomuuttujaan. Evästeiden tapaan istunto on aloitettava ennen HTML-tageja.
Miksi ja milloin käyttää istuntoja?
- Haluat tallentaa tärkeät tiedot, kuten käyttäjätunnuksen, turvallisemmin palvelimelle, jossa pahantahtoiset käyttäjät eivät voi käsitellä niitä.
- Haluat siirtää arvoja sivulta toiselle.
- Haluat vaihtoehdon evästeille selaimissa, jotka eivät tue evästeitä.
- Haluat tallentaa globaaleja muuttujia tehokkaammin ja turvallisemmin kuin välittää ne URL-osoitteessa
- Olet kehittämässä sovellusta, kuten ostoskoria, johon on tallennettava väliaikaisesti tietoja, joiden kapasiteetti on suurempi kuin 4 kt.
Istunnon luominen
Jotta voit luoda istunnon, sinun on ensin kutsuttava PHP session_start-funktio ja tallennettava arvosi taulukkomuuttujaan $_SESSION.
Oletetaan, että haluamme tietää kuinka monta kertaa sivu on ladattu, voimme käyttää istuntoa tähän.
Alla oleva koodi näyttää, kuinka voit luoda ja noutaa arvoja istunnoista
<?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']; ?>
lähtö:
You are visitor number 1
Istuntomuuttujien tuhoaminen
Sessio_destroy()-funktiota käytetään tuhoamaan koko Php-istunnon muuttujat.
Jos haluat tuhota vain istunnon yksittäisen kohteen, käytä unset()-funktiota.
Alla oleva koodi havainnollistaa molempien menetelmien käyttöä.
<?php session_destroy(); //destroy entire session ?>
<?php unset($_SESSION['product']); //destroy product session item ?>
Session_destroy poistaa kaikki istuntotiedot mukaan lukien istuntoon liittyvät evästeet.
Unset vapauttaa vain yksittäiset istunnon muuttujat.
Muut tiedot säilyvät ennallaan.
Yhteenveto
- Evästeet ovat pieniä tiedostoja, jotka tallennetaan käyttäjän tietokoneelle
- Evästeitä voidaan lukea vain niiden myöntäneeltä verkkotunnukselta
- Evästeillä voi olla vanhentumisaika, jos sitä ei ole asetettu, eväste vanhenee, kun selain suljetaan
- Istunnot ovat kuin globaaleja muuttujia, jotka on tallennettu palvelimelle
- Jokaiselle istunnolle annetaan yksilöllinen tunnistustunnus, jota käytetään käyttäjän muuttujien seuraamiseen.
- Sekä evästeet että istunnot on aloitettava ennen kuin HTML-tunnisteet on lähetetty selaimeen.