[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]