[Powered by Google Translate] [PHP Sessions] [Tommy MacWilliam, Harvard University] [Þetta er CS50.] [CS50.TV] Fundur í PHP er hægt að nota til að innleiða virkni, eins notandi tenging, í vefur app. PHP fundur leyfa þér að tengja upplýsingar með öllu beit fundur notanda frekar en einfaldlega einni síðu. Svo það þýðir sem notandi heimsækir Ýmsir PHP síðum sem gera upp vefsíðu þína, allar upplýsingar í þinginu verði viðvarandi. Svo þýðir að að gögn sem geymd eru í setu með einni síðu geta seinna er hægt að nálgast með aðra síðu. Geyma upplýsingar í setu er auðvelt, og við gerum það í gegnum dollaramerki, undirstrika, höfuðborg breytu fundur. Dollaramerki, undirstrika, SESSION-bara eins og dollaramerki, undirstrika, GET og dollaramerki, undirstrika, POST- er tengin array sem samanstendur af helstu gildi pör. Svo við getum notað setningafræði eins dollaramerki, undirstrika, þinginu, krappi, quote, foo, quote, krappi, jafngildir, quote, bar, vitna- til að vista gildið "bar" í helstu "foo". En áður en við getum skrifað eða lesið frá fundi fylking, við munum þurfa að hringja í sérstaka aðgerð- fundur, undirstrika, byrja, () - og þetta mun frumstillt fundur. Þannig að við skulum taka a líta á dæmi. Fyrstu síðu okkar, hello.php, notar fundur að framleiðsla nokkur gögn til notanda. Mundu, við munum þurfa að nota session_start áður en við getum nálgast allar fundur gögn. Nú erum við að nota isset PHP til að ákvarða hvort til sé lykill í $ _SESSION tengin array. Ef þessi lykill er til, sem þýðir að notandinn hefur skráð í, þannig að við munum birta nafn notandans. Ef þessi lykill er ekki sett, sem þýðir að notandinn hefur ekki skráð sig inn, þannig að við munum birta tengil á login.php. Þannig að við skulum kíkja á login.php. Niður hér, höfum við eitt HTML formi með einum inntak. Aðgerð eiginleiki Eyðublaðið er $ _SERVER ['PHP_SELF'], og þetta þýðir einfaldlega að við viljum að honum það við skrána, , sem í þessu tilfelli, er login.php. Svo við skulum fara aftur til the toppur af þessari skrá. Ef notandinn sent inn mynd, þá $ _POST ['nafn'] skal setja. Fyrir frekari upplýsingar um HTML formum og staða, skrá sig út the PHP Web Development vídeó. Í tilviki sem notandinn gerði senda inn mynd, viljum við að skrifa gildið sem þeir slegið í inn í the fundur. Nú getum við áframsenda notandann til hello.php. Vegna þess að við höfum geymt inntak notandans í þinginu, hello.php vilja vera fær til aðgangur the gildi sem var sett í login.php. Svo skulum við athuga þetta út í a vefur flettitæki. Fyrst munum við sigla til http://localhost/hello.php. Við sjáum hér að við höfum ekki skráð sig inn, þannig að við skulum smella á innskráningu hlekkur, sem verður sent okkur til login.php. Allt í lagi, ég ætla að slá inn nafnið mitt, sem mun þá vera geymd í þinginu. Great! Nú getum við séð inntak mína frá login.php á hello.php gegnum fundi. Svo, hvað um skógarhögg notanda út? Jæja, til að skrá þig notanda í, við geymd einfaldlega gildi í nafni fundur. Svo til að skrá þig notanda út, þurfum við einfaldlega að fjarlægja þessi nafn takkann frá fundi fylkisins. Þannig að við skulum taka a líta á þetta síðasta lagið, logout.php. Enn og aftur, við munum þurfa að hringja session_start () áður en við getum gert hvað sem fundur tengjast. Nú getum við einfaldlega kalla session_destroy (), sem mun sjá um að fá losa af öllum gögnum í setu og síðan áframsenda notandi til baka hello.php. Svo ef ég smelli á Log Out Hlekkur, getum við séð að framreiðslumaður hefur gleymt hver ég er, og ég er ekki lengur skráður inn Svo hvað er að gerast hér undir hetta? Í því skyni að fá hegðun Við sáum bara, þjónninn okkar þarf að gera 2 hluti. First, the framreiðslumaður þarf að einhvern veginn geyma gögn í þinginu. Mismunandi PHP skrár sem samanstanda vefsíðu eru keyrð sem aðskildir invocations í PHP túlkur svo staðbundin breytu er ekki hægt að deila á milli þeirra. Þess í stað miðlara þarf að geyma fundur gögn okkar í sumum stað að margar. PHP skrár geta nálgast. Í öðru lagi, the framreiðslumaður þarf að tengja fundur gögn með aðeins minni beit fundur. Þegar ég tenging til Facebook, það eru sennilega milljónir af öðru fólki líka skráður inn á Facebook á sama tíma. En þjóninn þarf einhverja leið til að tengja gögn mín með núverandi setu mína og gögn einhvers annars með öðru fundur. Sem betur fer, höfundar PHP hugsaði um þetta allt fyrir okkur, þannig að við þurfum ekki að framkvæma eitthvað af þessu sjálf. En við skulum kíkja á hvað PHP er sjálfgefið. Þegar ég fer á PHP síðu sem inniheldur session_start í fyrsta skipti, PHP mun búa til stór hending. Þangað session_destroy er kallað-eða ég að fara ekki á PHP síður á því vefsvæði um stund- að handahófi og sennilega einstakt gildi verður í tengslum við mig. Þannig að framreiðslumaður hefur einhverja leið til að auðkenna beit fundur minn öfugt við einhvers annars. Við getum tekið að líta á núverandi fundur ID nota PHP virka, session_ID. Hér erum við einfaldlega outputting verðmæti fundur auðkenni okkar. Þannig að ef við tenging aftur til dæmis vefur app, og nú sigla til sessid.php, við munum sjá þetta langan streng af stöfum, og það er núverandi kennimerki fyrir setu mína, og það er hvernig the framreiðslumaður er að halda utan um hver ég er. Allt í lagi, en við höfum aðeins leyst helminginn af vandamálinu. Jú, framreiðslumaður hefur nú einhvern hátt að skilgreina mig, en þegar ég heimsækja aðra síðu, miðlara þarf að endurnýta þessi sömu auðkenni frekar en að búa til nýjan. Mundu, ef ég lýsa staðbundna breytu í foo.php og þá fara bar.php, bar.php hefur enga leið að vita hvað gerðist í foo.php. Krefst sjálfgefið PHP fundur framkvæmd að vafrinn minna miðlara sem fundur ID að nota. Þetta er framkvæmd í formi kex. Fótspor-auk þess að vera dýrindis snarl- er einfaldlega lítil textaskrá á tölvunni þinni að miðlara getur skrifað í gegnum vefur flettitæki. Svo eftir PHP býr einstakt fundur ID mitt í gegnum session_start, það er að fara að segja vefskoðaranum að geyma þessi auðkenni í sveitarstjórn textaskrá eða kex. Þá vefskoðarinn fela það heiti í hverjum beiðni sem það gerir til the framreiðslumaður. Svo í raun, vefur framreiðslumaður er ekki að muna hver ég er. Þess í stað er vefur flettitæki er einfaldlega að muna einstakt auðkenni sem var mynda við PHP og þá stöðugt að minna á þjóninum hvað það heiti er. Þannig upplýsingar eins og notandanafn mitt er geymt á miðlara ekki vafranum mínum. Vafrinn segir einfaldlega þjóninn sem PHP geymdar þær upplýsingar svo PHP getur sótt hana. Svo bidur að spurningin, hvar er PHP raun geyma þessar upplýsingar? Sjálfgefið, PHP mun geyma fundur gögn þín í skrá inni af / tmp eða möppunnar 'afleysingamanneskja ". Nafn þessi skrá mun innihalda fundur ID þannig PHP er hægt að ákvarða hver skrá til að lesa og skrifa frá með aðeins Session ID. Allt í lagi. Svo skulum opna flipann Network í aflúsara Króm ' gegnum skiptilykill táknið efst til hægri. Nú skulum höfuð til hello.php aftur. Skulum smella á HTTP beiðni til hello.php og síðan smellt á haus. Hér getum við séð að kex haus inniheldur lykill gestur PHPSESSID, eða PHP fundur ID-með gildi sem er það sama snærisspotta við sáum þegar við heimsóttum sessid.php. Þetta er einmitt hvernig vafrinn er minna miðlara hvaða fundur ID ætti að nota. Það er talið það í HTTP haus. Allt í lagi. Skulum höfuðið aftur á flugstöðina. Skulum sigla til / tmp, þar PHP er sögufrægur fundur upplýsingar sjálfgefið. Viss nógur, inni af þessari tímabundnu möppu, hér er skrá sem inniheldur sama nákvæmlega fundur ID. Ef við opna þessa skrá, getum við séð hvernig PHP er fulltrúi fundur mína á diskinn. Hér strengurinn "Tommy" er geymt fyrir helstu 'nafn' sem er einmitt það sem við vorum að búast. Og það er yfirlit yfir fundur í PHP. Það sem við sáum var bara aðeins sjálfgefið framkvæmd fundum. Í staðreynd, margir vefsíður breyta þessu sjálfgefna hegðun að geyma PHP fundur skilvirkari í þágu bæta árangur. Mitt nafn er Tommy, og þetta er CS50. [CS50.TV]