1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [PHP Seancat] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam, Universiteti i Harvardit] 3 00:00:04,000 --> 00:00:07,000 [Kjo është CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,920 Seancat në PHP mund të përdoret për të zbatuar funksionet, 5 00:00:10,920 --> 00:00:13,440 si hyrje të përdoruesit, në app tuaj web. 6 00:00:13,440 --> 00:00:16,920 Seancat PHP ju lejojnë që të lidhen informacion 7 00:00:16,920 --> 00:00:19,680 me gjithë seancën e përdoruesit në shfletim 8 00:00:19,680 --> 00:00:22,290 më tepër se thjesht një faqe të vetme. 9 00:00:22,290 --> 00:00:27,330 Kështu që do të thotë si përdorues viziton faqe të ndryshme PHP që përbëjnë faqen tuaj te internetit, 10 00:00:27,330 --> 00:00:30,630 çdo informacion në seancë do të vazhdojnë. 11 00:00:30,630 --> 00:00:34,770 Pra kjo do të thotë se të dhënat e ruajtura në seancën nga një faqe 12 00:00:34,770 --> 00:00:37,580 më vonë mund të arrihen nga një faqe tjetër. 13 00:00:37,580 --> 00:00:40,080 Ruajtjen e informacionit në një seancë është e lehtë, 14 00:00:40,080 --> 00:00:48,790 dhe ne e bëjnë këtë nëpërmjet shenjë e dollarit, theksojnë, variabli seancën e kapitalit. 15 00:00:48,790 --> 00:00:52,620 Shenjë Dollar, theksojnë, SESIONI-ashtu si shenjë e dollarit, theksojnë, GET 16 00:00:52,620 --> 00:00:54,710 dhe shenjë dollar, theksojnë, PAS- 17 00:00:54,710 --> 00:00:58,690 është një grup i përbërë nga associative çifte kryesore me vlerë. 18 00:00:58,690 --> 00:01:07,980 Pra, ne mund të përdorni sintaksë-si dollar shenjë, theksojnë, SESIONI, 19 00:01:07,980 --> 00:01:16,000 kllapa, quote, foo, quote, kllapa, e barabartë, të japin kuotën, bar, quote- 20 00:01:16,000 --> 00:01:20,440 për të ruajtur vlerën "bar", e në kyç "foo". 21 00:01:20,440 --> 00:01:24,030 Megjithatë, para se të mund të shkruani apo lexuar nga array seancës, 22 00:01:24,030 --> 00:01:26,770 ne do të duhet për të thirrur një funksion të veçantë- 23 00:01:26,770 --> 00:01:34,690 Sesioni, theksojnë, të fillojë, () - 24 00:01:34,690 --> 00:01:37,060 dhe kjo do të nisja e seancës. 25 00:01:37,060 --> 00:01:39,850 Pra, le të marrin një sy në një shembull. 26 00:01:39,850 --> 00:01:46,570 Faqja jonë e parë, hello.php, përdor seancën për të prodhimit disa të dhëna të përdoruesit. 27 00:01:46,570 --> 00:01:53,920 Mos harroni, ne do të duhet të përdorni session_start para se të mund të hyni në ndonjë dhënat e seancës. 28 00:01:53,920 --> 00:01:59,010 Tani ne jemi duke përdorur isset e PHP-së për të përcaktuar nëse ekziston një kyç 29 00:01:59,010 --> 00:02:03,230 në $ _SESSION array asociative. 30 00:02:03,230 --> 00:02:07,250 Në qoftë se çelësi ekziston, do të thotë se përdoruesi ka hyrë brenda, 31 00:02:07,250 --> 00:02:10,410 kështu që ne do të shfaqin emrin e përdoruesit. 32 00:02:10,410 --> 00:02:14,110 Në qoftë se çelësi nuk është vendosur, do të thotë se përdoruesi nuk ka hyrë brenda akoma, 33 00:02:14,110 --> 00:02:17,880 kështu që ne do të shfaqin një lidhje me login.php. 34 00:02:17,880 --> 00:02:21,380 Pra, le të marrin një vështrim në login.php. 35 00:02:21,380 --> 00:02:26,260 Poshtë këtu, ne kemi një formë të vetme HTML me një input të vetëm. 36 00:02:26,260 --> 00:02:32,720 Atributi i veprimit Forma është $ _SERVER ['PHP_SELF'], 37 00:02:32,720 --> 00:02:37,440 dhe kjo thjesht do të thotë se ne duam forma që do të paraqitet në skedarin aktual, 38 00:02:37,440 --> 00:02:41,040 cili, në këtë rast, është login.php. 39 00:02:41,040 --> 00:02:43,010 Pra, le të kthehemi në krye të këtij file. 40 00:02:43,010 --> 00:02:50,100 Nëse shfrytëzuesi dorëzuar formularin, pastaj $ _POST ['emri'] duhet të jenë të vendosur. 41 00:02:50,100 --> 00:02:53,750 Për më shumë informacion në lidhje me format e HTML dhe postës, 42 00:02:53,750 --> 00:02:56,510 shikoni PHP Mjete Zhvillimi videon. 43 00:02:56,510 --> 00:02:59,330 Në rast se përdoruesi ka dorëzuar formularin, 44 00:02:59,330 --> 00:03:03,970 ne do të donim për të shkruar vlerën që ata të shtypur në në seancë. 45 00:03:03,970 --> 00:03:08,540 Tani ne mund të përcjellim përdoruesit për hello.php. 46 00:03:08,540 --> 00:03:11,800 Sepse ne kemi ruajtur të dhëna të përdoruesit në seancë, 47 00:03:11,800 --> 00:03:18,240 hello.php do të jetë në gjendje për të hyrë në vlerën që ishte vendosur në login.php. 48 00:03:18,240 --> 00:03:21,010 Pra, le të kontrolloni këtë në një shfletues. 49 00:03:21,010 --> 00:03:27,520 Së pari, ne do të lundruar në http://localhost/hello.php. 50 00:03:27,520 --> 00:03:30,220 Ne mund të shohim këtu se ne nuk kemi hyrë brenda akoma, 51 00:03:30,220 --> 00:03:35,040 kështu që le të klikoni në linkun login, e cila do të na përcjellim të login.php. 52 00:03:35,040 --> 00:03:41,760 Mirë, unë do të shkruani emrin tim, i cili më pas do të ruhen në seancë. 53 00:03:41,760 --> 00:03:48,950 Great! Tani ne mund të shohim kontributin tim nga login.php në hello.php nëpërmjet seancës. 54 00:03:48,950 --> 00:03:52,270 Pra, ajo që për prerjet përdoruesit jashtë? 55 00:03:52,270 --> 00:03:58,510 E pra, në të identifikoheni in e përdoruesit, ne thjesht ruhet një vlerë në emrin e identifikimit. 56 00:03:58,510 --> 00:04:03,040 Pra, për të hyni përdorues jashtë, ne thjesht duhet të hiqni atë për emrin kyç 57 00:04:03,040 --> 00:04:05,040 nga array seancës. 58 00:04:05,040 --> 00:04:09,130 Pra, le të marrin një sy në këtë dosje të fundit, logout.php. 59 00:04:09,130 --> 00:04:12,080 Edhe një herë, ne do të duhet për të thirrur session_start () 60 00:04:12,080 --> 00:04:15,260 para se ne mund të bëjmë asgjë seancë lidhur. 61 00:04:15,260 --> 00:04:19,240 Tani ne thjesht mund të telefononi session_destroy (), 62 00:04:19,240 --> 00:04:22,460 e cila do të kujdeset për të hequr të gjitha të dhënat në seancën 63 00:04:22,460 --> 00:04:26,790 dhe pastaj përcjellëse përdorues përsëri në hello.php. 64 00:04:26,790 --> 00:04:30,700 Pra, në qoftë se unë klikoni në linkun Identifikohu jashtë, 65 00:04:30,700 --> 00:04:34,690 ne mund të shohim se serveri ka harruar kush jam, 66 00:04:34,690 --> 00:04:36,970 dhe unë nuk jam futur me emrin tuaj 67 00:04:36,970 --> 00:04:39,910 Pra, çfarë po ndodh këtu nën kapuç? 68 00:04:39,910 --> 00:04:42,250 Në mënyrë që të marrë sjelljen që sapo pamë, 69 00:04:42,250 --> 00:04:44,760 Serveri ynë ka nevojë për të bërë 2 gjëra. 70 00:04:44,760 --> 00:04:48,980 Së pari, server duhet të disi të ruajtur të dhënat në seancën. 71 00:04:48,980 --> 00:04:51,910 Dosjet e ndryshme PHP që përbëjnë një faqe interneti 72 00:04:51,910 --> 00:04:56,500 janë ekzekutuar si risive të veçanta të PHP përkthyesit 73 00:04:56,500 --> 00:05:00,550 ndryshueshme në mënyrë lokale nuk mund të ndahet midis tyre. 74 00:05:00,550 --> 00:05:04,030 Në vend të kësaj, server ka nevojë për të ruajtur të dhënat tona seance 75 00:05:04,030 --> 00:05:08,440 në ndonjë vend që të shumta. php fotografi mund të hyni. 76 00:05:08,440 --> 00:05:13,940 Së dyti, server ka nevojë që të lidhen të dhënat e seancës me vetëm seancën e mia në shfletim. 77 00:05:13,940 --> 00:05:15,940 Kur unë të hyni brënda për Facebook, 78 00:05:15,940 --> 00:05:20,460 ka ndoshta miliona njerëz të tjerë të regjistruar edhe në Facebook në të njëjtën kohë. 79 00:05:20,460 --> 00:05:24,200 Por server ka nevojë për një mënyrë për të shoqëruar të dhënat e mia 80 00:05:24,200 --> 00:05:28,340 me seancën time aktuale dhe të dhënat të dikujt tjetër me një seancë tjetër. 81 00:05:28,340 --> 00:05:32,380 Për fat të mirë, autorët e PHP menduar për të gjithë këtë për ne, 82 00:05:32,380 --> 00:05:35,170 kështu që ne nuk kemi nevojë për të zbatuar ndonjë të këtij veten. 83 00:05:35,170 --> 00:05:39,540 Por le të marrin një vështrim në atë PHP bën by default. 84 00:05:39,540 --> 00:05:44,070 Kur kam vizituar një faqe PHP përmban session_start për herë të parë, 85 00:05:44,070 --> 00:05:47,930 PHP do të gjenerojë një vlerë të madhe të rastit. 86 00:05:47,930 --> 00:05:53,970 Deri session_destroy quhet-të se nuk e vizitoni ndonjë faqe PHP në këtë vend për një kohë- 87 00:05:53,970 --> 00:05:59,050 që vlera e rastit dhe ndoshta unike do të jenë të lidhur me mua. 88 00:05:59,050 --> 00:06:02,780 Në këtë mënyrë server ka ende rrugë të identifikimit sesion time browsing 89 00:06:02,780 --> 00:06:05,710 në krahasim me të dikujt tjetër. 90 00:06:05,710 --> 00:06:08,780 Ne mund të marrë një vështrim në ID e tanishme e identifikimit 91 00:06:08,780 --> 00:06:12,380 duke përdorur funksionin PHP, session_ID. 92 00:06:12,380 --> 00:06:17,250 Këtu ne jemi thjesht kompjuteri vlerën e identifikues tonë seancës. 93 00:06:17,250 --> 00:06:20,580 Pra, nëse ne përsëri të hyni brënda për web app shembull, 94 00:06:20,580 --> 00:06:25,530 dhe tani lundruar në sessid.php, 95 00:06:25,530 --> 00:06:27,850 ne do të shohim në këtë varg të gjatë të karaktereve, 96 00:06:27,850 --> 00:06:31,180 dhe kjo është identifikues i tanishëm për seancën e mia, 97 00:06:31,180 --> 00:06:35,410 dhe kjo është se si server po i mban gjurmët e të cilët unë jam. 98 00:06:35,410 --> 00:06:37,670 Mirë, por ne kemi zgjidhur vetëm gjysmën e problemit. 99 00:06:37,670 --> 00:06:40,910 Sure, server tani ka një mënyrë për të identifikuar më, 100 00:06:40,910 --> 00:06:46,060 por kur kam vizituar një tjetër faqe, server ka nevojë për ripërdorimin që të njëjtën identifikues 101 00:06:46,060 --> 00:06:48,910 në vend se të gjeneruar një të ri. 102 00:06:48,910 --> 00:06:52,760 Mos harroni, nëse unë deklaroj një ndryshore lokale në foo.php 103 00:06:52,760 --> 00:06:55,190 dhe pastaj vizito bar.php, 104 00:06:55,190 --> 00:07:00,980 bar.php nuk ka asnjë mënyrë për të ditur se çfarë ka ndodhur në foo.php. 105 00:07:00,980 --> 00:07:07,450 Pra, zbatimi seanca e parazgjedhur php kërkon që shfletuesi kujtoj server 106 00:07:07,450 --> 00:07:09,740 Seanca e cila ID për t'u përdorur. 107 00:07:09,740 --> 00:07:12,710 Kjo realizohet në formën e një cookie. 108 00:07:12,710 --> 00:07:15,370 Një cookie-përveç të qënit një rostiçeri shijshme- 109 00:07:15,370 --> 00:07:18,630 është thjesht një skedar teksti të vogël në kompjuterin tuaj 110 00:07:18,630 --> 00:07:21,780 se një server mund të shkruani për të nëpërmjet web browser. 111 00:07:21,780 --> 00:07:27,300 Pra, pas PHP gjeneron unike identitetit tim sesion nëpërmjet session_start, 112 00:07:27,300 --> 00:07:34,210 ajo do të tregojë shfletuesit të internetit për të ruajtur atë identifikues në një skedar teksti lokale, ose një cookie. 113 00:07:34,210 --> 00:07:38,490 Pastaj web browser do të përfshijë atë identifikues në çdo kërkesë 114 00:07:38,490 --> 00:07:40,780 që bën të server. 115 00:07:40,780 --> 00:07:44,280 Pra, me të vërtetë, Serveri web nuk është kujtuar kush jam. 116 00:07:44,280 --> 00:07:48,780 Në vend të kësaj, shfletuesin web është thjesht kujtuar identifikues unik 117 00:07:48,780 --> 00:07:52,730 që u gjenerua nga PHP dhe pastaj vazhdimisht kujtuar server 118 00:07:52,730 --> 00:07:55,120 atë që identifikues është. 119 00:07:55,120 --> 00:08:00,760 Në këtë mënyrë, informacion si emrin tim të përdoruesit është e ruajtur në server jo shfletuesin tim web. 120 00:08:00,760 --> 00:08:05,190 Shfletuesi thjesht tregon server ku PHP ruajtur këtë informacion 121 00:08:05,190 --> 00:08:07,750 kështu PHP mund të marrim atë. 122 00:08:07,750 --> 00:08:12,150 Kështu që ngre pyetjen, ku është e PHP në të vërtetë ruajtjen këtë informacion? 123 00:08:12,150 --> 00:08:14,910 By default, PHP do të ruajtur të dhënat tuaja seancë 124 00:08:14,910 --> 00:08:19,540 në një dosje brenda të / tmp, ose dosjen e "temp". 125 00:08:19,540 --> 00:08:24,450 Emri i file që do të përfshijë ID sesion kështu PHP mund të përcaktojë 126 00:08:24,450 --> 00:08:28,620 të cilat fotografi për të lexuar dhe shkruar nga vetëm nëpërmjet ID e seancës. 127 00:08:28,620 --> 00:08:32,280 Dakord. Pra, le të hapur tab Rrjetit në Rregullues Chrome 128 00:08:32,280 --> 00:08:34,890 nëpërmjet ikonën pikëllim në krye të drejtë. 129 00:08:34,890 --> 00:08:38,409 Tani le të shkojnë në hello.php përsëri. 130 00:08:38,409 --> 00:08:42,270 Le të klikoni mbi HTTP kërkesë për hello.php 131 00:08:42,270 --> 00:08:44,680 dhe pastaj klikoni mbi Headers. 132 00:08:44,680 --> 00:08:50,390 Këtu ne mund të shohim se header cookie përmban një çelës të quajtur PHPSESSID, 133 00:08:50,390 --> 00:08:55,980 ose sesion PHP ID-me një vlerë që është po atë varg të gjatë e pamë 134 00:08:55,980 --> 00:08:59,290 kur kemi vizituar sessid.php. 135 00:08:59,290 --> 00:09:04,660 Kjo është pikërisht se si shfletuesi është kujtuar server çfarë ID seancë duhet të përdoret. 136 00:09:04,660 --> 00:09:08,180 Është e përfshirë atë në një HTTP header. 137 00:09:08,180 --> 00:09:10,500 Dakord. Le të kthehen në terminalin. 138 00:09:10,500 --> 00:09:16,450 Le të lundruar në / tmp, ku PHP është ruajtjen e informacionit sesion by default. 139 00:09:16,450 --> 00:09:19,160 Pa dyshim, në brendësi të kësaj dosje të përkohshme, 140 00:09:19,160 --> 00:09:23,550 këtu është një fotografi që përmban të njëjtën ID saktë sesion. 141 00:09:23,550 --> 00:09:28,990 Nëse do të hapë këtë fotografi, ne mund të shohim se si PHP përfaqëson sesion time në disk. 142 00:09:28,990 --> 00:09:32,870 Këtu string "Tommy" është duke u ruajtur për kyç 'emrin' 143 00:09:32,870 --> 00:09:35,750 e cila është pikërisht ajo që ne prisnin. 144 00:09:35,750 --> 00:09:38,850 Dhe kjo është një përmbledhje e seancave në PHP. 145 00:09:38,850 --> 00:09:42,590 Ajo që ne vetëm e pa ishte vetëm zbatimi parazgjedhje e seancave. 146 00:09:42,590 --> 00:09:45,600 Në fakt, shumë faqet e internetit të ndryshuar këtë sjellje të parazgjedhur 147 00:09:45,600 --> 00:09:48,280 për të ruajtur seancat PHP mënyrë më efikase 148 00:09:48,280 --> 00:09:50,390 në interes të përmirësimit të performancës. 149 00:09:50,390 --> 00:09:52,800 Emri im është Tommy, dhe kjo është CS50. 150 00:09:52,800 --> 00:09:56,000 [CS50.TV]