[Powered by Google Translate] [PHP Sessions] [Tommy MacWilliam, Harvardin yliopisto] [Tämä on CS50.] [CS50.TV] Sessions PHP voidaan toteuttaa toiminnallisuus, kuten käyttäjien sisään, Web App. PHP istuntoja avulla voit liittää tietoja kanssa käyttäjän koko selainistunnosta eikä vain yhden sivun. Niin se tarkoittaa, kun käyttäjä vierailee eri PHP-sivuja, jotka muodostavat sivuston, tietoja istuntoon jatkuu. Niin se tarkoittaa, että tallennettu data-istunnon yhden sivun voidaan myöhemmin käsiksi toisen sivun. Informaation tallentamiseksi istunto on helppoa, ja teemme niin kautta dollarin merkki, alaviiva, pääoman istunnon muuttuja. Dollarin merkki, alaviiva, istunto aivan kuten dollarin merkki, alaviiva, GET ja dollarin merkki, alaviiva, POST- on tällainen taulukko koostuu keskeisten arvo-pareja. Joten voimme käyttää syntaksin kuten dollarin merkki, alaviiva, Session kiinnike, lainaus, foo, lainaus, kiinnike, vastaa, lainaus, baari, lainaus- Tallenna arvo "bar" avain "foo". Kuitenkin ennen kuin voimme kirjoittaa tai lukea istunnon array, meidän täytyy soittaa erityinen toiminto- istunto, alaviiva, aloita, () - ja tämä alustaa session. Joten katsotaanpa katsomaan esimerkki. Ensimmäinen sivu, hello.php, käyttää istunnon lähtö joitakin tietoja käyttäjälle. Muista, meidän täytyy käyttää session_start ennen kuin voimme käyttää mitä tahansa istunnon tiedot. Nyt käytämme PHP: n isset onko avain on olemassa in $ _SESSION assosiatiivinen array. Jos tämä avain on olemassa, se tarkoittaa, että käyttäjä on kirjautunut sisään, joten näytämme käyttäjän nimi. Jos tämä ei ole määritetty, se tarkoittaa, että käyttäjä ei ole vielä kirjautunut sisään, joten näytämme linkin login.php. Joten katsotaanpa katsomaan login.php. Tänne, meillä on yksi HTML-lomakkeen, jossa on yksi panos. Lomakkeen toiminta määrite on $ _SERVER ['PHP_SELF'], ja tämä tarkoittaa yksinkertaisesti sitä, että haluamme lomake toimitetaan nykyisen tiedoston, joka tässä tapauksessa on login.php. Joten mennään takaisin alkuun tämän tiedoston. Jos käyttäjä lähettänyt lomakkeen, sitten $ _POST ['nimi'] on asetettava. Lisätietoja HTML-lomakkeiden ja postitse tutustu PHP Web Development video. Siinä tapauksessa, että käyttäjä ei lähetä lomake, haluaisimme kirjoittaa arvon, että ne kirjoitetaan osaksi istuntoon. Nyt voimme ohjaa käyttäjän hello.php. Koska olemme tallennettu käyttäjän panosta istuntoon, hello.php voi käyttää arvoa, joka asetettiin login.php. Joten tarkistaa tämän selaimen. Ensinnäkin hyvin navigoida http://localhost/hello.php. Näemme tässä, että emme ole vielä kirjautunut sisään, joten katsotaanpa klikkaa login-linkkiä, joka ohjaa meitä login.php. Okei, minä kirjoita nimeäni, joka sitten tallennetaan istuntoon. Hienoa! Nyt voimme nähdä minun panosta login.php on hello.php kautta istuntoon. Entä käyttäjä kirjataan ulos? No, jotta kirjautua käyttäjälle, me yksinkertaisesti tallennettu arvo otetaan istunnon nimi. Joten kirjautua käyttäjän ulos, vaan meidän pitää poistaa, että niminäppäimen alkaen istunto array. Joten katsomaan tätä viimeistä tiedostoa, logout.php. Jälleen kerran, meidän täytyy soittaa session_start () ennen kuin voimme tehdä mitään istuntoon liittyvää. Nyt voimme yksinkertaisesti soittaa session_destroy (), joka hoitaa päästä eroon kaikista istunnon tietojen ja sitten ohjaa käyttäjän takaisin hello.php. Joten jos klikkaan Kirjaudu ulos-linkkiä, voimme nähdä, että palvelin on unohtanut kuka olen, ja olen enää kirjautunut sisään Joten mitä täällä tapahtuu alla huppu? Jotta saat käyttäytymistä me vain näki, meidän palvelin tarvitsee tehdä 2 asioita. Ensinnäkin palvelimen on jotenkin tallentaa tiedot istunnossa. Eri PHP-tiedostoja, jotka sisältävät sivusto toteutetaan erillisinä invocations of PHP tulkin joten paikallinen muuttuja ei voi jakaa keskenään. Sen sijaan, palvelin tarvitsee tallentaa myös istunnon tiedot jossain paikassa, että useita. php-tiedostoja voi käyttää. Toiseksi palvelin tarvitsee liittää istunnon tiedot vain minun selausistunnon. Kun kirjaudun sisään Facebookiin, on luultavasti miljoonat muut ihmiset myös kirjautunut Facebook samaan aikaan. Mutta palvelin tarvitsee tapa assosioida tietoni minun nykyisen istunnon ja jonkun toisen tietoja toiseen istuntoon. Onneksi laatijat PHP ajatellut kaiken tämän meille, joten meidän ei tarvitse toteuttaa tämän itse. Mutta katsotaanpa katsomaan mitä PHP tekee oletuksena. Kun vierailen PHP sisältävä sivu session_start ensimmäistä kertaa, PHP tulee suuri satunnaisen arvon. Kunnes session_destroy kutsutaan-tai en käydä mitään PHP-sivuston sivuilla jonkin aikaa- että satunnainen ja lienee ainutlaatuinen arvo liitetään minua. Näin palvelin on jotenkin tunnistaa minun selainistunnosta toisin kuin jonkun toisen. Voimme katsomaan nykyisen istunnon ID käyttäen PHP funktio, session_id. Täällä me yksinkertaisesti syöttöä arvoa meidän session tunnisteen. Joten jos me taas kirjautua esimerkiksi web app, ja nyt navigoida sessid.php, näemme tämän pitkän merkkijonon, ja se on nykyinen tunniste istuntoni, ja niin palvelin pitää kirjaa kuka olen. Okei, mutta olemme vain ratkaista puoli ongelmaa. Toki palvelin on nyt jotenkin tunnistaa minua, mutta kun käyn toiselle sivulle, palvelin tarvitsee uudelleen, että sama tunniste pikemminkin kuin tuottaa uusi. Muista, jos julistan paikallismuuttujan foo.php Käy sitten bar.php, bar.php ei ole mitään keinoa tietää, mitä tapahtui foo.php. Joten oletus PHP istunto täytäntöönpano edellyttää, että selain muistuttaa palvelimen joka istuntotunnus käyttää. Tämä toteutetaan muodossa evästeen. Cookie-sen lisäksi, että herkullinen välipala- on yksinkertaisesti pieni tekstitiedosto tietokoneen että palvelin voi kirjoittaa Web-selaimen kautta. Niin sen jälkeen PHP luo minun ainutlaatuinen istunnon tunnus kautta session_start, se tulee kertoa verkkoselain tallentaa että tunnisteen paikallisen tekstitiedosto, tai evästeen. Sitten web-selain sisältää että tunnisteen jokaiseen pyyntöön että se tekee palvelimelle. Siis todella, web-palvelin ei ole muistaa, kuka olen. Sen sijaan, web-selain on yksinkertaisesti muistaa yksilöllinen tunniste joka syntyy PHP ja sitten jatkuvasti muistuttaa palvelin mitä se tunniste on. Näin tietoja, kuten minun käyttäjätunnus on tallennettu palvelimelle ole minun selaimella. Selain yksinkertaisesti kertoo palvelin, jossa PHP tallennetut tiedot joten PHP noutaa sen. Joten herää kysymys, missä on PHP todella tallentaa tämän tiedon? Oletuksena PHP tallentaa istunnon tiedot tiedoston sisällä / tmp, tai "temp" kansioon. Nimi että tiedosto sisältää istunnon tunnus niin PHP voi määrittää mikä tiedosto lukea ja kirjoittaa päässä kautta ainoastaan ​​istunnon tunnus. Selvä. Joten avaa Network-välilehti Chromen debuggeri kautta jakoavainkuvaketta ylhäällä oikealla. Nyt suuntaamme hello.php uudelleen. Katsotaanpa klikkaa HTTP-pyynnön hello.php ja napsauta otsikot. Tässä näemme, että evästeen otsikko sisältää avain vieras PHPSESSID, tai PHP istunto ID-arvo, joka on saman pitkä jono näimme kun kävimme sessid.php. Tämä on täsmälleen, miten selain muistuttaa palvelin mitä istunnon tunnus tulisi käyttää. Se on myös sitä HTTP-otsikko. Selvä. Lähdetään takaisin terminaaliin. Katsotaanpa navigoida / tmp, jossa PHP on tallentaa istunnon tiedot oletuksena. Tosiaan, sisällä tämän väliaikaiseen kansioon, tässä on tiedosto, joka sisältää täsmälleen samoja istunnon tunnus. Jos me avata tätä tiedostoa, voimme nähdä, kuinka PHP edustaa istuntoni levyllä. Tässä merkkijono "Tommy" varastoidaan avaimen "nimi" joka on juuri odotimme. Ja se on katsaus istuntojen PHP. Mitä me vain näki oli vain oletus täytäntöönpanoa istuntoja. Itse asiassa monet sivustot muuttaa oletustoiminnasta tallentaa PHP istuntoja tehokkaammin edun suorituskyvyn parantamiseksi. Nimeni on Tommy, ja tämä on CS50. [CS50.TV]