[Powered by Google Translate] [Sessjonijiet PHP] [Tommy MacWilliam, Harvard University] [Dan huwa CS50.] [CS50.TV] Sessjonijiet PHP jistgħu jintużaw biex jimplimentaw funzjonalità, bħal logins utent, fil app web tiegħek. Sessjonijiet PHP jippermetti li inti informazzjoni tassoċja ma kollu sessjoni browsing l-utent aktar milli sempliċiment minn paġna waħda. Allura dan ifisser li l-utent iżur il-paġni varji PHP li jiffurmaw website tiegħek, kwalunkwe informazzjoni fis-sessjoni se jippersistu. Allura dan ifisser li d-data maħżuna fis-sessjoni minn paġna waħda aktar tard tista 'tkun aċċessata minn paġna oħra. Ħażna ta 'informazzjoni f'sessjoni huwa faċli, u nagħmlu dan permezz tas-sinjal dollaru, jenfasizzaw, SESSION kapital varjabbli. Sinjal dollaru, jenfasizzaw, SESSION-istess bħal sinjal dollaru, jenfasizzaw, IKOLLOK u sinjal dollaru, jenfasizzaw, POST- huwa firxa assoċjattiva jikkonsisti pari valur ewlenin. Allura nistgħu nużaw sinjal dollaru-sintassi simili, jtennu, SESSION, parentesi, kwotazzjoni, foo, kwotazzjoni, parentesi, ugwali, kwotazzjoni, bar, kwotazzjoni li jaħżen il-valur "bar" fil-ewlenin "foo." Madankollu, qabel ma nistgħu jiktbu jew jaqraw mill-firxa sessjoni, aħna ser bżonn tirrikorri funzjoni 'speċjali sessjoni, jtennu, bidu, () - u dan se initialize-sessjoni. Mela ejja tagħti ħarsa lejn eżempju. Ewwel paġna tagħna, hello.php, tuża s-sessjoni għal output xi data lill-utent. Ftakar, aħna ser bżonn tuża session_start qabel nistgħu aċċess kwalunkwe data tas-sessjoni. Issa aħna qed tuża isset PHP li jiddetermina jekk teżisti prinċipali fil-$ _SESSION firxa assoċjattiva. Jekk teżisti din ewlenin, dan ifisser l-utent ikun illoggjat, hekk aħna ser juru l-isem l-utent. Jekk dak ewlieni ma jkunx stabbilit, dan ifisser l-utent ma jkunx illoggjat għadhom, hekk aħna ser juru link li login.php. Mela ejja tagħti ħarsa lejn login.php. Down hawn, aħna għandna forma HTML wieħed b'input wieħed. Azzjoni attribut il-formola hija $ _SERVER ["PHP_SELF"], u dan ifisser sempliċement li aħna rridu l-formola li għandha tiġi sottomessa għall-fajl kurrenti, li, f'dan il-każ, huwa login.php. Mela ejja jmorru lura għall-quċċata ta 'dan il-fajl. Jekk l-utent ppreżentat il-forma, imbagħad $ _POST ["name"] jridu jiġu stabbiliti. Għal aktar informazzjoni dwar il-forom HTML u posta, jiċċekkjaw il-video Web Development PHP. Fil-każ li l-utent ma tissottometti l-formola, aħna tixtieq li tikteb il-valur li huma ittajpjat fil fis-sessjoni. Issa nistgħu idawwru l-utent biex hello.php. Għaliex aħna ħadthom maħżuna input-utent fis-sessjoni, hello.php se tkun tista 'aċċess għall-valur li kien stabbilit fl login.php. Mela ejja jivverifikaw dan fil-web browser. L-ewwel, aħna ser jinnaviga http://localhost/hello.php. Nistgħu naraw hawnhekk li aħna ma illoggjat għadhom, hekk ejja ikklikkja l-link login, li ser jagħtu direzzjoni ġdida ahna login.php. Okay, jien ser tip fl-isem tiegħi, li mbagħad jiġu maħżuna fis-sessjoni. Great! Issa nistgħu naraw input tiegħi minn login.php fuq hello.php permezz tal-sessjoni. Allura, dak dwar qtugħ l-utent out? Ukoll, sabiex log fil-utent, aħna sempliċiment maħżuna valur fis-isem sessjoni. Allura biex log-utent out, aħna sempliċiment għandek bżonn li jitneħħew dak l-isem ewlieni mill-firxa sessjoni. Mela ejja tagħti ħarsa lejn dan l-aħħar il-fajl, logout.php. Għal darb'oħra, aħna ser bżonn tirrikorri session_start () qabel ma nistgħu nagħmlu sessjoni ħaġa relatati. Issa nistgħu sempliċiment sejħa session_destroy (), li se jieħdu ħsieb ta 'jwarrbu' l-informazzjoni kollha fil-sessjoni u mbagħad jagħtu direzzjoni ġdida lill-utent lura għall hello.php. Hekk jekk I ikklikkja fuq il-link Log out, nistgħu naraw li s-server tkun insejt min jien, u I am m'għadhomx logged pulzieri Allura x'inhu għaddej hawn taħt il-barnuża? Sabiex tikseb l-imġieba aħna biss raw, server tagħna teħtieġ li tagħmel 2 affarijiet. L-ewwel, il-server jeħtieġ li b'xi mod jaħżen id-data fil-sessjoni. Il-fajls differenti PHP li jinkludu websajt huma eżegwiti bħala invocations separati tal-interpretu PHP varjabbli hekk lokali ma jistgħux jiġu maqsuma bejniethom. Minflok, il-server jeħtieġ li jaħżen data tas-sessjoni tagħna f'xi post li multipli. fajls PHP tista 'aċċess. It-tieni nett, il-server jeħtieġ li jassoċjaw l-data tas-sessjoni ma biss browsing sessjoni tiegħi. Meta I login għal Facebook, hemm probabbilment miljuni ta 'nies oħra wkoll logged in Facebook fl-istess ħin. Iżda l-server teħtieġ xi mod ta jassoċjaw data tiegħi mal sessjoni kurrenti tiegħi u data xi ħadd ieħor ma 'ieħor sessjoni. Fortunatament, l-awturi ta 'PHP ħsibt dwar dan kollu għalina, hekk aħna ma bżonn li jimplimenta kwalunkwe ta 'dan nfusna. Iżda ejja tagħti ħarsa lejn dak PHP ma b'kontumaċja. Meta I żjara paġna PHP fih session_start għall-ewwel darba, PHP ser jiġġenera valur każwali kbir. Sakemm session_destroy tissejjaħ jew I ma jżurux xi paġni PHP fuq dak is-sit għal waqt ' valur każwali u probabbilment unika għandha tkun assoċjata miegħi. B'dak il-mod il-server għandu xi mod ta 'identifikazzjoni browsing sessjoni tiegħi għall-kuntrarju xi ħadd ieħor. Nistgħu tagħti ħarsa lejn l-ID sessjoni kurrenti tuża l-funzjoni PHP, session_ID. Hawnhekk aħna qed sempliċiment outputting-valur tal identifikatur sessjoni tagħna. Mela jekk aħna napprovaw login għal-eżempju app web, u issa jinnaviga sessid.php, Ser naraw din is-sekwenza twila ta 'karattri, u dak l-identifikatur attwali għall-sessjoni tiegħi, u li kif l-server qed iżżomm rekord ta 'min jien. Okay, imma aħna ħadthom biss solvuti nofs il-problema. Sure, il-server issa għandha xi mod ta 'identifikazzjoni me, iżda meta I żjara paġna oħra, il-server jeħtieġ li terġa tintuża l-istess identifikatur aktar milli jiġġeneraw waħda ġdida. Ftakar, jekk I tiddikjara varjabbli lokali foo.php u imbagħad żjara bar.php, bar.php m'għandha l-ebda mod sabiex tkun taf dak li ġara fil foo.php. Allura l-implimentazzjoni sessjoni PHP default jeħtieġ li l-browser tfakkar il-server li sessjoni ID għall-użu. Dan huwa implimentat fil-forma ta 'cookie. A cookie minbarra li jkunu a snack Delicious hija sempliċement fajl test żgħir fuq il-kompjuter tiegħek li server jista 'jikteb biex permezz tal-web browser. Allura wara PHP jiġġenera sessjoni unika tiegħi ID via session_start, li għaddej biex tgħid il-web browser li jaħżen dak identifikatur fil-fajl test lokali, jew cookie. Imbagħad il-web browser se jinkludu li identifikatur f'kull talba li jagħmel lis-server. Allura verament, l-web server ma tkunx ftakar min jien. Minflok, l-web browser huwa sempliċement ftakar-identifikatur uniku li kienet iġġenerata mill PHP u mbagħad kontinwament fakkruha-server dak li identifikatur. B'dan il-mod, l-informazzjoni bħall-isem l-utent tiegħi hija maħżuna fuq is-server ma web browser tiegħi. Il-browser sempliċiment jirrakkonta l-server fejn PHP maħżuna dik l-informazzjoni sabiex PHP tista tkun irkuprata din. Allura li iqajjem il-kwistjoni, fejn PHP attwalment jaħżnu din l-informazzjoni? Konvenzjonalment, PHP se taħżen data sessjoni tiegħek fil-fajl ġewwa ta / TMP, jew il-folder "temp". L-isem ta 'dan il-fajl se jinkludi s-sessjoni ID hekk PHP tista' tiddetermina li fajl biex jaqraw u jiktbu mill via biss il sessjoni ID. Kull dritt. Mela ejja tiftaħ il-tab Network debugger Chrome permezz l-ikona wrench fil kantuniera. Issa ejja ras għall hello.php ġdid. Ejja ikklikkja fuq it-talba HTTP biex hello.php u mbagħad ikklikkja fuq Headers. Hawnhekk nistgħu naraw li l-header cookie fih ewlieni imsejjaħ PHPSESSID, jew sessjoni PHP-ID b'valur li huwa l-istess sensiela twila rajna meta żorna sessid.php. Dan huwa eżattament kif l-browser huwa jfakkar lill server liema sessjoni ID għandu jintuża. Huwa inkluż fil-header HTTP. Kull dritt. Ejja ras lura fit-terminals. Ejja jinnaviga / TMP, fejn PHP huwa jaħżen l-informazzjoni sessjoni b'kontumaċja. Sure biżżejjed, ġewwa ta 'dan folder temporanju, hawnhekk fajl li fih l-istess eżatt sessjoni ID. Jekk aħna tiftaħ dan il-fajl, nistgħu naraw kif PHP qed jirrappreżenta sessjoni tiegħi fuq disk. Hawnhekk il-string "Tommy" qed jiġi maħżun għal-ċavetta "isem," li huwa eżattament dak li aħna kienu qed jistennew. U dan huwa ħarsa ġenerali ta 'sessjonijiet PHP. Dak li aħna biss raw kien biss l-implimentazzjoni default ta 'sessjonijiet. Fil-fatt, ħafna mill-websajts tbiddel din l-imġieba default li jaħżen sessjonijiet PHP aktar effiċjenti fl-interess tat-titjib tal-prestazzjoni. Jisimni Tommy, u dan huwa CS50. [CS50.TV]