[Powered by Google Translate] [PHP Sessions]
[Tommy MacWilliam, a Harvard Egyetem]
[Ez a CS50.] [CS50.TV]
Sessions a PHP használható végrehajtásához funkcionalitás,
mint például a felhasználói bejelentkezések, a web app.
PHP ülések lehetővé teszik, hogy a társult adatok
A felhasználó teljes böngészés
ahelyett, hogy egyszerűen egy oldalon.
Tehát ez azt jelenti, mint a felhasználó meglátogatja különböző PHP oldalak teszik fel a honlapon,
minden olyan információt az ülésen továbbra is fennállnak.
Ez azt jelenti, hogy a tárolt adatok a munkamenet egy oldallal
később elérhető egy másik oldalra.
Tárolja az adatokat a munkamenet egyszerű,
és mi ezt át a dollár jelet, aláhúzás, a tőke SESSION változót.
Dollár jelet, aláhúzás, SESSION-akárcsak dollár jelet, aláhúzás, GET
és a dollár jelet, aláhúzás, POST-
egy asszociatív tömb, ami kulcs-érték pár.
Így tudjuk használni syntax-, mint a dollár jel, aláhúzás, SESSION,
konzol, idézet, ize, idézet, konzol, egyenlő, idézet, bár, quote-
az érték tárolásához "bar" a legfontosabb "foo".
Mielőtt azonban írni, vagy olvasni a munkamenet tömb,
akkor kell hívni egy speciális funkció-
ülés, aláhúzás, start () -
és ez inicializálja az ülésen.
Szóval vessünk egy pillantást egy példát.
Az első oldal, hello.php, használja a munkamenet kimenet néhány adatot a felhasználó számára.
Ne feledje, akkor kell használni session_start előtt tudunk hozzáférni a munkamenet adatok.
Most már a PHP isset annak meghatározására, hogy a kulcs létezik
a $ _SESSION asszociatív tömb.
Ha ez a kulcs létezik, azt jelenti, hogy a felhasználó bejelentkezett,
így fogunk megjeleníti a felhasználó nevét.
Ha ez a kulcs nincs beállítva, akkor azt jelenti, hogy a felhasználó még nem jelentkezett be még,
így akkor megjelenik egy link login.php.
Szóval vessünk egy pillantást login.php.
Itt lent, van egy HTML form egyetlen input.
Az űrlap akció attribútum $ _SERVER ['PHP_SELF'],
és ez egyszerűen azt jelenti, hogy szeretnénk az űrlapot kell benyújtani az aktuális kép,
ami ebben az esetben login.php.
Akkor menjünk vissza a tetejére ezt a fájlt.
Ha a felhasználó a formában, akkor a $ _POST ['name'] be kell állítani.
További információ a HTML formában és postai úton,
nézd meg a PHP Web Development video.
Abban az esetben, ha a felhasználó nem nyújt be az űrlapot,
szeretnénk írni, az értéket, hogy a beírt az ülésen.
Most már tudjuk átirányítani a felhasználót hello.php.
Mert már tárolt a felhasználó viszi be az ülés,
hello.php képes lesz elérni az értéket, amelyet beállított login.php.
Szóval ezt nézd meg a böngészőben.
Először is, akkor keresse meg http://localhost/hello.php.
Láthatjuk, hogy itt már nem jelentkezett be még,
úgyhogy kattintson a bejelentkezési hivatkozásra, amely átirányítja minket login.php.
Oké, akkor írja be a nevét, amely ezután tárolja az ülésen.
Nagyszerű! Most már látom a bemeneti login.php on hello.php keresztül ülésén.
Szóval, mi a fakitermelés a felhasználó ki?
Nos, annak érdekében, hogy jelentkezzen be a felhasználó, akkor egyszerűen a tárolt értéket a munkamenet nevét.
Tehát, hogy jelentkezzen be a felhasználó ki, egyszerűen el kell távolítani ezt a nevet kulcsot
A munkamenet tömbben.
Szóval vessünk egy pillantást az utolsó fájl logout.php.
Még egyszer, akkor kell hívni session_start ()
mielőtt bármit megtehet munkamenet kapcsolatban.
Most egyszerűen hívja session_destroy (),
amely gondoskodik megszabadulni az összes adatot a munkamenet
majd átirányítja a felhasználót vissza hello.php.
Tehát, ha rákattintok a Kilépés linkre,
láthatjuk, hogy a szerver elfelejtette, hogy ki vagyok,
és én már nem vagy bejelentkezve,
Szóval, mi folyik itt, a motorháztető alatt?
Annak érdekében, hogy a viselkedés láttunk,
szerverünk kell 2 dolog.
Először is, a kiszolgálónak, hogy valamilyen módon tárolja az adatokat az ülésen.
A különböző PHP fájlok tartalmazzák a weboldalon
végrehajtása külön felépíthető a PHP értelmező
így lokális változót nem lehet osztani közöttük.
Ehelyett a kiszolgáló kell tárolni a munkamenet adatokat
néhány helyen, hogy több. php fájlt elérheti.
Másodszor, a szerver kell társítani a munkamenet adatokat csak a böngészés.
Amikor be, hogy a Facebook,
ott valószínűleg több millió más ember is bejelentkezett a Facebook egyszerre.
De a kiszolgálónak valamilyen módon bevonják adataim
a mostani ülésen, és valaki más adatait egy másik ülésen.
Szerencsére, a szerzők a PHP gondoltam mindezt nekünk,
így nem kell hajtotta végre magunk.
De vessünk egy pillantást, amit PHP csinál alapértelmezés szerint.
Amikor meglátogat egy PHP oldal tartalmazza session_start az első alkalommal,
PHP generál egy nagy véletlen érték.
Amíg session_destroy hívják, vagy én ne keresse fel a PHP oldalt, hogy a helyszínen egy ideig-
hogy a véletlenszerű és valószínűleg egyedi érték társul velem.
Így a szerver valamilyen módon azonosítani a böngészési munkamenet
szemben valaki más.
Mi is vessünk egy pillantást az aktuális munkamenet azonosító
a PHP függvény, session_id.
Itt mi csak kimenetre értékét a munkamenet azonosító.
Tehát, ha ismét be a példában web app,
és most keresse meg sessid.php,
majd meglátjuk, ezt a hosszú karaktersorozatot,
és ez a jelenlegi azonosító az edzést,
és ez az, hogy a szerver nyomon követését, hogy ki vagyok.
Oké, de mi már csak megoldani a fele a problémát.
Persze, a szerver most már valamilyen módon azonosítani engem,
de amikor látogasson el egy másik oldalon, a kiszolgálónak, hogy újra, hogy ugyanazt az azonosítót
ahelyett, generál egy újat.
Ne feledje, ha kijelentem, helyi változó foo.php
majd keresse bar.php,
bar.php nem lehet tudni, mi történt foo.php.
Így az alapértelmezett PHP munkamenet alkalmazás megköveteli, hogy a böngésző emlékeztesse a szerver
amely session ID használható.
Ennek megvalósítása formájában egy sütit.
A cookie-amellett, hogy a finom uzsonna-
egyszerűen egy kis szöveges fájlt a számítógépen
, amelyet a szerver írni a webböngésző segítségével.
Így aztán PHP generál az egyedi session ID-n keresztül session_start,
ez fogja mondani a böngésző tárolni, hogy azonosító egy szöveges fájl, vagy egy sütit.
Ezután a web böngésző közé tartozik, hogy azonosítót minden kérést
hogy teszi a szerver.
Szóval tényleg, a web szerver nem emlékszik, hogy ki vagyok.
Ehelyett, a böngésző egyszerűen emlékezve az egyedi azonosító
hogy keletkezett a PHP, majd állandóan emlékeztetve a szerver
, mi az azonosító.
Így, információkat, mint a felhasználónév a szerveren tárolódnak nem a böngésző.
A böngésző egyszerűen megmondja a szervernek, ahol a PHP tárolják az információt
így PHP letölthetjük azt.
Ahhoz, hogy felmerül a kérdés, hol van a PHP tényleges tárolja ezt az információt?
Alapértelmezésben a PHP tárolja a session adatokat
egy fájlban belsejében a / tmp, vagy a "temp" mappát.
A fájl neve tartalmazza a session ID, így a PHP tudja határozni
melyik fájlt írni és olvasni a Via csak a session ID.
Rendben van. Szóval megnyitja a Hálózat fülre Chrome debugger
keresztül a csavarkulcs ikonra a jobb felső sarokban.
Most menj a hello.php újra.
Nézzük kattintson a HTTP kérést hello.php
, majd kattintson a fejlécek.
Itt azt látjuk, hogy a cookie-fejléc tartalmaz egy kulcsot nevű PHPSESSID,
vagy PHP session ID-egy értéket, hogy ugyanaz a hosszú sora láttunk
amikor meglátogattuk sessid.php.
Ez pontosan az, hogy a böngésző emlékeztetve a szerver milyen session ID kell használni.
Ez többek között azt egy HTTP fejléc.
Rendben van. Menjünk vissza a terminálhoz.
Nézzük keresse meg a / tmp könyvtárba, ahol a PHP tárolja a session információkat alapértelmezés szerint.
Valóban, belsejében ez ideiglenes mappába,
itt van egy fájl, ami tartalmazza a pontosan ugyanolyan session ID.
Ha megnyitja ezt a fájlt, akkor láthatjuk, hogy a PHP-t képviseli az ülésen a lemezen.
Itt a string "Tommy" van tárolva a kulcs neve, "
ami pontosan az, amit vártunk.
És ez egy áttekintést ülés PHP.
Amit most láttam csak az alapértelmezett végrehajtását ülés.
Tény, hogy sok websites átállítani az alapértelmezett viselkedés
tárolni PHP munkamenetek hatékonyabban
az az érdeke, javítja a teljesítményt.
A nevem Tommy, és ez CS50.
[CS50.TV]