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 [Tas ir CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,920 Sesijas PHP var izmantot, lai īstenotu funkcionalitāti, 5 00:00:10,920 --> 00:00:13,440 piemēram, lietotāja autorizācijas, jūsu web app. 6 00:00:13,440 --> 00:00:16,920 PHP sesijas ļauj saistīt informāciju 7 00:00:16,920 --> 00:00:19,680 ar lietotāja visu pārlūkošanas sesijas 8 00:00:19,680 --> 00:00:22,290 nevis vienkārši vienas lapas. 9 00:00:22,290 --> 00:00:27,330 Tātad tas nozīmē, jo lietotājs apmeklē dažādus PHP lapas, kas padara jūsu mājas lapā, 10 00:00:27,330 --> 00:00:30,630 jebkura informācija sesijā turpināsies. 11 00:00:30,630 --> 00:00:34,770 Tātad tas nozīmē, ka dati, ko glabā sesijā par vienu lapu 12 00:00:34,770 --> 00:00:37,580 vēlāk var piekļūt citu lapu. 13 00:00:37,580 --> 00:00:40,080 Uzglabāt informāciju sesijā ir viegli, 14 00:00:40,080 --> 00:00:48,790 un mēs to darām ar dolāra zīmi, uzsvērt, kapitāla sesijas mainīgo. 15 00:00:48,790 --> 00:00:52,620 Dolāra zīmi, uzsvērt, sesija, tāpat kā dolāra zīmi, uzsvērt, GET 16 00:00:52,620 --> 00:00:54,710 un dolāra zīmi, uzsvērt, POST- 17 00:00:54,710 --> 00:00:58,690 ir asociatīvā masīva veido galveno vērtību pārus. 18 00:00:58,690 --> 00:01:07,980 Tātad, mēs varam izmantot sintakse līdzīgu dolāra zīmi, uzsvērt, sesija, 19 00:01:07,980 --> 00:01:16,000 bracket, citēju, foo, citēju, bracket, vienlīdzības, citēju, bārs, citēju- 20 00:01:16,000 --> 00:01:20,440 lai saglabātu vērtību "bar" atslēgas "foo". 21 00:01:20,440 --> 00:01:24,030 Tomēr, pirms mēs varam rakstīt vai lasīt no sesijas masīva, 22 00:01:24,030 --> 00:01:26,770 mums būs nepieciešams, lai izsauktu īpašu funkciju- 23 00:01:26,770 --> 00:01:34,690 sesija, uzsvērt, sāciet () - 24 00:01:34,690 --> 00:01:37,060 un tas sāktu sesiju. 25 00:01:37,060 --> 00:01:39,850 Tātad, pieņemsim to apskatīt piemērs. 26 00:01:39,850 --> 00:01:46,570 Mūsu pirmās lapas, hello.php, izmanto sesijas produkciju dažus datus lietotājam. 27 00:01:46,570 --> 00:01:53,920 Atcerieties, ka mums būs nepieciešams, lai izmantotu session_start, pirms mēs varam piekļūt visiem sesijas datus. 28 00:01:53,920 --> 00:01:59,010 Tagad mēs esam izmantojot PHP isset lai noteiktu, vai galvenais eksistē 29 00:01:59,010 --> 00:02:03,230 ar $ _SESSION asociatīvā masīva. 30 00:02:03,230 --> 00:02:07,250 Ja šis taustiņš nav, tas nozīmē, ka lietotājs ir pieteicies, 31 00:02:07,250 --> 00:02:10,410 tāpēc mēs parādīsim lietotāja vārdu. 32 00:02:10,410 --> 00:02:14,110 Ja šis taustiņš nav noteikts, tas nozīmē, ka lietotājs nav pieteicies vēl, 33 00:02:14,110 --> 00:02:17,880 tāpēc mēs parādīsim saiti uz login.php. 34 00:02:17,880 --> 00:02:21,380 Tātad, pieņemsim to apskatīt login.php. 35 00:02:21,380 --> 00:02:26,260 Šeit lejā, mums ir vienota HTML formu ar vienu ieejas. 36 00:02:26,260 --> 00:02:32,720 Veidlapā rīcība atribūts ir $ _SERVER ['PHP_SELF'] 37 00:02:32,720 --> 00:02:37,440 un tas vienkārši nozīmē, ka mēs gribam veidlapa jāiesniedz pašreizējo failu, 38 00:02:37,440 --> 00:02:41,040 , kas šajā gadījumā ir login.php. 39 00:02:41,040 --> 00:02:43,010 Tāpēc iesim atpakaļ uz augšu šo failu. 40 00:02:43,010 --> 00:02:50,100 Ja lietotājs iesniedz veidlapu, tad $ _POST ['name'] ir jānosaka. 41 00:02:50,100 --> 00:02:53,750 Plašāku informāciju par HTML formas un pastu, 42 00:02:53,750 --> 00:02:56,510 izbraukšana PHP Web Development video. 43 00:02:56,510 --> 00:02:59,330 Gadījumā, ja lietotājs did sniegt formu, 44 00:02:59,330 --> 00:03:03,970 mēs gribētu rakstīt vērtību, ka tie drukāti uz sesiju. 45 00:03:03,970 --> 00:03:08,540 Tagad mēs varam novirzīt lietotājam hello.php. 46 00:03:08,540 --> 00:03:11,800 Jo mēs esam saglabāti lietotāja ievadīti sesijā, 47 00:03:11,800 --> 00:03:18,240 hello.php varēs piekļūt vērtību, kas bija noteikta ar login.php. 48 00:03:18,240 --> 00:03:21,010 Tāpēc pieņemsim pārbaudīt šo out ar interneta pārlūku. 49 00:03:21,010 --> 00:03:27,520 Pirmkārt, mēs virzītos uz http://localhost/hello.php. 50 00:03:27,520 --> 00:03:30,220 Mēs varam redzēt, ka mēs esam nav pieteicies vēl, 51 00:03:30,220 --> 00:03:35,040 tāpēc pieņemsim noklikšķiniet uz pieteikšanās saites, kas būs novirzīt mūs login.php. 52 00:03:35,040 --> 00:03:41,760 Labi, es ņemšu rakstīt manu vārdu, kas tiks saglabāti sesijā. 53 00:03:41,760 --> 00:03:48,950 Lieliski! Tagad mēs varam redzēt savu ieguldījumu no login.php par hello.php caur sesiju. 54 00:03:48,950 --> 00:03:52,270 Tātad, ko par kokmateriālu lietotājs ārā? 55 00:03:52,270 --> 00:03:58,510 Nu, lai pieteiktos lietotājs, mēs vienkārši uzglabāt vērtību uz sesijas nosaukumu. 56 00:03:58,510 --> 00:04:03,040 Tātad, lai pieteiktos lietotājs, mums vienkārši ir nepieciešams, lai novērstu šo nosaukumu atslēgu 57 00:04:03,040 --> 00:04:05,040 no sesijas masīva. 58 00:04:05,040 --> 00:04:09,130 Tātad, pieņemsim to apskatīt šo pēdējo failu, logout.php. 59 00:04:09,130 --> 00:04:12,080 Atkal, mums būs nepieciešams, lai izsauktu session_start () 60 00:04:12,080 --> 00:04:15,260 pirms mēs varam darīt neko sesiju saistīto. 61 00:04:15,260 --> 00:04:19,240 Tagad mēs varam vienkārši zvanīt session_destroy () 62 00:04:19,240 --> 00:04:22,460 kas parūpēsies, lai atbrīvotos no visiem datiem sesijas 63 00:04:22,460 --> 00:04:26,790 un pēc tam novirzīt lietotājam atpakaļ hello.php. 64 00:04:26,790 --> 00:04:30,700 Tātad, ja es noklikšķiniet uz Iziet saiti, 65 00:04:30,700 --> 00:04:34,690 mēs varam redzēt, ka serveris ir aizmirsuši, kas es esmu, 66 00:04:34,690 --> 00:04:36,970 un es vairs ienācis 67 00:04:36,970 --> 00:04:39,910 Tātad, kas notiek šeit, zem pārsega? 68 00:04:39,910 --> 00:04:42,250 Lai iegūtu mēs tikai redzēja uzvedību, 69 00:04:42,250 --> 00:04:44,760 Mūsu serveris ir jādara 2 lietas. 70 00:04:44,760 --> 00:04:48,980 Pirmkārt, serveris ir kaut kā uzglabāt datus sesijā. 71 00:04:48,980 --> 00:04:51,910 Dažādie PHP faili, kas ietver mājas lapā 72 00:04:51,910 --> 00:04:56,500 tiek noformēti kā atsevišķi invocations par PHP tulks 73 00:04:56,500 --> 00:05:00,550 lai vietējā mainīgo nevar sadalīt starp tām. 74 00:05:00,550 --> 00:05:04,030 Tā vietā, serveris nepieciešams, lai saglabātu mūsu sesijas datus 75 00:05:04,030 --> 00:05:08,440 kādā vietā, kas vairākus. php failus var piekļūt. 76 00:05:08,440 --> 00:05:13,940 Otrkārt, serveris ir saistīt sesijas datus tikai ar manu pārlūkošanas sesijas. 77 00:05:13,940 --> 00:05:15,940 Kad es piesakieties Facebook, 78 00:05:15,940 --> 00:05:20,460 ir iespējams, miljoniem citiem cilvēkiem arī pieteicies Facebook, tajā pašā laikā. 79 00:05:20,460 --> 00:05:24,200 Bet serveris ir kaut kādā veidā iesaistīt savus datus 80 00:05:24,200 --> 00:05:28,340 ar manu pašreizējo sesiju un kāds cits datus ar citu sesiju. 81 00:05:28,340 --> 00:05:32,380 Par laimi, autori PHP domāja par to visu mums, 82 00:05:32,380 --> 00:05:35,170 tāpēc mums nav nepieciešams, lai īstenotu kādu no šo sevi. 83 00:05:35,170 --> 00:05:39,540 Bet pieņemsim apskatīt to, ko PHP dara pēc noklusējuma. 84 00:05:39,540 --> 00:05:44,070 Kad es apmeklēju PHP lapu ar session_start pirmo reizi, 85 00:05:44,070 --> 00:05:47,930 PHP radīs lielu izlases vērtību. 86 00:05:47,930 --> 00:05:53,970 Līdz session_destroy sauc vai man nav apmeklēt jebkuru PHP lapām šajā vietā, bet, 87 00:05:53,970 --> 00:05:59,050 ka izlases un, iespējams, unikāla vērtība būs saistīts ar mani. 88 00:05:59,050 --> 00:06:02,780 Tādā veidā serveris ir kaut kādā veidā identificēt manu pārlūkošanas sesiju 89 00:06:02,780 --> 00:06:05,710 nevis kāds cits. 90 00:06:05,710 --> 00:06:08,780 Mēs varam apskatīt pašreizējās sesijas ID 91 00:06:08,780 --> 00:06:12,380 izmantojot PHP funkciju, session_id. 92 00:06:12,380 --> 00:06:17,250 Šeit mēs vienkārši outputting vērtību mūsu sesijas identifikatoru. 93 00:06:17,250 --> 00:06:20,580 Tātad, ja mēs atkal pieteiktos piemēram, web app, 94 00:06:20,580 --> 00:06:25,530 un tagad virzītos uz sessid.php, 95 00:06:25,530 --> 00:06:27,850 mēs redzam šo ilgi rakstzīmju virkne, 96 00:06:27,850 --> 00:06:31,180 un tas ir pašreizējā identifikators manu sesiju 97 00:06:31,180 --> 00:06:35,410 un tas, kā serveris ir sekot, kas es esmu. 98 00:06:35,410 --> 00:06:37,670 Labi, bet mēs esam tikai atrisināt pusi problēmu. 99 00:06:37,670 --> 00:06:40,910 Protams, serveris tagad ir kaut kādā veidā identificēt mani, 100 00:06:40,910 --> 00:06:46,060 bet, kad es apmeklēt citu lapu, serveris ir atkārtoti to pašu identifikatoru 101 00:06:46,060 --> 00:06:48,910 nevis radot jaunu. 102 00:06:48,910 --> 00:06:52,760 Atcerieties, ja es apliecinu vietējo mainīgais foo.php 103 00:06:52,760 --> 00:06:55,190 un tad apmeklējiet bar.php, 104 00:06:55,190 --> 00:07:00,980 bar.php ir nekādi nevar zināt, kas notika foo.php. 105 00:07:00,980 --> 00:07:07,450 Tāpēc noklusējuma php sesija īstenošana paredz, ka pārlūks atgādināt serveri 106 00:07:07,450 --> 00:07:09,740 kas sesijas ID, lai izmantotu. 107 00:07:09,740 --> 00:07:12,710 Tas tiek īstenots formā cookie. 108 00:07:12,710 --> 00:07:15,370 Cookie, papildus tam, ka garšīgi uzkodu 109 00:07:15,370 --> 00:07:18,630 ir tikai neliels teksta fails datorā 110 00:07:18,630 --> 00:07:21,780 ka serveris var rakstīt, izmantojot interneta pārlūku. 111 00:07:21,780 --> 00:07:27,300 Lai pēc PHP ģenerē savu unikālo sesijas identifikatoru izmantojot session_start, 112 00:07:27,300 --> 00:07:34,210 tas notiek, lai pastāstītu interneta pārlūku, lai saglabātu šo identifikatoru vietējā teksta failu, vai cookie. 113 00:07:34,210 --> 00:07:38,490 Tad interneta pārlūkprogramma iekļauj šo identifikatoru katru pieprasījumu 114 00:07:38,490 --> 00:07:40,780 ka tas padara uz serveri. 115 00:07:40,780 --> 00:07:44,280 Tik tiešām, web serveris nav atcerēties, kas es esmu. 116 00:07:44,280 --> 00:07:48,780 Tā vietā, interneta pārlūks ir vienkārši atcerēties unikālais identifikators 117 00:07:48,780 --> 00:07:52,730 , kas tika radīts, PHP, un pēc tam pastāvīgi atgādinot serveri 118 00:07:52,730 --> 00:07:55,120 kas tas identifikators ir. 119 00:07:55,120 --> 00:08:00,760 Tādā veidā, informācija, piemēram, mans lietotāja vārds tiek glabāti uz servera, nevis mana interneta pārlūku. 120 00:08:00,760 --> 00:08:05,190 Pārlūks vienkārši stāsta serveri, kur PHP glabājas šo informāciju 121 00:08:05,190 --> 00:08:07,750 tāpēc PHP var iegūt to. 122 00:08:07,750 --> 00:08:12,150 Tā, ka Rodas jautājums, kur PHP faktiski saglabājot šo informāciju? 123 00:08:12,150 --> 00:08:14,910 Pēc noklusējuma, PHP saglabās jūsu sesijas datus 124 00:08:14,910 --> 00:08:19,540 failā iekšpusē / tmp, vai "temp" mapē. 125 00:08:19,540 --> 00:08:24,450 Šī faila nosaukums tiks iekļauts sesijas ID, lai PHP var noteikt 126 00:08:24,450 --> 00:08:28,620 kas failu lasīt un rakstīt no izmantojot tikai sesijas ID. 127 00:08:28,620 --> 00:08:32,280 Labi. Tāpēc pieņemsim atvērtu cilni Network in Chrome atkļūdotājs 128 00:08:32,280 --> 00:08:34,890 ar uzgriežņu atslēgas ikonas pie augšējā labajā stūrī. 129 00:08:34,890 --> 00:08:38,409 Tagad dodies uz hello.php vēlreiz. 130 00:08:38,409 --> 00:08:42,270 Pieņemsim noklikšķiniet uz HTTP pieprasījumu hello.php 131 00:08:42,270 --> 00:08:44,680 un pēc tam noklikšķiniet uz galvenes. 132 00:08:44,680 --> 00:08:50,390 Šeit mēs varam redzēt, ka cookie galvenē ir atslēgu sauc PHPSESSID, 133 00:08:50,390 --> 00:08:55,980 vai PHP sesijas ID, ar vērtību, kas ir tas pats garš virkne mēs redzējām 134 00:08:55,980 --> 00:08:59,290 kad mēs apmeklējām sessid.php. 135 00:08:59,290 --> 00:09:04,660 Tas ir tieši tā, kā pārlūkprogramma atgādinot serveri, kas sesijas ID jāizmanto. 136 00:09:04,660 --> 00:09:08,180 Tas ir ieskaitot to HTTP galvenes. 137 00:09:08,180 --> 00:09:10,500 Labi. Pieņemsim dodies atpakaļ uz terminālu. 138 00:09:10,500 --> 00:09:16,450 Pieņemsim virzītos uz / tmp, kur PHP ir uzglabāt informāciju sesijas pēc noklusējuma. 139 00:09:16,450 --> 00:09:19,160 Un tik tiešām, iekšpuse no šā pagaidu mapes, 140 00:09:19,160 --> 00:09:23,550 šeit ir fails, kas satur to pašu precīzu sesijas ID. 141 00:09:23,550 --> 00:09:28,990 Ja mēs atvērtu šo failu, mēs varam redzēt, kā PHP pārstāv manu sesiju uz diska. 142 00:09:28,990 --> 00:09:32,870 Šeit string "Tommy" tiek uzglabāta galveno "nosaukumu," 143 00:09:32,870 --> 00:09:35,750 kas ir tieši tas, ko mēs gaidījām. 144 00:09:35,750 --> 00:09:38,850 Un tas ir pārskats par sesijām PHP. 145 00:09:38,850 --> 00:09:42,590 Ko mēs tikko redzējām, bija tikai noklusējuma īstenošanu sesiju. 146 00:09:42,590 --> 00:09:45,600 Patiesībā, daudzi tīmekļa vietnes mainītu šo noklusēto uzvedību 147 00:09:45,600 --> 00:09:48,280 uzglabāt PHP sesijas efektīvāk 148 00:09:48,280 --> 00:09:50,390 interesēs uzlabotu sniegumu. 149 00:09:50,390 --> 00:09:52,800 Mans vārds ir Tommy, un tas ir CS50. 150 00:09:52,800 --> 00:09:56,000 [CS50.TV]