[Powered by Google Translate] [PHP Sessions]
[Tommy MacWilliam, Harvard University]
[See on CS50.] [CS50.TV]
Sessions PHP saab rakendada funktsionaalsuse
nagu kasutaja sisselogimise, veebi app.
PHP istungid võimaldavad teil seostada teave
koos kasutaja kogu sirvimisseansil
mitte lihtsalt ühel leheküljel.
See tähendab, kui kasutaja külastab erinevaid PHP lehekülgi, mis moodustavad oma veebilehel,
tahes teabe istungil jätkuvad.
See tähendab, et andmed salvestatakse sessiooni ühel lehel
saab hiljem juurde teisele lehele.
Teabe säilitamise istung on lihtne,
ja me teeme seda läbi dollari märk, rõhutavad, kapitali SESSION muutuja.
Dollar märk, rõhutavad, SESSION-nagu dollari märk, rõhutavad, GET
ja dollari märk, rõhutavad, post-
on assotsiatiivne massiiv koosneb põhiväärtus paari.
Nii saame kasutada süntaksi nagu dollari märk, rõhutavad, sessiooni
sulg, quote, foo, quote, sulg, võrdne quote, baar, quote-
Väärtuse salvestamiseks "bar" võti "foo".
Kuid enne, kui me saame kirjutada või lugeda sessiooni massiivi
me vajame helistada lisafunktsiooni-
istungil rõhutada, start () -
ja see initsialiseerida istungil.
Võtame pilk näiteks.
Meie esimesel leheküljel, hello.php kasutab seansi väljund mõned andmed kasutajale.
Pea meeles, et me peame kasutama session_start enne suudame iga sessioon andmed.
Nüüd me kasutame PHP isset teha kindlaks, kas võti on olemas
aastal $ _SESSION assotsiatiivne massiiv.
Kui see võti on olemas, mis tähendab, et kasutaja on sisse logitud,
nii näitame kasutaja nimi.
Kui seda võtit ei ole valitud, mis tähendab, et kasutaja ei ole sisse loginud veel
nii näitame lingi login.php.
Võtame pilk login.php.
Siia, meil on ühe HTML kujul ühe sisend.
Vormi tegevuse atribuut on $ _SERVER ['PHP_SELF "]
ja see tähendab lihtsalt seda, et me tahame, et vorm tuleb esitada jooksva faili
mis antud juhul on login.php.
Lähme tagasi üles selle faili.
Kui kasutaja esitatud kujul, siis $ _POST ['nimi'] tuleb kehtestada.
Lisateavet HTML vormide ja post,
kontrollige PHP Web Development video.
Juhul, kui kasutaja ei sisesta vorm,
me tahaks kirjutada väärtus, et nad kirjutasid sisse istungil.
Nüüd saame suunata kasutaja hello.php.
Kuna meil salvestatud kasutaja sisestada istungil
hello.php ei pääse väärtus, mis oli seatud login.php.
Nii vaatame selle läbi veebibrauseri.
Esiteks, me navigeerida http://localhost/hello.php.
Me näeme siin, et me pole veel sisse loginud,
niiet kliki login link, mis suunab meid login.php.
Olgu, ma kirjuta oma nimi, mis seejärel salvestatakse sessiooni.
Suurepärane! Nüüd näeme oma panuse login.php on hello.php kaudu istungil.
Niisiis, kuidas logib kasutaja välja?
Noh, et logida kasutaja, me lihtsalt salvestatud väärtuse seansi nime.
Nii logida kasutaja välja, me lihtsalt vaja eemaldada, et nimi võti
alates sessiooni massiivi.
Võtame pilk see viimane fail, logout.php.
Veelkord, me vajame helistada session_start ()
enne, kui me ei saa midagi teha sessiooni seotud.
Nüüd me lihtsalt helistada session_destroy ()
mis hoolitseb vabanemiseks kõik andmed istung
ja siis suunata kasutaja tagasi hello.php.
Nii et kui ma klõpsa Logi välja linki
näeme, et server on unustanud, kes ma olen,
ja ma ei ole enam sisse logitud
Mis siis siin toimub all kapuuts?
Selleks, et saada käitumist me nägime,
Meie server peab tegema 2 asja.
Esiteks server vajab kuidagi talletada andmeid sessiooni.
Erinevad PHP faile, mis moodustavad veebilehel
teostatakse eraldi invocations PHP tõlk
nii kohaliku muutuja ei saa jagada nende vahel.
Selle asemel, server vajab säilitada meie seansiandmed
mõnes kohas, et mitu. php faile pääseb.
Teiseks, server vajab siduda sessiooni andmeid ainult minu Interneti-seansi.
Kui ma sisse logida Facebook,
tõenäoliselt on olemas miljoneid teisi inimesi ka sisse loginud Facebook samal ajal.
Aga server vajab kuidagi seostada minu andmed
minu praegune seanss ja kellegi andmed teise istungjärgu.
Õnneks autorid PHP mõelnud kõike seda meile,
nii et me ei vaja rakendada seda ise.
Aga võtame pilk PHP teeb vaikimisi.
Kui ma külastan PHP leht, mis sisaldab session_start esmakordselt,
PHP genereerib suure juhuslik väärtus.
Kuni session_destroy nimetatakse-või ma ei külasta iga PHP selle saidi lehekülgede jaoks while-
et juhuslik ja ilmselt ainulaadne väärtus on seotud minuga.
Nii server on mõned välja selgitada minu sirvimisseansil
mitte kellegi teise.
Me ei saa võtta pilk praeguse seansi ID
kasutades PHP funktsioon, session_id.
Siin me lihtsalt kirjutamine väärtus meie sessiooni identifikaator.
Nii et kui me uuesti sisse logida näiteks web app,
ja nüüd navigeerida sessid.php,
me näeme selle pika märgijada,
ja see on praeguse tunnus minu istungil
ja see on, kuidas server on jälgida, kes ma olen.
Okei, aga me oleme alles lahendatud pool probleem.
Muidugi, server on nüüd mingi viis kindlaks mina,
aga kui ma külastada teisele lehele, server vajab uuesti kasutada sama tunnuse
mitte tekitama uusi.
Pea meeles, kui ma tunnistada kohaliku muutuja foo.php
ja siis külastage bar.php,
bar.php on kuidagi võimalik teada, mis juhtus foo.php.
Nii vaikimisi PHP sessiooni rakendamine nõuab, et brauser meelde server
mis sessiooni ID kasutamiseks.
Seda rakendatakse kujul küpsis.
Cookie-lisaks on maitsev suupiste-
on lihtsalt väike tekstifail arvutis
et server saab kirjutada kaudu veebibrauser.
Nii et pärast PHP genereerib minu unikaalne sessiooni ID kaudu session_start,
see läheb ütlema veebilehitseja salvestada et tunnus kohalikul tekstifaili või küpsise.
Siis veebilehitseja lisab, et tunnus iga taotluse
et see annab server.
Nii et tõesti, veebiserver ei mäleta, kes ma olen.
Selle asemel, veebibrauser lihtsalt mäleta kordumatu tunnus
, mis oli loodud PHP ja siis pidevalt meelde tuletada server
mida see tunnus on.
Nii informatsiooni nagu minu kasutaja nimi on salvestatud server pole minu veebibrauser.
Brauser lihtsalt ütleb server, kus PHP säilitatakse seda teavet
nii PHP saab taastada.
Nii et tekib küsimus, kus on PHP, salvestades selle artikli eest?
Vaikimisi PHP salvestada istungil andmed
faili sees / tmp või "temp" kausta.
Selle faili nimi sisaldab sessiooni ID nii PHP saab kindlaks
mis faili lugeda ja kirjutada kaudu ainult sessiooni ID.
Hea küll. Nii avame Network sakk Chrome'i siluri
via mutrivõtme ikoon ülemises paremas.
Nüüd pea hello.php uuesti.
Olgem kliki HTTP taotluse hello.php
ja siis klõpsa päised.
Siin näeme, et cookie päises on võti nimega PHPSESSID,
või PHP sessiooni ID-väärtusega, mis on sama pikk string nägime
kui käisime sessid.php.
See on täpselt, kuidas brauser meenutas server mida seansi ID tuleks kasutada.
See on ka see HTTP päises.
Hea küll. Olgem pea tagasi terminali.
Olgem navigeerida / tmp, kus PHP on hoidmiseks sessiooni informatsioon vaikimisi.
Muidugi piisavalt, sees see ajutine kaust,
siin on fail, mis sisaldab täpselt sama sessiooni ID.
Kui me avada see fail, saame näha, kuidas PHP esindab minu istungil disk.
Siin string "Tommy" on salvestatud võtme nimi "
mis on täpselt see, mida me ootasime.
Ja see ülevaade seansse PHP.
Mida me nägime oli ainult default rakendamise istungid.
Tegelikult paljud veebilehed muuta vaikimisi
salvestada PHP istungid tõhusamalt
huvides parandada jõudlust.
Minu nimi on Tommy, ja see on CS50.
[CS50.TV]