[Powered by Google Translate] [PHP Sesyon] [Tommy MacWilliam, Inivèsite Harvard] [Sa a se CS50.] [CS50.TV] Sesyon nan PHP ka itilize aplike fonctionnalités, tankou koneksyon itilizatè, nan app entènèt ou an. Sesyon PHP pèmèt ou asosye enfòmasyon ak tout sesyon Navigasyon itilizatè a olye ke senpleman yon paj yon sèl. Se konsa, sa vle di kòm itilizatè a vizite divès kalite paj PHP ki fè moute sit entènèt ou an, nenpòt ki enfòmasyon ki nan sesyon-an ap pèsiste. Se konsa, ki vle di ke done ki estoke nan sesyon-an pa youn paj ka pita jwenn aksè pa yon lòt paj. Sere enfòmasyon ki nan yon sesyon se fasil, e nou fè sa via siy a an dola, souliye, varyab SESYON kapital la. Siy dola, souliye, sesyon-jis tankou siy dola, souliye, jwenn ak siy dola, souliye, pòs- se yon etalaj asosyatif ki fòme ak valè kle pè. Se konsa, nou ka sèvi ak sentaks ki tankou siy dola, souliye, sesyon, bracket, quote, foo, quote, bracket, egal, quote, ba, quote- nan magazen valè "ba a" nan kle "foo la." Sepandan, anvan nou ka ekri oswa li soti nan etalaj la sesyon, nou pral bezwen rele yon fonksyon-espesyal sesyon, souliye, kòmanse, () - ak sa a pral inisyalize sesyon an. Se konsa, kite a pran yon gade nan yon egzanp. Premye paj nou an, hello.php, sèvi ak sesyon nan pwodiksyon kèk done itilizatè a. Sonje byen, nou pral bezwen sèvi ak session_start anvan nou kapab jwenn aksè nan nenpòt done sesyon. Koulye a, nou ap itilize ise PHP a yo detèmine si yon kle ki egziste nan $ _SESSION etalaj la asosyatif. Si sa kle ki egziste, sa vle di si itilizatè a ouvri sesyon an, Se konsa, nou pral montre non itilizatè a. Si sa kle pa mete, sa vle di itilizatè a pa te louvri sesyon an ankò, Se konsa, nou pral montre yon ap mennen nan login.php. Se konsa, kite a pran yon gade nan login.php. Desann isit la, nou gen yon fòm HTML yon sèl ak yon D 'sèl. Atribi aksyon fòm nan a se $ _SERVER ['PHP_SELF'], ak sa a tou senpleman vle di ke nou vle fòm lan yo dwe soumèt nan dosye a kounye a, ki, nan ka sa a, se login.php. Se konsa, kite a tounen nan tèt la nan sa a dosye. Si itilizatè a soumèt fòm nan, Lè sa a, $ _POST ['non'] dwe mete. Pou plis enfòmasyon sou fòm HTML ak apre, tcheke deyò videyo a Devlopman entènèt PHP. Nan ka a ki itilizatè a te fè soumèt fòm la, nou ta renmen yo ekri valè a yo ke yo tape nan nan sesyon an. Koulye a, nou ka redireksyon itilizatè a hello.php. Paske nou te sere D 'itilizatè a nan sesyon-an, hello.php yo pral kapab jwenn aksè nan valè a ki te mete nan login.php. Se konsa, kite a tcheke sa a soti nan yon navigatè entènèt. Premyèman, nou pral navige nan http://localhost/hello.php. Nou ka wè isit la ke nou pa fin louvri sesyon an ankò, Se konsa, kite a klike sou link ki login, ki pral redireksyon nou login.php. Oke, mwen pral tape nan non mwen, ki pral Lè sa a, dwe estoke nan sesyon an. Gwo! Koulye a, nou ka wè opinyon mwen an soti nan login.php sou hello.php atravè sesyon an. Se konsa, sa ki sou ouvri sesyon itilizatè a soti? Oke, yo nan lòd yo ouvri sesyon an nan itilizatè yo, nou tou senpleman ki estoke yon valè nan non sesyon. Se konsa, yo louvri sesyon itilizatè a soti, nou tou senpleman bezwen retire ke kle Non soti nan etalaj la sesyon. Se konsa, kite a pran yon gade nan sa a ranpli pase a, logout.php. Yon fwa ankò, nou pral bezwen rele session_start () anvan nou ka fè sesyon anyen ki gen rapò. Koulye a, nou ka tou senpleman rele session_destroy (), ki pral pran swen nan pou elimine pou nan tout done yo nan sesyon-an ak Lè sa a, redireksyon itilizatè a tounen nan hello.php. Se konsa, si mwen klike sou lyen ki Log soti, nou ka wè ki te sèvè a bliye kiyès mwen ye, epi mwen pa gen okenn ankò louvri sesyon pous Se konsa, sa k ap pase sou isit la anba kapo a? Yo nan lòd jwenn konpòtman an nou jis wè sa, sèvè nou an bezwen fè 2 bagay sa yo. Premyèman, sèvè a bezwen yon jan kanmenm magazen done ki nan sesyon an. Dosye yo PHP diferan ki genyen yon sit entènèt yo egzekite kòm envokasyon separe nan entèprèt la PHP varyab Se konsa, lokal pa kapab pataje ant yo. Olye de sa, sèvè a bezwen nan magazen done sesyon nou an nan kèk kote ki miltip. dosye php kapab jwenn aksè nan. Dezyèmman, sèvè a bezwen asosye done yo sesyon ak sèlman sesyon Navigasyon m 'yo. Lè m 'Login to Facebook, gen yo se pwobableman dè milyon de lòt moun tou louvri sesyon an Facebook an menm tan an. Men, sèvè a bezwen kèk fason pou asosye done m ' ak sesyon aktyèl m 'ak done yon lòt moun nan ak yon lòt sesyon. Chans, otè yo nan PHP te panse sou tout bagay sa yo pou nou, se konsa nou pa bezwen aplike nenpòt nan sa a tèt nou. Men, kite a pran yon gade nan ki sa PHP fè pa default. Lè m 'ale nan yon paj PHP ki gen session_start la pou premye fwa a, PHP ap jenere yon valè gwo o aza. Jiskaske yo session_destroy rele-oswa mwen pa ale nan nenpòt paj PHP sou sit sa a pou yon ti tan- pral ke valè o aza ak pwobableman inik dwe asosye avè m '. Nan fason sa a sèvè a gen kèk fason pou idantifye sesyon Navigasyon m ' kòm opoze a lòt moun yon moun. Nou ka pran yon gade nan ID la sesyon aktyèl lè l sèvi avèk fonksyon an PHP, session_ID. Isit la nou ap tou senpleman sorti valè a nan idantifyan sesyon nou an. Se konsa, si nou ankò Login to app wèb la egzanp, e kounye a, navige nan sessid.php, nou pral wè sa a fil long nan karaktè yo, e ke sa a idantifyan aktyèl la pou sesyon m 'yo, e ke sa a ki jan sèvè a se kenbe tras nan ki mwen ye. Oke, men nou te sèlman rezoud mwatye pwoblèm nan. Asire w, sèvè a kounye a gen kèk fason pou idantifye m ', Men, lè m vizite yon lòt paj, sèvè a bezwen resèvi ki idantifyan menm olye ke génération yon nouvo. Sonje byen, si mwen vle fè yon varyab lokal yo nan foo.php ak Lè sa a, ale nan bar.php, bar.php pa gen okenn fason pou konnen sa ki te pase nan foo.php. Se konsa, aplikasyon an sesyon php default mande pou navigatè a raple sèvè a ki sesyon ID sèvi avèk yo. Sa a se aplike nan fòm lan nan yon bonbon. Yon bonbon-Anplis yo te yon ti goute-bon gou se tou senpleman yon ti dosye tèks sou òdinatè ou ke yon sèvè ka ekri nou nan via navigatè a entènèt. Se konsa, apre PHP jenere ID inik sesyon m 'via session_start, li pral di navigatè wèb la nan magazen ki idantifyan nan yon dosye tèks lokal yo, oswa yon bonbon. Lè sa a, navigatè wèb la ap gen ladan sa idantifyan nan tout demann ke li fè nan sèvè a. Se konsa, reyèlman, sèvè wèb la se pa sa sonje kiyès mwen ye. Olye de sa, navigatè wèb la se senpleman sonje idantifikatè inik ki te pwodwi pa PHP ak Lè sa a, toujou ap raple sèvè a ki sa sa idantifyan se. Se fason sa a, enfòmasyon tankou non itilizatè mwen an ki estoke sou sèvè a pa navigatè entènèt mwen an. Navigatè a tou senpleman di sèvè a kote PHP estoke enfòmasyon ki Se konsa, PHP ka rekipere li. Se konsa, ki amèn kesyon an, ki kote PHP aktyèlman estoke enfòmasyon sa a? Pa default, PHP pral estoke done sesyon ou nan yon dosye andedan nan / tan, oswa katab la 'temp'. Non a nan ki dosye ap gen ladan ID la sesyon Se konsa, PHP ka detèmine ki dosye yo li ak ekri ki soti nan atravè sèlman ID a sesyon. Tout dwa. Se konsa, kite a louvri moute tab la Rezo nan debugjeur Chrome a atravè icon a kle nan tèt dwat. Koulye a, kite nan tèt nan hello.php ankò. Se pou yo klike sou demann lan HTTP hello.php ak Lè sa a, klike sou Tèt. Isit la nou kapab wè ke lento a bonbon gen yon kle yo rele PHPSESSID, oswa sesyon PHP ID-ki gen yon valè ki se ke menm fisèl lontan nou te wè lè nou te vizite sessid.php. Sa a se egzakteman ki jan navigatè an ki raple sèvè a ki sa sesyon ID ta dwe itilize. Li nan ki gen ladan li nan yon header HTTP. Tout dwa. Se pou yo tèt tounen nan tèminal la. Se pou yo navige nan / tan, kote PHP se estoke enfòmasyon an sesyon pa default. Asire w ke ase, andedan nan sa a folder pou yon ti tan, isit la nan yon dosye ki gen menm egzak ID a sesyon. Si nou louvri moute sa a ranpli, nou ka wè ki jan PHP ap reprezante sesyon m 'sou ki gen kapasite. Isit la fisèl "Tommy a" se ke yo te estoke pou kle 'non,' ki se ekzakteman ki sa nou te espere. Epi sa a, yon BECA de sesyon nan PHP. Ki sa nou jis te wè te sèlman aplikasyon an default nan sesyon yo. An reyalite, sou sit entènèt anpil chanje konpòtman sa a default nan magazen sesyon PHP pi plis efikasite nan enterè a nan amelyore pèfòmans. Non mwen se Tommy, e sa se CS50. [CS50.TV]