[Powered by Google Translate] [PHP Seancat] [Tommy MacWilliam, Universiteti i Harvardit] [Kjo është CS50.] [CS50.TV] Seancat në PHP mund të përdoret për të zbatuar funksionet, si hyrje të përdoruesit, në app tuaj web. Seancat PHP ju lejojnë që të lidhen informacion me gjithë seancën e përdoruesit në shfletim më tepër se thjesht një faqe të vetme. Kështu që do të thotë si përdorues viziton faqe të ndryshme PHP që përbëjnë faqen tuaj te internetit, çdo informacion në seancë do të vazhdojnë. Pra kjo do të thotë se të dhënat e ruajtura në seancën nga një faqe më vonë mund të arrihen nga një faqe tjetër. Ruajtjen e informacionit në një seancë është e lehtë, dhe ne e bëjnë këtë nëpërmjet shenjë e dollarit, theksojnë, variabli seancën e kapitalit. Shenjë Dollar, theksojnë, SESIONI-ashtu si shenjë e dollarit, theksojnë, GET dhe shenjë dollar, theksojnë, PAS- është një grup i përbërë nga associative çifte kryesore me vlerë. Pra, ne mund të përdorni sintaksë-si dollar shenjë, theksojnë, SESIONI, kllapa, quote, foo, quote, kllapa, e barabartë, të japin kuotën, bar, quote- për të ruajtur vlerën "bar", e në kyç "foo". Megjithatë, para se të mund të shkruani apo lexuar nga array seancës, ne do të duhet për të thirrur një funksion të veçantë- Sesioni, theksojnë, të fillojë, () - dhe kjo do të nisja e seancës. Pra, le të marrin një sy në një shembull. Faqja jonë e parë, hello.php, përdor seancën për të prodhimit disa të dhëna të përdoruesit. Mos harroni, ne do të duhet të përdorni session_start para se të mund të hyni në ndonjë dhënat e seancës. Tani ne jemi duke përdorur isset e PHP-së për të përcaktuar nëse ekziston një kyç në $ _SESSION array asociative. Në qoftë se çelësi ekziston, do të thotë se përdoruesi ka hyrë brenda, kështu që ne do të shfaqin emrin e përdoruesit. Në qoftë se çelësi nuk është vendosur, do të thotë se përdoruesi nuk ka hyrë brenda akoma, kështu që ne do të shfaqin një lidhje me login.php. Pra, le të marrin një vështrim në login.php. Poshtë këtu, ne kemi një formë të vetme HTML me një input të vetëm. Atributi i veprimit Forma është $ _SERVER ['PHP_SELF'], dhe kjo thjesht do të thotë se ne duam forma që do të paraqitet në skedarin aktual, cili, në këtë rast, është login.php. Pra, le të kthehemi në krye të këtij file. Nëse shfrytëzuesi dorëzuar formularin, pastaj $ _POST ['emri'] duhet të jenë të vendosur. Për më shumë informacion në lidhje me format e HTML dhe postës, shikoni PHP Mjete Zhvillimi videon. Në rast se përdoruesi ka dorëzuar formularin, ne do të donim për të shkruar vlerën që ata të shtypur në në seancë. Tani ne mund të përcjellim përdoruesit për hello.php. Sepse ne kemi ruajtur të dhëna të përdoruesit në seancë, hello.php do të jetë në gjendje për të hyrë në vlerën që ishte vendosur në login.php. Pra, le të kontrolloni këtë në një shfletues. Së pari, ne do të lundruar në http://localhost/hello.php. Ne mund të shohim këtu se ne nuk kemi hyrë brenda akoma, kështu që le të klikoni në linkun login, e cila do të na përcjellim të login.php. Mirë, unë do të shkruani emrin tim, i cili më pas do të ruhen në seancë. Great! Tani ne mund të shohim kontributin tim nga login.php në hello.php nëpërmjet seancës. Pra, ajo që për prerjet përdoruesit jashtë? E pra, në të identifikoheni in e përdoruesit, ne thjesht ruhet një vlerë në emrin e identifikimit. Pra, për të hyni përdorues jashtë, ne thjesht duhet të hiqni atë për emrin kyç nga array seancës. Pra, le të marrin një sy në këtë dosje të fundit, logout.php. Edhe një herë, ne do të duhet për të thirrur session_start () para se ne mund të bëjmë asgjë seancë lidhur. Tani ne thjesht mund të telefononi session_destroy (), e cila do të kujdeset për të hequr të gjitha të dhënat në seancën dhe pastaj përcjellëse përdorues përsëri në hello.php. Pra, në qoftë se unë klikoni në linkun Identifikohu jashtë, ne mund të shohim se serveri ka harruar kush jam, dhe unë nuk jam futur me emrin tuaj Pra, çfarë po ndodh këtu nën kapuç? Në mënyrë që të marrë sjelljen që sapo pamë, Serveri ynë ka nevojë për të bërë 2 gjëra. Së pari, server duhet të disi të ruajtur të dhënat në seancën. Dosjet e ndryshme PHP që përbëjnë një faqe interneti janë ekzekutuar si risive të veçanta të PHP përkthyesit ndryshueshme në mënyrë lokale nuk mund të ndahet midis tyre. Në vend të kësaj, server ka nevojë për të ruajtur të dhënat tona seance në ndonjë vend që të shumta. php fotografi mund të hyni. Së dyti, server ka nevojë që të lidhen të dhënat e seancës me vetëm seancën e mia në shfletim. Kur unë të hyni brënda për Facebook, ka ndoshta miliona njerëz të tjerë të regjistruar edhe në Facebook në të njëjtën kohë. Por server ka nevojë për një mënyrë për të shoqëruar të dhënat e mia me seancën time aktuale dhe të dhënat të dikujt tjetër me një seancë tjetër. Për fat të mirë, autorët e PHP menduar për të gjithë këtë për ne, kështu që ne nuk kemi nevojë për të zbatuar ndonjë të këtij veten. Por le të marrin një vështrim në atë PHP bën by default. Kur kam vizituar një faqe PHP përmban session_start për herë të parë, PHP do të gjenerojë një vlerë të madhe të rastit. Deri session_destroy quhet-të se nuk e vizitoni ndonjë faqe PHP në këtë vend për një kohë- që vlera e rastit dhe ndoshta unike do të jenë të lidhur me mua. Në këtë mënyrë server ka ende rrugë të identifikimit sesion time browsing në krahasim me të dikujt tjetër. Ne mund të marrë një vështrim në ID e tanishme e identifikimit duke përdorur funksionin PHP, session_ID. Këtu ne jemi thjesht kompjuteri vlerën e identifikues tonë seancës. Pra, nëse ne përsëri të hyni brënda për web app shembull, dhe tani lundruar në sessid.php, ne do të shohim në këtë varg të gjatë të karaktereve, dhe kjo është identifikues i tanishëm për seancën e mia, dhe kjo është se si server po i mban gjurmët e të cilët unë jam. Mirë, por ne kemi zgjidhur vetëm gjysmën e problemit. Sure, server tani ka një mënyrë për të identifikuar më, por kur kam vizituar një tjetër faqe, server ka nevojë për ripërdorimin që të njëjtën identifikues në vend se të gjeneruar një të ri. Mos harroni, nëse unë deklaroj një ndryshore lokale në foo.php dhe pastaj vizito bar.php, bar.php nuk ka asnjë mënyrë për të ditur se çfarë ka ndodhur në foo.php. Pra, zbatimi seanca e parazgjedhur php kërkon që shfletuesi kujtoj server Seanca e cila ID për t'u përdorur. Kjo realizohet në formën e një cookie. Një cookie-përveç të qënit një rostiçeri shijshme- është thjesht një skedar teksti të vogël në kompjuterin tuaj se një server mund të shkruani për të nëpërmjet web browser. Pra, pas PHP gjeneron unike identitetit tim sesion nëpërmjet session_start, ajo do të tregojë shfletuesit të internetit për të ruajtur atë identifikues në një skedar teksti lokale, ose një cookie. Pastaj web browser do të përfshijë atë identifikues në çdo kërkesë që bën të server. Pra, me të vërtetë, Serveri web nuk është kujtuar kush jam. Në vend të kësaj, shfletuesin web është thjesht kujtuar identifikues unik që u gjenerua nga PHP dhe pastaj vazhdimisht kujtuar server atë që identifikues është. Në këtë mënyrë, informacion si emrin tim të përdoruesit është e ruajtur në server jo shfletuesin tim web. Shfletuesi thjesht tregon server ku PHP ruajtur këtë informacion kështu PHP mund të marrim atë. Kështu që ngre pyetjen, ku është e PHP në të vërtetë ruajtjen këtë informacion? By default, PHP do të ruajtur të dhënat tuaja seancë në një dosje brenda të / tmp, ose dosjen e "temp". Emri i file që do të përfshijë ID sesion kështu PHP mund të përcaktojë të cilat fotografi për të lexuar dhe shkruar nga vetëm nëpërmjet ID e seancës. Dakord. Pra, le të hapur tab Rrjetit në Rregullues Chrome nëpërmjet ikonën pikëllim në krye të drejtë. Tani le të shkojnë në hello.php përsëri. Le të klikoni mbi HTTP kërkesë për hello.php dhe pastaj klikoni mbi Headers. Këtu ne mund të shohim se header cookie përmban një çelës të quajtur PHPSESSID, ose sesion PHP ID-me një vlerë që është po atë varg të gjatë e pamë kur kemi vizituar sessid.php. Kjo është pikërisht se si shfletuesi është kujtuar server çfarë ID seancë duhet të përdoret. Është e përfshirë atë në një HTTP header. Dakord. Le të kthehen në terminalin. Le të lundruar në / tmp, ku PHP është ruajtjen e informacionit sesion by default. Pa dyshim, në brendësi të kësaj dosje të përkohshme, këtu është një fotografi që përmban të njëjtën ID saktë sesion. Nëse do të hapë këtë fotografi, ne mund të shohim se si PHP përfaqëson sesion time në disk. Këtu string "Tommy" është duke u ruajtur për kyç 'emrin' e cila është pikërisht ajo që ne prisnin. Dhe kjo është një përmbledhje e seancave në PHP. Ajo që ne vetëm e pa ishte vetëm zbatimi parazgjedhje e seancave. Në fakt, shumë faqet e internetit të ndryshuar këtë sjellje të parazgjedhur për të ruajtur seancat PHP mënyrë më efikase në interes të përmirësimit të performancës. Emri im është Tommy, dhe kjo është CS50. [CS50.TV]