[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]