[Powered by Google Translate] [PHP Kunsidoj] [Tommy MacWilliam, Universitato Harvard] [Ĉi tiu estas CS50.] [CS50.TV] Kunsidoj en PHP povas kutimi realigi funkcioj, kiel uzanto logins, en via retejo app. PHP kunsidoj vi permesas asocii informoj kun la uzanto tutan reton kunsido anstataŭ simple sola paĝo. Do tio signifas kiel la uzanto vizitas diversajn PHP paĝoj kiuj konsistigas vian retpaĝaron, neniu informo en la sesio estos persisti. Do tio signifas ke la datumoj stokitaj en la kunsido de unu paĝo poste povas aliri per alia paĝo. Stokante informoj en kunsido estas facila, kaj ni faru tiel tra la dolaro-signo, substreki, ĉefurbo SESSION variablo. Dolaro-signo, substreki, SESSION-ĝuste kiel dolaro-signo, substreki, ENIRU kaj dolaro-signo, substreki, POST- estas asocieca tabelo konsistanta el ŝlosilaj valoro paroj. Do ni povas uzi sintakson similan dolaro-signo, substreki, SESSION, krampo, citaĵo, foo, citaĵo, krampo, egalaj, citaĵo, trinkejo, citaĵo- stoki la valoro "bar" en la ŝlosila "foo". Tamen, antaŭ ol ni povas skribi aŭ legi de la kunsido tabelo, Ni bezonos nomi speciala funkcio- kunsido, substreki, starti, () - kaj tio estos pravalorizi la kunsido. Do ni rigardu ekzemplon. Nia unua paĝo, hello.php, uzas la kunsido por eligo iujn datumojn por la uzanto. Memoru, ni bezonos uzi session_start antaŭ ol ni povas aliri ajna sesiaj datenoj. Nun ni uzas PHP la isset determini se kerna ekzistas en la $ _SESSION asocieca tabelo. Se tiu klavo ekzistas, tio signifas, ke la uzulo ensalutinta, do ni havos montri al la uzanto la nomo. Se tiu ŝlosilo ne estas agordita, tio signifas ke la uzanto ne ensalutinta tamen, do ni havos montri ligon al login.php. Do ni rigardu login.php. Cxi tie, ni havas nur HTML-formo kun sola enigo. La formo de agado atributo estas $ _SERVER ['PHP_SELF'], kaj tio simple signifas, ke ni deziras ke la formo por esti prezentita al la aktuala dosiero, kiuj, en tiu kazo, estas login.php. Do ni revenu al la supro de cxi tiu dosiero. Se la uzanto prezentis la formon, tiam $ _POST ['nomo'] devas esti aro. Por pli da informoj pri HTML kaj post, kontrolu la PHP-Web Development video. En la kazo ke la uzanto faris la formularon, Ni ŝatus skribi la valoro kiun ili enigis en en la kunsido. Nun ni povas redirect la uzanton hello.php. Ĉar ni jam stokis la uzanto enigo en la kunsido, hello.php povos aliri la valoro kiun oni starigis en login.php. Do ni kontrolu ĉi el en TTT-legilo. Unue, ni navigas al http://localhost/hello.php. Ni povas vidi ĉi tie ke ni ne ensalutinta tamen, do ni alklaku la ensaluto ligilo, kiu estos redirekti nin al login.php. Konsentite, mi tajpas en mia nomo, kiu tiam estos garditaj en la kunsido. Bonega! Nun ni povas vidi mian eniron de login.php sur hello.php tra la kunsido. Do, kio pri ensalutante la uzanto for? Nu, por saluti la uzanto en, ni simple stokitaj valoron en kunsido nomo. Do por ensaluti la uzanton el ni simple bezonas forigi tiun nomon ŝlosilon el la kunsido tabelo. Do ni rigardu ĉi lastan dosieron, logout.php. Denove, ni bezonos nomi session_start () antaŭ ol ni povas fari ion kunsido rilataj. Nun ni povas simple nomi session_destroy (), kiun prizorgos liverante de ĉiuj datumoj en la kunsido kaj tiam ridirektanta la uzanto reen al hello.php. Do se mi klakas sur la Log out ligilo, ni povas vidi ke la servilo forgesis, kiu mi estas, kaj mi ne plu salutita Do kio okazas ĉi tie sub la kapuĉo? Por akiri la konduton ni ĵus vidis, nia servilo bezonas fari 2 aferoj. Unue, la servilo devas iel konservi la datumojn en la kunsido. La malsamaj PHP dosierojn kiuj formas parton retejo estas ekzekutitaj kiel apartaj alvokoj de la PHP-interpretilo tiom loka variablo ne povas esti dividitaj inter ili. Anstataŭe, la servilo bezonas konservi nian kunsidon datumoj en iu loko ke oblo. php dosieroj povas aliri. Due, la servilo bezonas asocii la kunsido datumojn nur mia navigacio kunsido. Kiam mi aliĝu al Facebook, estas probable milionoj da aliaj homoj ankaŭ ensalutinta en Facebook je la sama tempo. Sed la servilo bezonas iel de asociante mia datumoj kun mia aktuala seanco kaj aliulaj datumojn kun alia kunsido. Bonŝance, la aŭtoroj de PHP pensis pri ĉio ĉi por ni, tial ni ne bezonas por apliki iun el ĉi mem. Sed ni rigardu kio PHP faras defaŭlte. Kiam mi vizitas PHP paĝo enhavas session_start por la unua fojo, PHP generos granda hazarda valoro. Ĝis session_destroy nomas-aŭ mi ne viziti ajnan PHP paĝoj en tiu ejo por tempo- ke hazardo kaj probable sola valoro estos asociitaj kun mi. Tiel la servilo havas iel identigi mia navigacio kunsido kontraste al aliulaj. Ni povas tuj iri ĉe la nuna sesio ID uzante la PHP-a funkcio, session_ID. Ĉi tie ni simple outputting la valoro de nia kunsido ensalutilo. Do, se ni denove ensaluti al la ekzemplo ttt app, kaj nun navigas al sessid.php, ni vidos ĉi longa linio de signoj, kaj tio estas la nuna ensalutilo por mia kunsido, kaj tiel estas kiel la servilaj konservanta trako de kiu mi estas. Konsentite, sed ni nur solvas duonon de la problemo. Certe, la servilo havas nun iel identigi min, sed kiam mi vizitos alian paĝon, la servilo devas reuzi tiun saman ensalutilo prefere ol generi novan. Memoru, se mi deklaras loka variablo en foo.php kaj poste vizitas bar.php, bar.php ne havas manieron de scii kio okazis en foo.php. Do la defaŭlta php kunsido efektivigo postulas, ke la foliumilo rememorigi la servilo kio kunsido ID uzi. Tio estas implementado en la formo de kuketo. A kuketon-krom esti bongustega aperitivo- estas simple malgranda teksta dosiero sur via komputilo kiu servanto povas skribi al via la retumilo. Do post PHP generas mia unika kunsido ID tra session_start, ĝi tuj diru la retumilo stoki ke ensalutilo en loka teksto-dosiero, aux kuketo. Tiam la retumilo inkluzivos ke ensalutilo en ĉiu peto ke tio faras al la servilo. Do vere, la TTT-servilo ne memori kiu mi estas. Anstataŭe, la retumilo estas simple rememorante la sola ensalutilo kiu estis naskita de PHP kaj poste senĉese memorigi la servilo kion tio ensalutilo estas. Tiel, informoj kiel mia uzanto nomo estas stokita en la servilo ne mia retumilo. La retumilo simple rakontas la servilo kie PHP stokitaj tiun informon tiel PHP povas elsxuti gxin. Por ke petegas la demando, kie estas PHP reale stokante tiun informon? Defaŭlte, PHP konservos vian seancon datumoj en dosiero ene de / tmp, aŭ la 'temp' dosierujo. La nomo de tiu dosiero inkluzivos la kunsido ID tiom PHP povas determini kiun dosieron por legi kaj skribi de tra nur la kunsido ID. Ĉiuj pravas. Do ni malfermu la Reto langeton en Chrome de sencimigilo tra la angla ŝlosilo ikonon ĉe supre dekstre. Nun ni estrus al hello.php denove. Ni alklaku la HTTP-peto al hello.php kaj tiam alklaku Headers. Ĉi tie ni povas vidi ke la kuketon kaplinio enhavas ŝlosilan nomata PHPSESSID, aŭ PHP-kunsido ID-kun valoro kiu estas tiu sama longa kordo ni vidis Kiam ni vizitis sessid.php. Tiu estas ĝuste kiel la TTT-legilo estas memorigi la servilo, kio kunsido ID uziĝu. Ĝi estas inkludita en HTTP kaplinion. Ĉiuj pravas. Ni direktas denove al la stacio. Ni navigi al / tmp, kie PHP estas stoki la kunsido informoj defaŭlte. Vere, ene de tiu provizora dosierujo, jen dosiero kiu enhavas la saman ĝusta kunsido ID. Se ni malfermos cxi tiun dosieron, ni povas vidi kiel PHP estas reprezentanto mia sesio je disko. Jen la ligilo "Tommy" estas konservataj por la klavo 'nomo' kio estas ekzakte kion ni atendis. Kaj tio estas superrigardon pri kunsidoj en PHP. Kion ni ĵus vidis, estis nur la defaŭlta efektivigo de kunsidoj. Fakte, multaj retejoj ŝanĝi ĉi defaŭlta konduto stoki PHP kunsidoj pli kompetente en la intereso de plibonigi rendimenton. Mia nomo estas Tommy, kaj ĉi tiu estas CS50. [CS50.TV]