1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [PHP Sessions] 2 00:00:02,000 --> 00:00:04,000 [Tommy MacWilliam, Harvard University] 3 00:00:04,000 --> 00:00:07,000 [Þetta er CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,920 Fundur í PHP er hægt að nota til að innleiða virkni, 5 00:00:10,920 --> 00:00:13,440 eins notandi tenging, í vefur app. 6 00:00:13,440 --> 00:00:16,920 PHP fundur leyfa þér að tengja upplýsingar 7 00:00:16,920 --> 00:00:19,680 með öllu beit fundur notanda 8 00:00:19,680 --> 00:00:22,290 frekar en einfaldlega einni síðu. 9 00:00:22,290 --> 00:00:27,330 Svo það þýðir sem notandi heimsækir Ýmsir PHP síðum sem gera upp vefsíðu þína, 10 00:00:27,330 --> 00:00:30,630 allar upplýsingar í þinginu verði viðvarandi. 11 00:00:30,630 --> 00:00:34,770 Svo þýðir að að gögn sem geymd eru í setu með einni síðu 12 00:00:34,770 --> 00:00:37,580 geta seinna er hægt að nálgast með aðra síðu. 13 00:00:37,580 --> 00:00:40,080 Geyma upplýsingar í setu er auðvelt, 14 00:00:40,080 --> 00:00:48,790 og við gerum það í gegnum dollaramerki, undirstrika, höfuðborg breytu fundur. 15 00:00:48,790 --> 00:00:52,620 Dollaramerki, undirstrika, SESSION-bara eins og dollaramerki, undirstrika, GET 16 00:00:52,620 --> 00:00:54,710 og dollaramerki, undirstrika, POST- 17 00:00:54,710 --> 00:00:58,690 er tengin array sem samanstendur af helstu gildi pör. 18 00:00:58,690 --> 00:01:07,980 Svo við getum notað setningafræði eins dollaramerki, undirstrika, þinginu, 19 00:01:07,980 --> 00:01:16,000 krappi, quote, foo, quote, krappi, jafngildir, quote, bar, vitna- 20 00:01:16,000 --> 00:01:20,440 til að vista gildið "bar" í helstu "foo". 21 00:01:20,440 --> 00:01:24,030 En áður en við getum skrifað eða lesið frá fundi fylking, 22 00:01:24,030 --> 00:01:26,770 við munum þurfa að hringja í sérstaka aðgerð- 23 00:01:26,770 --> 00:01:34,690 fundur, undirstrika, byrja, () - 24 00:01:34,690 --> 00:01:37,060 og þetta mun frumstillt fundur. 25 00:01:37,060 --> 00:01:39,850 Þannig að við skulum taka a líta á dæmi. 26 00:01:39,850 --> 00:01:46,570 Fyrstu síðu okkar, hello.php, notar fundur að framleiðsla nokkur gögn til notanda. 27 00:01:46,570 --> 00:01:53,920 Mundu, við munum þurfa að nota session_start áður en við getum nálgast allar fundur gögn. 28 00:01:53,920 --> 00:01:59,010 Nú erum við að nota isset PHP til að ákvarða hvort til sé lykill 29 00:01:59,010 --> 00:02:03,230 í $ _SESSION tengin array. 30 00:02:03,230 --> 00:02:07,250 Ef þessi lykill er til, sem þýðir að notandinn hefur skráð í, 31 00:02:07,250 --> 00:02:10,410 þannig að við munum birta nafn notandans. 32 00:02:10,410 --> 00:02:14,110 Ef þessi lykill er ekki sett, sem þýðir að notandinn hefur ekki skráð sig inn, 33 00:02:14,110 --> 00:02:17,880 þannig að við munum birta tengil á login.php. 34 00:02:17,880 --> 00:02:21,380 Þannig að við skulum kíkja á login.php. 35 00:02:21,380 --> 00:02:26,260 Niður hér, höfum við eitt HTML formi með einum inntak. 36 00:02:26,260 --> 00:02:32,720 Aðgerð eiginleiki Eyðublaðið er $ _SERVER ['PHP_SELF'], 37 00:02:32,720 --> 00:02:37,440 og þetta þýðir einfaldlega að við viljum að honum það við skrána, 38 00:02:37,440 --> 00:02:41,040 , sem í þessu tilfelli, er login.php. 39 00:02:41,040 --> 00:02:43,010 Svo við skulum fara aftur til the toppur af þessari skrá. 40 00:02:43,010 --> 00:02:50,100 Ef notandinn sent inn mynd, þá $ _POST ['nafn'] skal setja. 41 00:02:50,100 --> 00:02:53,750 Fyrir frekari upplýsingar um HTML formum og staða, 42 00:02:53,750 --> 00:02:56,510 skrá sig út the PHP Web Development vídeó. 43 00:02:56,510 --> 00:02:59,330 Í tilviki sem notandinn gerði senda inn mynd, 44 00:02:59,330 --> 00:03:03,970 viljum við að skrifa gildið sem þeir slegið í inn í the fundur. 45 00:03:03,970 --> 00:03:08,540 Nú getum við áframsenda notandann til hello.php. 46 00:03:08,540 --> 00:03:11,800 Vegna þess að við höfum geymt inntak notandans í þinginu, 47 00:03:11,800 --> 00:03:18,240 hello.php vilja vera fær til aðgangur the gildi sem var sett í login.php. 48 00:03:18,240 --> 00:03:21,010 Svo skulum við athuga þetta út í a vefur flettitæki. 49 00:03:21,010 --> 00:03:27,520 Fyrst munum við sigla til http://localhost/hello.php. 50 00:03:27,520 --> 00:03:30,220 Við sjáum hér að við höfum ekki skráð sig inn, 51 00:03:30,220 --> 00:03:35,040 þannig að við skulum smella á innskráningu hlekkur, sem verður sent okkur til login.php. 52 00:03:35,040 --> 00:03:41,760 Allt í lagi, ég ætla að slá inn nafnið mitt, sem mun þá vera geymd í þinginu. 53 00:03:41,760 --> 00:03:48,950 Great! Nú getum við séð inntak mína frá login.php á hello.php gegnum fundi. 54 00:03:48,950 --> 00:03:52,270 Svo, hvað um skógarhögg notanda út? 55 00:03:52,270 --> 00:03:58,510 Jæja, til að skrá þig notanda í, við geymd einfaldlega gildi í nafni fundur. 56 00:03:58,510 --> 00:04:03,040 Svo til að skrá þig notanda út, þurfum við einfaldlega að fjarlægja þessi nafn takkann 57 00:04:03,040 --> 00:04:05,040 frá fundi fylkisins. 58 00:04:05,040 --> 00:04:09,130 Þannig að við skulum taka a líta á þetta síðasta lagið, logout.php. 59 00:04:09,130 --> 00:04:12,080 Enn og aftur, við munum þurfa að hringja session_start () 60 00:04:12,080 --> 00:04:15,260 áður en við getum gert hvað sem fundur tengjast. 61 00:04:15,260 --> 00:04:19,240 Nú getum við einfaldlega kalla session_destroy (), 62 00:04:19,240 --> 00:04:22,460 sem mun sjá um að fá losa af öllum gögnum í setu 63 00:04:22,460 --> 00:04:26,790 og síðan áframsenda notandi til baka hello.php. 64 00:04:26,790 --> 00:04:30,700 Svo ef ég smelli á Log Out Hlekkur, 65 00:04:30,700 --> 00:04:34,690 getum við séð að framreiðslumaður hefur gleymt hver ég er, 66 00:04:34,690 --> 00:04:36,970 og ég er ekki lengur skráður inn 67 00:04:36,970 --> 00:04:39,910 Svo hvað er að gerast hér undir hetta? 68 00:04:39,910 --> 00:04:42,250 Í því skyni að fá hegðun Við sáum bara, 69 00:04:42,250 --> 00:04:44,760 þjónninn okkar þarf að gera 2 hluti. 70 00:04:44,760 --> 00:04:48,980 First, the framreiðslumaður þarf að einhvern veginn geyma gögn í þinginu. 71 00:04:48,980 --> 00:04:51,910 Mismunandi PHP skrár sem samanstanda vefsíðu 72 00:04:51,910 --> 00:04:56,500 eru keyrð sem aðskildir invocations í PHP túlkur 73 00:04:56,500 --> 00:05:00,550 svo staðbundin breytu er ekki hægt að deila á milli þeirra. 74 00:05:00,550 --> 00:05:04,030 Þess í stað miðlara þarf að geyma fundur gögn okkar 75 00:05:04,030 --> 00:05:08,440 í sumum stað að margar. PHP skrár geta nálgast. 76 00:05:08,440 --> 00:05:13,940 Í öðru lagi, the framreiðslumaður þarf að tengja fundur gögn með aðeins minni beit fundur. 77 00:05:13,940 --> 00:05:15,940 Þegar ég tenging til Facebook, 78 00:05:15,940 --> 00:05:20,460 það eru sennilega milljónir af öðru fólki líka skráður inn á Facebook á sama tíma. 79 00:05:20,460 --> 00:05:24,200 En þjóninn þarf einhverja leið til að tengja gögn mín 80 00:05:24,200 --> 00:05:28,340 með núverandi setu mína og gögn einhvers annars með öðru fundur. 81 00:05:28,340 --> 00:05:32,380 Sem betur fer, höfundar PHP hugsaði um þetta allt fyrir okkur, 82 00:05:32,380 --> 00:05:35,170 þannig að við þurfum ekki að framkvæma eitthvað af þessu sjálf. 83 00:05:35,170 --> 00:05:39,540 En við skulum kíkja á hvað PHP er sjálfgefið. 84 00:05:39,540 --> 00:05:44,070 Þegar ég fer á PHP síðu sem inniheldur session_start í fyrsta skipti, 85 00:05:44,070 --> 00:05:47,930 PHP mun búa til stór hending. 86 00:05:47,930 --> 00:05:53,970 Þangað session_destroy er kallað-eða ég að fara ekki á PHP síður á því vefsvæði um stund- 87 00:05:53,970 --> 00:05:59,050 að handahófi og sennilega einstakt gildi verður í tengslum við mig. 88 00:05:59,050 --> 00:06:02,780 Þannig að framreiðslumaður hefur einhverja leið til að auðkenna beit fundur minn 89 00:06:02,780 --> 00:06:05,710 öfugt við einhvers annars. 90 00:06:05,710 --> 00:06:08,780 Við getum tekið að líta á núverandi fundur ID 91 00:06:08,780 --> 00:06:12,380 nota PHP virka, session_ID. 92 00:06:12,380 --> 00:06:17,250 Hér erum við einfaldlega outputting verðmæti fundur auðkenni okkar. 93 00:06:17,250 --> 00:06:20,580 Þannig að ef við tenging aftur til dæmis vefur app, 94 00:06:20,580 --> 00:06:25,530 og nú sigla til sessid.php, 95 00:06:25,530 --> 00:06:27,850 við munum sjá þetta langan streng af stöfum, 96 00:06:27,850 --> 00:06:31,180 og það er núverandi kennimerki fyrir setu mína, 97 00:06:31,180 --> 00:06:35,410 og það er hvernig the framreiðslumaður er að halda utan um hver ég er. 98 00:06:35,410 --> 00:06:37,670 Allt í lagi, en við höfum aðeins leyst helminginn af vandamálinu. 99 00:06:37,670 --> 00:06:40,910 Jú, framreiðslumaður hefur nú einhvern hátt að skilgreina mig, 100 00:06:40,910 --> 00:06:46,060 en þegar ég heimsækja aðra síðu, miðlara þarf að endurnýta þessi sömu auðkenni 101 00:06:46,060 --> 00:06:48,910 frekar en að búa til nýjan. 102 00:06:48,910 --> 00:06:52,760 Mundu, ef ég lýsa staðbundna breytu í foo.php 103 00:06:52,760 --> 00:06:55,190 og þá fara bar.php, 104 00:06:55,190 --> 00:07:00,980 bar.php hefur enga leið að vita hvað gerðist í foo.php. 105 00:07:00,980 --> 00:07:07,450 Krefst sjálfgefið PHP fundur framkvæmd að vafrinn minna miðlara 106 00:07:07,450 --> 00:07:09,740 sem fundur ID að nota. 107 00:07:09,740 --> 00:07:12,710 Þetta er framkvæmd í formi kex. 108 00:07:12,710 --> 00:07:15,370 Fótspor-auk þess að vera dýrindis snarl- 109 00:07:15,370 --> 00:07:18,630 er einfaldlega lítil textaskrá á tölvunni þinni 110 00:07:18,630 --> 00:07:21,780 að miðlara getur skrifað í gegnum vefur flettitæki. 111 00:07:21,780 --> 00:07:27,300 Svo eftir PHP býr einstakt fundur ID mitt í gegnum session_start, 112 00:07:27,300 --> 00:07:34,210 það er að fara að segja vefskoðaranum að geyma þessi auðkenni í sveitarstjórn textaskrá eða kex. 113 00:07:34,210 --> 00:07:38,490 Þá vefskoðarinn fela það heiti í hverjum beiðni 114 00:07:38,490 --> 00:07:40,780 sem það gerir til the framreiðslumaður. 115 00:07:40,780 --> 00:07:44,280 Svo í raun, vefur framreiðslumaður er ekki að muna hver ég er. 116 00:07:44,280 --> 00:07:48,780 Þess í stað er vefur flettitæki er einfaldlega að muna einstakt auðkenni 117 00:07:48,780 --> 00:07:52,730 sem var mynda við PHP og þá stöðugt að minna á þjóninum 118 00:07:52,730 --> 00:07:55,120 hvað það heiti er. 119 00:07:55,120 --> 00:08:00,760 Þannig upplýsingar eins og notandanafn mitt er geymt á miðlara ekki vafranum mínum. 120 00:08:00,760 --> 00:08:05,190 Vafrinn segir einfaldlega þjóninn sem PHP geymdar þær upplýsingar 121 00:08:05,190 --> 00:08:07,750 svo PHP getur sótt hana. 122 00:08:07,750 --> 00:08:12,150 Svo bidur að spurningin, hvar er PHP raun geyma þessar upplýsingar? 123 00:08:12,150 --> 00:08:14,910 Sjálfgefið, PHP mun geyma fundur gögn þín 124 00:08:14,910 --> 00:08:19,540 í skrá inni af / tmp eða möppunnar 'afleysingamanneskja ". 125 00:08:19,540 --> 00:08:24,450 Nafn þessi skrá mun innihalda fundur ID þannig PHP er hægt að ákvarða 126 00:08:24,450 --> 00:08:28,620 hver skrá til að lesa og skrifa frá með aðeins Session ID. 127 00:08:28,620 --> 00:08:32,280 Allt í lagi. Svo skulum opna flipann Network í aflúsara Króm ' 128 00:08:32,280 --> 00:08:34,890 gegnum skiptilykill táknið efst til hægri. 129 00:08:34,890 --> 00:08:38,409 Nú skulum höfuð til hello.php aftur. 130 00:08:38,409 --> 00:08:42,270 Skulum smella á HTTP beiðni til hello.php 131 00:08:42,270 --> 00:08:44,680 og síðan smellt á haus. 132 00:08:44,680 --> 00:08:50,390 Hér getum við séð að kex haus inniheldur lykill gestur PHPSESSID, 133 00:08:50,390 --> 00:08:55,980 eða PHP fundur ID-með gildi sem er það sama snærisspotta við sáum 134 00:08:55,980 --> 00:08:59,290 þegar við heimsóttum sessid.php. 135 00:08:59,290 --> 00:09:04,660 Þetta er einmitt hvernig vafrinn er minna miðlara hvaða fundur ID ætti að nota. 136 00:09:04,660 --> 00:09:08,180 Það er talið það í HTTP haus. 137 00:09:08,180 --> 00:09:10,500 Allt í lagi. Skulum höfuðið aftur á flugstöðina. 138 00:09:10,500 --> 00:09:16,450 Skulum sigla til / tmp, þar PHP er sögufrægur fundur upplýsingar sjálfgefið. 139 00:09:16,450 --> 00:09:19,160 Viss nógur, inni af þessari tímabundnu möppu, 140 00:09:19,160 --> 00:09:23,550 hér er skrá sem inniheldur sama nákvæmlega fundur ID. 141 00:09:23,550 --> 00:09:28,990 Ef við opna þessa skrá, getum við séð hvernig PHP er fulltrúi fundur mína á diskinn. 142 00:09:28,990 --> 00:09:32,870 Hér strengurinn "Tommy" er geymt fyrir helstu 'nafn' 143 00:09:32,870 --> 00:09:35,750 sem er einmitt það sem við vorum að búast. 144 00:09:35,750 --> 00:09:38,850 Og það er yfirlit yfir fundur í PHP. 145 00:09:38,850 --> 00:09:42,590 Það sem við sáum var bara aðeins sjálfgefið framkvæmd fundum. 146 00:09:42,590 --> 00:09:45,600 Í staðreynd, margir vefsíður breyta þessu sjálfgefna hegðun 147 00:09:45,600 --> 00:09:48,280 að geyma PHP fundur skilvirkari 148 00:09:48,280 --> 00:09:50,390 í þágu bæta árangur. 149 00:09:50,390 --> 00:09:52,800 Mitt nafn er Tommy, og þetta er CS50. 150 00:09:52,800 --> 00:09:56,000 [CS50.TV]