1 00:00:00,000 --> 00:00:03,920 >> [За възпроизвеждане на музика] 2 00:00:03,920 --> 00:00:11,760 3 00:00:11,760 --> 00:00:13,800 >> DAVID J. Malan: Добре. 4 00:00:13,800 --> 00:00:15,640 Това е CS50. 5 00:00:15,640 --> 00:00:17,620 Това е началото на седмица осем. 6 00:00:17,620 --> 00:00:22,440 И може би си спомняте, че ние престанахме последно време в търсене на нов език 7 00:00:22,440 --> 00:00:23,240 напълно. 8 00:00:23,240 --> 00:00:25,905 В действителност, този, който е доста лек и това не е дори 9 00:00:25,905 --> 00:00:26,940 език за програмиране. 10 00:00:26,940 --> 00:00:31,100 Това е език за маркиране, която ни позволява всъщност структурира и направи уеб страници. 11 00:00:31,100 --> 00:00:33,350 И когато нещо друго във връзка с this-- 12 00:00:33,350 --> 00:00:35,670 или вие скоро ще, ако вече не сте. 13 00:00:35,670 --> 00:00:38,530 Отиваме да се използва Cascading Style Sheets или CSS, които 14 00:00:38,530 --> 00:00:40,971 е друг вид език с имоти и ценности 15 00:00:40,971 --> 00:00:43,220 това ще позволи да се мине неща обичат промените цвета 16 00:00:43,220 --> 00:00:46,010 и промяна на позицията и тези видове ощипвам. 17 00:00:46,010 --> 00:00:49,940 Но днес и напред, ние започваме да да се съсредоточи върху по-мощни езици, 18 00:00:49,940 --> 00:00:52,810 действителните програмни езици като PHP. 19 00:00:52,810 --> 00:00:54,880 >> Така че PHP е бил наоколо за известно време. 20 00:00:54,880 --> 00:00:56,810 И както ще видите, че е предназначена предимно 21 00:00:56,810 --> 00:01:00,280 в началото на деня за актуално използват в уеб програмиране 22 00:01:00,280 --> 00:01:02,360 и всъщност генериране на уеб страници. 23 00:01:02,360 --> 00:01:04,849 И така, какво видове функции прави език 24 00:01:04,849 --> 00:01:10,040 се нуждаят, за да направят уеб страници динамично с него? 25 00:01:10,040 --> 00:01:14,760 >> С други думи, ако искате да се генерира съдържание dynamically-- подобно на Facebook 26 00:01:14,760 --> 00:01:19,480 RSS новини, която се променя непрекъснато, или мигновени съобщения, които се появяват от време 27 00:01:19,480 --> 00:01:21,872 да time-- като това, което е най- ключова част от функционалността 28 00:01:21,872 --> 00:01:24,580 имате нужда в един език за програмиране че ще ви позволи динамично 29 00:01:24,580 --> 00:01:28,070 отпечата нова информация на екрана? 30 00:01:28,070 --> 00:01:28,685 >> СТУДЕНТСКИ: Code. 31 00:01:28,685 --> 00:01:29,560 DAVID J. Malan: Code. 32 00:01:29,560 --> 00:01:30,440 OK. 33 00:01:30,440 --> 00:01:31,995 Ще вземем това. 34 00:01:31,995 --> 00:01:35,310 А малко по-точен. 35 00:01:35,310 --> 00:01:37,639 Искам да кажа, можем да направим това с C, честно казано. 36 00:01:37,639 --> 00:01:38,930 Това ще бъде болка в областта на шията. 37 00:01:38,930 --> 00:01:41,045 But-- е този ангажимент? 38 00:01:41,045 --> 00:01:41,895 >> Студентът: Да. 39 00:01:41,895 --> 00:01:42,677 Променливи, може би? 40 00:01:42,677 --> 00:01:43,760 DAVID J. Malan: Променливи. 41 00:01:43,760 --> 00:01:44,160 OK, разбира се. 42 00:01:44,160 --> 00:01:45,740 Променливи със сигурност може да ни помогне. 43 00:01:45,740 --> 00:01:47,020 И дори нещо по-просто. 44 00:01:47,020 --> 00:01:50,640 Ние го използва в първия програма на първия ден 45 00:01:50,640 --> 00:01:55,686 когато ние всъщност каза: "Здравей, свят". 46 00:01:55,686 --> 00:01:56,570 >> STUDENT: Print. 47 00:01:56,570 --> 00:01:57,778 >> DAVID J. Malan: Print, нали? 48 00:01:57,778 --> 00:02:01,050 Print, или ФОРМАТ в свят на C. Така че през цялото това време, 49 00:02:01,050 --> 00:02:03,362 ние сме имали в нашата разположение language-- C, 50 00:02:03,362 --> 00:02:05,570 в particular-- и дори Scratch за този въпрос, че 51 00:02:05,570 --> 00:02:07,400 може да генерира низове от текст. 52 00:02:07,400 --> 00:02:11,090 >> Е, ако HTML, както видяхме миналата седмица, е просто един куп струни на текст 53 00:02:11,090 --> 00:02:14,692 макар и с отворени скоби и затвори скоби и някаква рима 54 00:02:14,692 --> 00:02:16,650 и причина зад него, и тогава ние наистина може да 55 00:02:16,650 --> 00:02:20,440 започне да генерира уеб страници или ръчно, като ги пишете в Gedit 56 00:02:20,440 --> 00:02:23,870 или в Microsoft Word, за които matter-- ние просто трябва текстов редактор. 57 00:02:23,870 --> 00:02:26,830 >> Или пък може да напише код, на вашето предложение 58 00:02:26,830 --> 00:02:30,435 по-рано, че ще ни пуснат динамично генериране на HTML, 59 00:02:30,435 --> 00:02:32,560 и това е, което ние ще да започнете да правите с PHP 60 00:02:32,560 --> 00:02:34,900 и в крайна сметка дори с език, наречен JavaScript, 61 00:02:34,900 --> 00:02:37,910 е да използвате един език, за да се генерира нов. 62 00:02:37,910 --> 00:02:40,720 И наистина, това е, което Facebook и много, много други сайтове 63 00:02:40,720 --> 00:02:44,530 направя, за да всъщност динамично показване на нова информация за вас. 64 00:02:44,530 --> 00:02:47,117 >> Така че нека да започнем с една this-- загадъчен търсите линия, но един 65 00:02:47,117 --> 00:02:48,450 че всъщност е доста мощен. 66 00:02:48,450 --> 00:02:51,210 До този момент, ние сме били използване на C, който е съставен език. 67 00:02:51,210 --> 00:02:55,050 И само един бърз recap-- компилиран език има какво характеристика? 68 00:02:55,050 --> 00:02:59,050 Вие очевидно трябва да се съберат това, но какво означава това? 69 00:02:59,050 --> 00:03:00,505 Така ли? 70 00:03:00,505 --> 00:03:02,940 >> STUDENT: Тя трябва да бъде сглобени в машинен код. 71 00:03:02,940 --> 00:03:03,060 >> DAVID J. Malan: OK. 72 00:03:03,060 --> 00:03:04,530 Тя трябва да бъде сглобена в машинен код. 73 00:03:04,530 --> 00:03:07,340 Така че можете да си код, което е нещо като английски. 74 00:03:07,340 --> 00:03:09,270 Можете да конвертирате, че за да нещо по-ниско ниво, 75 00:03:09,270 --> 00:03:11,590 което в крайна сметка се нарича обект code-- 0 и 1 в. 76 00:03:11,590 --> 00:03:14,830 И това е тези 0 и 1, че процесора, като тези, направени от Intel, 77 00:03:14,830 --> 00:03:16,110 всъщност разбирам. 78 00:03:16,110 --> 00:03:19,690 >> Сега, PHP и Python и Ruby и JavaScript и букети от друга 79 00:03:19,690 --> 00:03:23,190 езици, които не са събрани езици, но интерпретирани езици, 80 00:03:23,190 --> 00:03:26,630 което означава, че можете просто да ги напишете и след това не ги превърне в 0 и 1 в. 81 00:03:26,630 --> 00:03:30,790 Можете вместо просто да предостави след като принос към програмата на някой друг, 82 00:03:30,790 --> 00:03:32,080 наречен преводач. 83 00:03:32,080 --> 00:03:34,460 И това лице програма е проектирана 84 00:03:34,460 --> 00:03:38,280 да се разбере това, което всеки и всеки символ в Python или PHP 85 00:03:38,280 --> 00:03:42,650 или Ruby или произволен брой други езици означава. 86 00:03:42,650 --> 00:03:44,760 >> И така, всичко, което е нужно е нещо като това. 87 00:03:44,760 --> 00:03:46,350 Така че в действителност, аз отивам да преминем към уреда 88 00:03:46,350 --> 00:03:48,100 тук, просто във всеки стар прозорец, и ние сме 89 00:03:48,100 --> 00:03:52,580 ще отида напред и отворен файл с име, да речем, здравей. 90 00:03:52,580 --> 00:03:55,780 Сега по-рано, може би щях да спаси това дори и с файлово разширение, 91 00:03:55,780 --> 00:03:57,910 но аз отивам да правя нещо още по-лесно тук. 92 00:03:57,910 --> 00:04:02,450 Аз ще отида напред и да започне този файл с този загадъчен синтаксис. 93 00:04:02,450 --> 00:04:06,310 Така че "потребител, бин, Околна среда, за околната среда, PHP. " 94 00:04:06,310 --> 00:04:10,670 >> Това е просто една линия на код, който е Ще кажа на операционната система, 95 00:04:10,670 --> 00:04:13,730 да намерим във вашата локална среда, каквото и да е, 96 00:04:13,730 --> 00:04:18,149 където PHP is-- на interpreter-- и давай напред и да използва това преводач 97 00:04:18,149 --> 00:04:20,589 да тълкува следния код. 98 00:04:20,589 --> 00:04:22,760 Сега, това е един вид грозна черта на PHP. 99 00:04:22,760 --> 00:04:24,980 Но в този език, всеки път, когато пиша PHP код, 100 00:04:24,980 --> 00:04:29,200 вие трябва да имате един от тези грозни PHP тагове, ограничаващи началото 101 00:04:29,200 --> 00:04:32,220 на вашия code-- 00:04:37,430 >> Но по-долу тук, сега мога да направя нещо съвсем просто, като ФОРМАТ здравей запетая 103 00:04:37,430 --> 00:04:40,922 свят наклонена черта п близо цитат, в близост скоби. 104 00:04:40,922 --> 00:04:42,630 И след това просто за добро мярка, аз отивам 105 00:04:42,630 --> 00:04:45,380 да вървим напред и в близост ми PHP таг тук 106 00:04:45,380 --> 00:04:47,390 така че всичко да изглежда добре доста отпечатани. 107 00:04:47,390 --> 00:04:50,780 >> И веднага след като щракнете върху Запиши, Gedit е достатъчно всъщност интелигентен 108 00:04:50,780 --> 00:04:54,620 да погледнете, че първата линия и осъзнават, о, пишете PHP код. 109 00:04:54,620 --> 00:04:56,710 Нека синтаксис маркирайте това с цветовете 110 00:04:56,710 --> 00:04:58,690 тук, така че да се откроява от малко повече. 111 00:04:58,690 --> 00:05:01,300 Но сега аз ще отида до терминал моя прозорец. 112 00:05:01,300 --> 00:05:02,340 Ще Увеличаване. 113 00:05:02,340 --> 00:05:06,860 >> Тази програма се нарича "здравей" така че аз отивам да се направи точка черта здравей, 114 00:05:06,860 --> 00:05:07,990 но разрешение отказан. 115 00:05:07,990 --> 00:05:08,490 И Баш. 116 00:05:08,490 --> 00:05:10,610 Ние всъщност чувал, че Преди нещо няколко седмици 117 00:05:10,610 --> 00:05:13,140 в контекста на Shellshock, една от тези грешки. 118 00:05:13,140 --> 00:05:16,240 >> Но разрешение отрече сме виждали и преди, може би в по-различен контекст. 119 00:05:16,240 --> 00:05:19,060 Някой припомни как може да се определи нещо 120 00:05:19,060 --> 00:05:22,100 където разрешение се отказва по този начин? 121 00:05:22,100 --> 00:05:23,490 Каква е командата, най-малко? 122 00:05:23,490 --> 00:05:24,159 >> STUDENT: CHMOD. 123 00:05:24,159 --> 00:05:26,700 DAVID J. Malan: Да, коригирате, за промяна на режима на файл. 124 00:05:26,700 --> 00:05:30,171 И вие ще получите още по-използван за това следващата седмица, с последващо проблем 125 00:05:30,171 --> 00:05:30,670 задали. 126 00:05:30,670 --> 00:05:33,211 Но за сега, аз отивам да се промени режим не може да се чете, 127 00:05:33,211 --> 00:05:36,650 но да даде на всеки executeability привилегии, способността 128 00:05:36,650 --> 00:05:37,710 да тече този файл. 129 00:05:37,710 --> 00:05:40,360 И аз отивам да зададете че към преписката здрасти. 130 00:05:40,360 --> 00:05:45,150 >> Ако сега направим точка черта здравей влиза, можете виж, в действителност, моята програма, здравей свят. 131 00:05:45,150 --> 00:05:48,760 И това, което аз направих крачка ясно пропуснете напълно? 132 00:05:48,760 --> 00:05:49,520 Съставяне. 133 00:05:49,520 --> 00:05:51,680 Така че аз просто избяга тази програма доста просто. 134 00:05:51,680 --> 00:05:55,690 >> И се оказва, можете да направите това с много синтаксис напомня на C. 135 00:05:55,690 --> 00:06:03,400 Позволете ми да отида в днешния код, които сложих в моя vhost директория 136 00:06:03,400 --> 00:06:05,250 тук, за истинските причини ние ще се върнем към. 137 00:06:05,250 --> 00:06:09,350 И аз ще отида в, нека да кажем, условия 1. 138 00:06:09,350 --> 00:06:12,450 >> И вие ще видите тук, на първо място и място, цял куп коментари. 139 00:06:12,450 --> 00:06:15,240 Но това е действително пресъздаване в PHP 140 00:06:15,240 --> 00:06:18,960 на програма, което направихме през седмица един наречените условия 1.в 141 00:06:18,960 --> 00:06:20,690 когато целта в живот на тази програма 142 00:06:20,690 --> 00:06:22,950 е очевидно, за да попитам потребителя за цяло число 143 00:06:22,950 --> 00:06:25,270 и след това да се направят някои пухкав анализ върху него, при което 144 00:06:25,270 --> 00:06:29,510 вие казвате, ако тя е положителна или отрицателна или равна на нула. 145 00:06:29,510 --> 00:06:34,220 И аз нося това само, защото, с изключение на може би един малък детайл, 146 00:06:34,220 --> 00:06:37,150 това е неразличим толкова далеч от C. 147 00:06:37,150 --> 00:06:39,930 >> Какво е една характеристика тук, че може би скача 148 00:06:39,930 --> 00:06:41,410 при вас като малко по-различно? 149 00:06:41,410 --> 00:06:42,160 Може би две неща. 150 00:06:42,160 --> 00:06:42,660 Така ли? 151 00:06:42,660 --> 00:06:44,070 >> STUDENT: Dollar знак н? 152 00:06:44,070 --> 00:06:44,944 >> DAVID J. Malan: Да. 153 00:06:44,944 --> 00:06:46,210 Така долар знак н присъства. 154 00:06:46,210 --> 00:06:48,120 И доларови знаци, като ще видим, ще 155 00:06:48,120 --> 00:06:51,460 да се оправя в началото на всяка променлива в PHP. 156 00:06:51,460 --> 00:06:54,250 Това е добро и bad-- добро че това е нещо, което е очевидно, 157 00:06:54,250 --> 00:06:56,797 променлива, лошо в това, че е още нещо, за да пишете. 158 00:06:56,797 --> 00:06:58,630 А има и един друг нещо, което ние не сме съвсем 159 00:06:58,630 --> 00:07:00,876 видяхме, най-малко от това на правописа. така ли? 160 00:07:00,876 --> 00:07:01,630 >> STUDENT: Readline. 161 00:07:01,630 --> 00:07:02,671 >> DAVID J. Malan: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline не видяхме, само по себе си, в C, въпреки че съществува нещо 163 00:07:06,550 --> 00:07:09,530 подобни, но ние сме използвали getstring, и това е неговият колега. 164 00:07:09,530 --> 00:07:12,950 Така че, ако отида в тази директория, което се случва, да бъде, 165 00:07:12,950 --> 00:07:18,030 както аз ще обясня малко по мое vhost директория и ми източник директория, 166 00:07:18,030 --> 00:07:22,730 и да отида напред и да направи точка наклонена черта conditions-- whoops-- точка наклонена черта 167 00:07:22,730 --> 00:07:26,710 условия 1, вие ще видите, отново, същото issue-- разрешение отказан. 168 00:07:26,710 --> 00:07:33,610 >> Така че нека да увеличите и да коригират плюс х относно условията, дот условия наклонена черта. 169 00:07:33,610 --> 00:07:35,222 Бих искал цяло число, моля, 50. 170 00:07:35,222 --> 00:07:36,930 И ние може да играе тази игра през целия ден. 171 00:07:36,930 --> 00:07:39,140 Той ще се държи точно така както го направи в една седмица. 172 00:07:39,140 --> 00:07:42,860 >> ОК, така че не всичко, различно, с изключение на Не само, че леко малко синтаксис, 173 00:07:42,860 --> 00:07:45,490 но в горната част, аз отново имаше тази линия, която 174 00:07:45,490 --> 00:07:49,760 ми позволи да се създаде нещо, което прилича на програма, наречена C здравей, 175 00:07:49,760 --> 00:07:51,150 наречени условия 1. 176 00:07:51,150 --> 00:07:54,520 Но това не е 0 и такива Аз съм изпълняващата директно. 177 00:07:54,520 --> 00:07:57,620 Това е вместо използването на този преводач, чието име 178 00:07:57,620 --> 00:07:59,440 се случва да бъде идентичен с този език. 179 00:07:59,440 --> 00:08:04,970 Програмата се нарича PHP, и моя код под линията един се предава в нея. 180 00:08:04,970 --> 00:08:07,740 >> Ние можем да направим още един сравнително прост Например напомня на нещо 181 00:08:07,740 --> 00:08:09,240 ние направихме преди седмици. 182 00:08:09,240 --> 00:08:12,020 Отново, това е един вид произволно парче код 183 00:08:12,020 --> 00:08:14,000 че очевидно прави какво, когато го стартирате? 184 00:08:14,000 --> 00:08:15,625 Какво е това ще се отпечата, вероятно? 185 00:08:15,625 --> 00:08:23,540 186 00:08:23,540 --> 00:08:28,250 >> Така че първоначално на ред 16, това е ще кажа х сега е 2, най-вероятно. 187 00:08:28,250 --> 00:08:30,920 % D е същото като $ аз за ФОРМАТ. 188 00:08:30,920 --> 00:08:33,460 Така че след това е cubing, точка, точка, точка, в ред 17. 189 00:08:33,460 --> 00:08:36,299 И тогава се появи линия 18 да се обадя функция кубчета. 190 00:08:36,299 --> 00:08:37,600 А там, където се определя кубчета? 191 00:08:37,600 --> 00:08:40,319 >> Е, изглежда, че в линията 25, така че да не е по-различно. 192 00:08:40,319 --> 00:08:42,610 Имам някои коментари по-горе , но по-голямата част, 193 00:08:42,610 --> 00:08:45,370 това е сравнително лесно пренасяне или преобразуване 194 00:08:45,370 --> 00:08:48,470 от програмата C до PHP версия. 195 00:08:48,470 --> 00:08:52,670 Но сега има няколко различия, които може би трябва да скочи. 196 00:08:52,670 --> 00:08:56,100 Какво друго е различно за това как може да напише същата програма в C? 197 00:08:56,100 --> 00:08:57,900 >> STUDENT: [недоловим]. 198 00:08:57,900 --> 00:09:00,070 >> DAVID J. Malan: Няма не прототип до върха. 199 00:09:00,070 --> 00:09:03,210 Така PHP-- и честно казано, по- много модерна languages-- 200 00:09:03,210 --> 00:09:06,920 са много по-умни и по-полезни от C компилатори по това, че 201 00:09:06,920 --> 00:09:09,740 да поставите функцията тук, можете да поставите функция тук, 202 00:09:09,740 --> 00:09:12,740 и преводачът ще да ви направи благоволението на четене 203 00:09:12,740 --> 00:09:16,010 цялата преписка, преди да реши че някои функции не съществува. 204 00:09:16,010 --> 00:09:17,970 Толкова хубаво подобрения години по-късно. 205 00:09:17,970 --> 00:09:22,126 Но има и нещо друго различно или отсъства тук. 206 00:09:22,126 --> 00:09:22,626 Така ли? 207 00:09:22,626 --> 00:09:25,084 >> STUDENT: [недоловим]. 208 00:09:25,084 --> 00:09:27,750 DAVID J. Malan: Ние не трябва да се Декларирам, видовете променливи, 209 00:09:27,750 --> 00:09:31,780 така че ще видим не след дълго, че има различни видове в PHP, 210 00:09:31,780 --> 00:09:34,970 но не трябва да ги посочите, който също така е и добро, и лошо. 211 00:09:34,970 --> 00:09:36,623 А има и още нещо липсва. 212 00:09:36,623 --> 00:09:37,430 >> STUDENT: Няма по-библиотеки. 213 00:09:37,430 --> 00:09:38,630 >> DAVID J. Malan: Не е библиотеки. 214 00:09:38,630 --> 00:09:39,350 ОК, така че това е хубаво. 215 00:09:39,350 --> 00:09:40,540 Ние получаваме много повече от кутията. 216 00:09:40,540 --> 00:09:43,373 Така че всъщност е много по- неща, отколкото си мислех, че са различни. 217 00:09:43,373 --> 00:09:44,350 Какво ще кажете за начин в гърба? 218 00:09:44,350 --> 00:09:46,032 Какво е това? 219 00:09:46,032 --> 00:09:46,740 Кажи го още веднъж? 220 00:09:46,740 --> 00:09:47,960 >> STUDENT: Pointer. 221 00:09:47,960 --> 00:09:49,270 >> DAVID J. Malan: Не указатели. 222 00:09:49,270 --> 00:09:51,280 ОК, поне в този пример, не. 223 00:09:51,280 --> 00:09:52,070 Това е справедливо. 224 00:09:52,070 --> 00:09:55,090 Така че не са указатели в PHP всъщност като цяло. 225 00:09:55,090 --> 00:09:58,730 Има нещо, наречено справки, но ние няма да прекарват твърде много време там. 226 00:09:58,730 --> 00:09:59,520 И какво още? 227 00:09:59,520 --> 00:10:00,185 >> STUDENT: Main. 228 00:10:00,185 --> 00:10:01,060 DAVID J. Malan: Main. 229 00:10:01,060 --> 00:10:02,768 Така че това беше Biggie Мислех си. 230 00:10:02,768 --> 00:10:04,660 Забележете, че няма основна входна точка. 231 00:10:04,660 --> 00:10:06,525 Можете просто да започнете да пишете код. 232 00:10:06,525 --> 00:10:08,400 И това е всъщност ще бъде изгодно 233 00:10:08,400 --> 00:10:10,560 когато ние преход момент да започнете да използвате 234 00:10:10,560 --> 00:10:13,980 същия този език за уеб-базиран програмиране, за който 235 00:10:13,980 --> 00:10:16,580 не искам да имам само една входна точка. 236 00:10:16,580 --> 00:10:19,980 Ние може да искаме да имаме един куп URL адреси, един куп различни файлове 237 00:10:19,980 --> 00:10:22,930 всички, като на входа на потребителя и производство на продукция. 238 00:10:22,930 --> 00:10:27,130 >> Но тук е много отчайваща Например, че обещах последния път, 239 00:10:27,130 --> 00:10:30,130 именно в тази папка тук, правописни грешки. 240 00:10:30,130 --> 00:10:33,680 Така че в този файл правопис, което ние няма да прекарват твърде много време, налице е 241 00:10:33,680 --> 00:10:37,870 същество porting-- P-O-R-T. Това е просто думата дава, когато, да речем, 242 00:10:37,870 --> 00:10:40,800 да конвертирате от един език в друга ръчно обикновено. 243 00:10:40,800 --> 00:10:45,680 >> Това е пренасяне на PC версия на правопис от PSET 5. 244 00:10:45,680 --> 00:10:48,856 И по същество се опита да конвертирате това ред по ред най-близко, колкото мога. 245 00:10:48,856 --> 00:10:51,730 Така че, ако ви харесва този вид на нещо, тя всъщност е на стойност най-малко точка 246 00:10:51,730 --> 00:10:54,229 да ги дърпа и двете една до страна и да видиш какво е същото 247 00:10:54,229 --> 00:10:55,230 и това, което е различно. 248 00:10:55,230 --> 00:10:57,510 Но те са дяволски много сходни. 249 00:10:57,510 --> 00:11:00,110 Ако си спомняте какво правопис, дори изглеждаше, 250 00:11:00,110 --> 00:11:02,110 макар и да не го направи Трябва да променим този файл, 251 00:11:02,110 --> 00:11:04,860 това е доста сходен структурно само с няколко 252 00:11:04,860 --> 00:11:06,200 на промени тук и там. 253 00:11:06,200 --> 00:11:10,140 >> Така че това е само за да се каже, че това е доста лесно да конвертирате правопис 254 00:11:10,140 --> 00:11:12,000 от C до PHP. 255 00:11:12,000 --> 00:11:15,390 Но в речник, има нещо още по-убедителни. 256 00:11:15,390 --> 00:11:19,270 Нека да вървим напред и да се създаде моята собствена dictionary.php файл. 257 00:11:19,270 --> 00:11:24,010 Така малко по-различен с това, че ние ще го наричаме .php вместо .c. 258 00:11:24,010 --> 00:11:26,980 Тъй като това е файл, PHP, I do-- леко annoyingly-- има 259 00:11:26,980 --> 00:11:30,132 за да стартирате файла с на PHP таг подобно. 260 00:11:30,132 --> 00:11:32,340 И аз отивам да вървим напред и да се определят няколко функции. 261 00:11:32,340 --> 00:11:35,770 Функция, наречена проверка, която е ще вземе с една дума като преди. 262 00:11:35,770 --> 00:11:37,520 Но този аргумент е ще има един долар 263 00:11:37,520 --> 00:11:39,840 подпишат, защото ние сме, отново, използвайки PHP. 264 00:11:39,840 --> 00:11:42,350 Друга функция от dictionary.c е натоварване 265 00:11:42,350 --> 00:11:47,120 и го взеха в името на речник, така че аз ще се получи, че функция готов да отида. 266 00:11:47,120 --> 00:11:50,920 >> Още един в dictionary.c е какво? 267 00:11:50,920 --> 00:11:54,580 Размер е един от най-хубавите от тях, най- поне ако държи някои променлива наоколо. 268 00:11:54,580 --> 00:11:57,830 така че размерът му трябва да се върне на променлива. 269 00:11:57,830 --> 00:11:59,090 И тогава имаше разтоварване. 270 00:11:59,090 --> 00:12:02,830 >> Така че там са били тези четири функции в проблем, определени 5 271 00:12:02,830 --> 00:12:06,770 че ви е необходимо да се прилагат с някои данни структура или структури. 272 00:12:06,770 --> 00:12:10,170 Така че в Обещах PHP, ние може да обяви 273 00:12:10,170 --> 00:12:14,490 хеш таблица, например, всичко, което по-лесно. 274 00:12:14,490 --> 00:12:17,377 В действителност, ако искам хеш таблица, Аз просто ще отида като че 275 00:12:17,377 --> 00:12:18,460 и там ми е хеш таблица. 276 00:12:18,460 --> 00:12:21,555 И това е бележката, отчайваща, че сме спрели за последен път. 277 00:12:21,555 --> 00:12:23,930 И знаеш ли какво, ако исках променлива за размер, добре, 278 00:12:23,930 --> 00:12:25,867 това не е всичко много по-различна от С, 279 00:12:25,867 --> 00:12:27,450 но аз ще отида напред и да го направя. 280 00:12:27,450 --> 00:12:28,630 И забележи не тип данни. 281 00:12:28,630 --> 00:12:31,180 И аз ще се върна по-късно и всъщност добавите някои коментари тук. 282 00:12:31,180 --> 00:12:32,480 Но какво да кажем за товар? 283 00:12:32,480 --> 00:12:35,780 >> Ако знака за долар речник е името на файла ми 284 00:12:35,780 --> 00:12:39,600 и аз наистина искам да се зареди думи в тази таблица с предприятието, 285 00:12:39,600 --> 00:12:42,360 Всъщност мога да направя нещо доста просто. 286 00:12:42,360 --> 00:12:44,880 One-- и това е minorly annoying-- в PHP, 287 00:12:44,880 --> 00:12:47,710 трябва да посочите в на функция, ако 288 00:12:47,710 --> 00:12:51,060 искате да получите достъп до някои глобалното променлива, която е определено отвън. 289 00:12:51,060 --> 00:12:53,530 >> Но това не е особено Интересно точно сега. 290 00:12:53,530 --> 00:12:57,920 Какво е по-интересно е това за всеки изграждане, че споменах миналия път. 291 00:12:57,920 --> 00:13:01,880 И се оказва, че PHP има функция наречен файл, чиято цел в живота 292 00:13:01,880 --> 00:13:05,550 е да отворите файла и да прочетете в всички свои линии в масив 293 00:13:05,550 --> 00:13:06,840 и да ги върне към. 294 00:13:06,840 --> 00:13:12,170 >> Което ще рече, че може да направи речник така че сега ефективно, когато аз наричам файл, 295 00:13:12,170 --> 00:13:15,472 това ще ме върне масив от думи от файла. 296 00:13:15,472 --> 00:13:16,430 Това не е всичко, че доброто. 297 00:13:16,430 --> 00:13:20,130 Тя все още продължава да бъде линия на думи, нещо линейна. 298 00:13:20,130 --> 00:13:23,880 Но аз мога да отида напред и да превъртите върху всяка от тези думи, използвайки 299 00:13:23,880 --> 00:13:25,710 че синтаксис видяхме накратко за последен път. 300 00:13:25,710 --> 00:13:27,940 И ще го видите по- в предстоящия PSET. 301 00:13:27,940 --> 00:13:32,070 >> Но сега имам една линия итерации над всяка дума в речника. 302 00:13:32,070 --> 00:13:36,100 И на всяка итерация, припомни съм се обадите на текущата дума "дума". 303 00:13:36,100 --> 00:13:39,790 И всичко това ще се предприеме, за да тури дума в речника, е 304 00:13:39,790 --> 00:13:43,530 ще бъде думата предположение "вярно". 305 00:13:43,530 --> 00:13:44,740 Това е моята вложка функция. 306 00:13:44,740 --> 00:13:46,661 Това е моята функция натоварване за моя речник. 307 00:13:46,661 --> 00:13:49,410 Сега е малко на измама, тъй като, Знаете ли какво, всъщност има 308 00:13:49,410 --> 00:13:52,920 наклонена черта н в края на думите че може би трябва да се отървете от, 309 00:13:52,920 --> 00:13:56,380 но това не е проблем, защото PHP има функция, наречена котлет което буквално 310 00:13:56,380 --> 00:13:58,480 пържоли на разстояние един символ в самия край. 311 00:13:58,480 --> 00:13:59,400 Така че няма проблем там. 312 00:13:59,400 --> 00:14:02,199 Ние сме отишли ​​напред и действително скъсена, че само това. 313 00:14:02,199 --> 00:14:05,240 И сега вероятно ще трябва да следите на размер, така че нека поне да направи this-- 314 00:14:05,240 --> 00:14:05,835 размер ++. 315 00:14:05,835 --> 00:14:07,339 Мога да го направя, както и преди. 316 00:14:07,339 --> 00:14:10,380 И след това вероятно ще работи добре, така че да се върнем вярно. 317 00:14:10,380 --> 00:14:10,930 Готово. 318 00:14:10,930 --> 00:14:11,797 PSET 5. 319 00:14:11,797 --> 00:14:13,545 >> [Смях] 320 00:14:13,545 --> 00:14:14,420 >> DAVID J. Malan: OK. 321 00:14:14,420 --> 00:14:16,628 Ние ще направим това отново със следващата PSET, също. 322 00:14:16,628 --> 00:14:18,730 Така че какво да кажем за размер? 323 00:14:18,730 --> 00:14:22,080 Е, това се надяваме, че е за както може да се очаква за последен път, 324 00:14:22,080 --> 00:14:24,460 макар че аз трябва да направя тази глупава глобалната нещо. 325 00:14:24,460 --> 00:14:26,610 Това е просто един артефакт от дизайн на езика. 326 00:14:26,610 --> 00:14:28,450 >> Но проверка е малко по-интересна. 327 00:14:28,450 --> 00:14:31,420 Така че, ако аз премина в долари подпишат дума, за първи път 328 00:14:31,420 --> 00:14:34,060 искат да имат достъп до че глобалната променлива маса. 329 00:14:34,060 --> 00:14:36,700 И сега, ако искам да проверите дали една дума е там, 330 00:14:36,700 --> 00:14:44,350 Мога да кажа само, ако е вярно, че По-долу е посочен в таблицата, 331 00:14:44,350 --> 00:14:49,957 след което продължете напред и връщане вярно; друго, връщане фалшиви. 332 00:14:49,957 --> 00:14:51,180 Готово. 333 00:14:51,180 --> 00:14:52,440 Другата половина от PSET 5. 334 00:14:52,440 --> 00:14:54,540 >> Добре, така че отново, аз съм рязане на няколко ъгли. 335 00:14:54,540 --> 00:14:56,831 В интерес на истината, аз вероятно прекарат още няколко секунди 336 00:14:56,831 --> 00:14:58,300 на това изпълнение. 337 00:14:58,300 --> 00:15:01,860 И аз най-вероятно няма да се подиграят всички часа ще ви постави на PSET толкова много. 338 00:15:01,860 --> 00:15:04,045 Така strtolower е функция. 339 00:15:04,045 --> 00:15:06,670 Нещо подобно екзистенциалист в C, поне за героите, 340 00:15:06,670 --> 00:15:08,560 но PHP получи цяло низ версия. 341 00:15:08,560 --> 00:15:11,226 >> Това ще принуди всичко в малки, които някои от вас 342 00:15:11,226 --> 00:15:14,944 може да направи, за да канонизира какво сте били пускането в речника си. 343 00:15:14,944 --> 00:15:16,360 И сега можете да направите това в C, също. 344 00:15:16,360 --> 00:15:17,780 Това няма нищо общо с PHP. 345 00:15:17,780 --> 00:15:20,260 >> Но всеки път, когато имате булева състояние, 346 00:15:20,260 --> 00:15:22,680 като нещо, он-лайн 10 там, което е само 347 00:15:22,680 --> 00:15:27,145 ще се оцени като вярно или невярно, и вашата, ако друго ясно 348 00:15:27,145 --> 00:15:33,620 се връща истина или лъжа, можех просто наистина да направи това по-секси 349 00:15:33,620 --> 00:15:38,360 и просто да се направи нещо подобно. 350 00:15:38,360 --> 00:15:40,500 Така че там е моята проверка функция. 351 00:15:40,500 --> 00:15:42,560 Точно така, ако Булев връща вярно или невярно, 352 00:15:42,560 --> 00:15:44,630 нека просто да го върне веднага. 353 00:15:44,630 --> 00:15:47,340 >> А има и няколко други екстри Мога да направя тук и там. 354 00:15:47,340 --> 00:15:51,380 Load-- разтоварване, между другото, това е направено. 355 00:15:51,380 --> 00:15:52,850 Няма за какво да правя там. 356 00:15:52,850 --> 00:15:55,840 Тъй като всички памет PHP и много други езици 357 00:15:55,840 --> 00:15:57,570 всъщност управлява за вас. 358 00:15:57,570 --> 00:16:00,330 Така че, докато в C, като сте научили болезнено, 359 00:16:00,330 --> 00:16:04,700 всичко, което изчистване или calloc или презаделяне, вие трябва да се освободите. 360 00:16:04,700 --> 00:16:08,770 Всичко, което fopen, трябва да fclose, така, че ресурсите са в крайна сметка освободени 361 00:16:08,770 --> 00:16:11,690 и инструменти като Valgrind не го правят забележите и не се оплакват, 362 00:16:11,690 --> 00:16:13,570 което е добро нещо, за да се движат по тях. 363 00:16:13,570 --> 00:16:16,190 >> Но със сигурност, там трябва да бъде някакъв улов, нали? 364 00:16:16,190 --> 00:16:19,400 В противен случай, ние вид губи цял куп седмици. 365 00:16:19,400 --> 00:16:23,270 Така че има редица причини Ето защо ние нещо се възползвам от тази траектория, 366 00:16:23,270 --> 00:16:24,440 но там е компромис. 367 00:16:24,440 --> 00:16:25,820 Точно така, това е тематична. 368 00:16:25,820 --> 00:16:29,690 >> Така че това, което биха могли компромис тук се движи, от C за PHP? 369 00:16:29,690 --> 00:16:33,250 Усеща се като спечели всичко досега, различна от малко грозота тук или там. 370 00:16:33,250 --> 00:16:34,040 Да. 371 00:16:34,040 --> 00:16:34,700 Какво е това? 372 00:16:34,700 --> 00:16:36,064 >> STUDENT: [недоловим] памет. 373 00:16:36,064 --> 00:16:36,980 DAVID J. Malan: Speed. 374 00:16:36,980 --> 00:16:37,479 OK. 375 00:16:37,479 --> 00:16:40,720 Е, моята скорост беше доста бързо. 376 00:16:40,720 --> 00:16:42,020 Така ли е? 377 00:16:42,020 --> 00:16:44,320 Но скоростта на изпълнение на програмата? 378 00:16:44,320 --> 00:16:45,580 ОК, така че това е справедливо точка. 379 00:16:45,580 --> 00:16:50,930 >> Така че, тъй като това ще се случи, аз предварително условен до двете ми опит решение, този 380 00:16:50,930 --> 00:16:53,510 Имах на големия борд е решение пробвам-базирани, 381 00:16:53,510 --> 00:16:55,510 и аз имам, че в тази директория тук. 382 00:16:55,510 --> 00:16:58,510 Така че в един момент, мога да отида напред и да стартирате тази на Библията на крал Джеймз, 383 00:16:58,510 --> 00:16:59,657 натиснете Enter. 384 00:16:59,657 --> 00:17:01,990 И това е, надявам се правилно изпълнение в края, 385 00:17:01,990 --> 00:17:05,109 ми дава време в общия 0,38 секунди за това 386 00:17:05,109 --> 00:17:07,270 едно малко произволно пример. 387 00:17:07,270 --> 00:17:09,270 >> И ако аз сега отида в тази второ терминален прозорец 388 00:17:09,270 --> 00:17:14,569 тук, където за първи път отвори Gedit, нека отида в днешния code-- което, отново, 389 00:17:14,569 --> 00:17:19,650 е в тази директория и here-- позволете ми да отида напред и да тичам правопис. 390 00:17:19,650 --> 00:17:23,470 Така, само за да бъде ясно, това е PHP версия. 391 00:17:23,470 --> 00:17:25,170 Аз съм просто показване на върха на това тук. 392 00:17:25,170 --> 00:17:32,020 >> Така че, ако аз правя транскрипция на тилда CS50 PSET пет текстове, King James, влизат. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Тя все още е по-бързо от писане то в С, но общото време 395 00:17:43,050 --> 00:17:47,650 е предупреждение, 0.93, докато ми C-базирани изпълнение е 0.38. 396 00:17:47,650 --> 00:17:49,110 Така че това е нетривиален разлика. 397 00:17:49,110 --> 00:17:51,100 >> И това е само на един файл. 398 00:17:51,100 --> 00:17:53,480 Ако ви се налага да стартирате двамата програми в сравнение с големия борд 399 00:17:53,480 --> 00:17:56,510 и има един куп входове тествани, това със сигурност щеше да се добави. 400 00:17:56,510 --> 00:18:00,310 И ако имахме още по-големи масиви от данни, това също ще се добави още повече. 401 00:18:00,310 --> 00:18:04,820 Така че, да, като се обръща някои цена на скоростта е наистина така. 402 00:18:04,820 --> 00:18:05,470 Какво друго? 403 00:18:05,470 --> 00:18:08,000 404 00:18:08,000 --> 00:18:08,860 Така ли? 405 00:18:08,860 --> 00:18:10,340 >> STUDENT: Размер на RAM използване. 406 00:18:10,340 --> 00:18:11,756 >> DAVID J. Malan: Размер на RAM използване. 407 00:18:11,756 --> 00:18:15,380 Така че аз не се получи един секунди помислих, когато пиша това PHP 408 00:18:15,380 --> 00:18:17,300 версия за това как много памет бях използвате. 409 00:18:17,300 --> 00:18:22,080 Аз съм напълно разсрочване, че за PHP себе си и този, който е написал тази програма. 410 00:18:22,080 --> 00:18:24,500 И това може да се оправи, но ако аз всъщност наистина 411 00:18:24,500 --> 00:18:28,420 грижа за изстискване толкова производителност от моята програма или от моя сайт 412 00:18:28,420 --> 00:18:31,150 или от какъвто и инструмент Аз съм изграждане, може би 413 00:18:31,150 --> 00:18:33,310 PHP, наистина, не е правилният език. 414 00:18:33,310 --> 00:18:36,330 >> И в действителност, това е причината, за Например, много уеб servers-- 415 00:18:36,330 --> 00:18:38,980 действителните програми, обслужват уеб content-- 416 00:18:38,980 --> 00:18:41,810 не са написани в PHP или в Python или Ruby. 417 00:18:41,810 --> 00:18:44,630 Те са написани, като сега ще направя с PSEt 6, 418 00:18:44,630 --> 00:18:48,120 в C, така че да може да се провира всяка частица на изпълнение извън нея 419 00:18:48,120 --> 00:18:50,780 и наистина да упражни контрол фино зърно над това, което е 420 00:18:50,780 --> 00:18:52,980 става под качулка, а не просто да го вземе 421 00:18:52,980 --> 00:18:54,890 за даденост, някои по-висока ниво структура на данните. 422 00:18:54,890 --> 00:18:58,071 >> Помислете, в края на краищата, който в PHP изпълнява 423 00:18:58,071 --> 00:19:00,070 това понятие на хашиш table-- това е всъщност по- 424 00:19:00,070 --> 00:19:04,260 правилно нарича асоциативен array-- прави той или тя има някаква идея какъв вид 425 00:19:04,260 --> 00:19:07,090 на входа, че ще бъде въвеждане в структурата? 426 00:19:07,090 --> 00:19:08,260 Така че очевидно не, нали? 427 00:19:08,260 --> 00:19:10,340 Това е общ инструмент в инструментариума, че е 428 00:19:10,340 --> 00:19:13,430 условие за всеки, който иска да го използвате, и така със сигурност 429 00:19:13,430 --> 00:19:17,680 не могат да бъдат оптимизирани в крайна сметка за точно това, което искате да направите. 430 00:19:17,680 --> 00:19:21,180 >> Така търговията offs-- времето за разработка мощ се различават, резултати може да се различават, 431 00:19:21,180 --> 00:19:23,120 сложност или използването на паметта може да се различава. 432 00:19:23,120 --> 00:19:24,820 И така, какво ще намерите все повече е, че има 433 00:19:24,820 --> 00:19:26,570 щеше да бъде различен инструменти за търговия. 434 00:19:26,570 --> 00:19:31,160 И всъщност за супер мнозинство от окончателните проекти на хората в този клас, 435 00:19:31,160 --> 00:19:34,360 Вярваш или не, C не се случва да бъде най-подходящия език да се използва. 436 00:19:34,360 --> 00:19:37,880 >> И в действителност, един от храна за вкъщи в крайна сметка за всеки клас, като този 437 00:19:37,880 --> 00:19:40,510 е да се мислиш, Е, какво трябва да потеглям 438 00:19:40,510 --> 00:19:42,710 рафта, когато искате за решаване на някакъв проблем. 439 00:19:42,710 --> 00:19:46,720 И наистина, ние ще пресече този мост дори повече, тъй като ние гледаме на повече езици 440 00:19:46,720 --> 00:19:47,920 дори отвъд днес. 441 00:19:47,920 --> 00:19:50,530 >> Така че нека преход сега може би е по-добре запознати контекст 442 00:19:50,530 --> 00:19:52,480 за използване на език, като PHP. 443 00:19:52,480 --> 00:19:56,720 Това е малко по-често да се използва при командния ред, писане на скриптове 444 00:19:56,720 --> 00:19:59,050 както направих аз, но това е много, много по-често. 445 00:19:59,050 --> 00:20:02,350 И тя е била предназначена да се използва в под формата на файлове, които завършват обикновено 446 00:20:02,350 --> 00:20:05,060 в .php-- но това е не prerequisite-- 447 00:20:05,060 --> 00:20:07,990 които се генерират на уеб съдържание. 448 00:20:07,990 --> 00:20:11,310 >> Така че нека да вървим напред и да се отворят няколко примери I подготвени предварително. 449 00:20:11,310 --> 00:20:15,100 И това са всъщност нещо вярно истории, в които едно от първите неща, 450 00:20:15,100 --> 00:20:18,200 Което някога съм си направил след завършване CS50 и може би, мисля, 451 00:20:18,200 --> 00:20:21,350 Преди CS51 години е моят съквартирант и аз помагахме 452 00:20:21,350 --> 00:20:24,320 да стартирате първокурсник интрамурални спортна програма, която по това време, 453 00:20:24,320 --> 00:20:28,610 е първокурсник регистриране за различни спорт чрез попълване на лист хартия, 454 00:20:28,610 --> 00:20:31,800 както го наричаха, ходене през двора на Уигълзуърт, 455 00:20:31,800 --> 00:20:34,030 и го пуснете в някои капка врата Проктър е. 456 00:20:34,030 --> 00:20:37,210 И тогава той или тя ще мине през ги и след това всъщност ни пишете ръчно 457 00:20:37,210 --> 00:20:39,140 които са регистрирани за някои спорта. 458 00:20:39,140 --> 00:20:41,166 >> Затова е ясно, възможност за подобрение. 459 00:20:41,166 --> 00:20:44,040 Тези дни, може да се превърне просто Google Forms, но през деня, 460 00:20:44,040 --> 00:20:46,914 имахме действително да достигне for-- това дори не е била толкова дълго ago-- достигне 461 00:20:46,914 --> 00:20:49,410 за програмиране език, който не е PHP. 462 00:20:49,410 --> 00:20:51,200 По това време тя е била нещо, наречено Perl, 463 00:20:51,200 --> 00:20:52,890 който е излязъл от мода, тъй като. 464 00:20:52,890 --> 00:20:54,160 Но идеята е същата. 465 00:20:54,160 --> 00:20:58,940 >> И по същество седна да опитате до пристанище отива Perl версии на PHP, 466 00:20:58,940 --> 00:21:03,710 но в пълния отказ от права, не даде всеки смята, че естетиката, просто все още. 467 00:21:03,710 --> 00:21:04,960 Така че тук е уеб страница. 468 00:21:04,960 --> 00:21:05,670 Това е файл. 469 00:21:05,670 --> 00:21:09,470 Ако увеличите, неговата очевидно наречен froshim0.php 470 00:21:09,470 --> 00:21:12,060 просто защото това е първата ни Например в тази серия. 471 00:21:12,060 --> 00:21:15,970 И забележи, че има нещо, което изглежда да бъде много грозно HTML форма, 472 00:21:15,970 --> 00:21:18,680 но форма е интересно защото позволява 473 00:21:18,680 --> 00:21:21,910 ми да даде своя принос за употреба на браузъра. 474 00:21:21,910 --> 00:21:27,730 >> Сега за последен път, когато имахме форма, за да които представят успяхме нашия параметър заявка, 475 00:21:27,730 --> 00:21:30,450 параметър на опашката, както го наричаха? 476 00:21:30,450 --> 00:21:31,330 Така че, за да Google, нали? 477 00:21:31,330 --> 00:21:34,090 Ние напълно punted на идеята за прави нищо с този вход. 478 00:21:34,090 --> 00:21:36,160 >> Но днес ние започваме производство на продукция. 479 00:21:36,160 --> 00:21:39,420 И поведението Отивам да видя тук първоначално е доста тривиално. 480 00:21:39,420 --> 00:21:42,980 Дейвид, аз ще отписвате пол тук, да речем Matthews тук. 481 00:21:42,980 --> 00:21:43,800 Аз няма да бъда капитан. 482 00:21:43,800 --> 00:21:45,410 Отивам да кликнете Register. 483 00:21:45,410 --> 00:21:50,720 И забележете, че на адреса има променил се регистрирате-0.php, 484 00:21:50,720 --> 00:21:52,310 и тогава там е този грозен текст тук. 485 00:21:52,310 --> 00:21:54,460 Дадох без мисъл за форматирането на това. 486 00:21:54,460 --> 00:21:59,900 >> Но това, което е интересно е, че три ценности очевидно са преминали вътре. 487 00:21:59,900 --> 00:22:02,960 Това е вид на PHP еквивалентно на printf-- 488 00:22:02,960 --> 00:22:06,330 ще видим какво наистина се нарича в bit-- че просто отпечатва 489 00:22:06,330 --> 00:22:08,300 това, което премина в него. 490 00:22:08,300 --> 00:22:11,414 Така че, това показва, че тази форма има най-малко три полета до него, 491 00:22:11,414 --> 00:22:12,580 и ти ме видя да ги напишете вътре. 492 00:22:12,580 --> 00:22:15,739 Една от тях беше моето име, един е пол, един е общежитие. 493 00:22:15,739 --> 00:22:18,780 И капитан дори не се получи изпратени към сървъра, защото аз не го проверите. 494 00:22:18,780 --> 00:22:22,150 >> Така че, това е да се каже, очевидно, когато представя нещата в интернет, 495 00:22:22,150 --> 00:22:26,830 не само че URL понякога change-- понякога това не е така. 496 00:22:26,830 --> 00:22:30,330 Всъщност, името на файла се променя, но това, което отсъства от URL 497 00:22:30,330 --> 00:22:32,861 че видях за последен път с Google. 498 00:22:32,861 --> 00:22:33,360 Така ли? 499 00:22:33,360 --> 00:22:34,380 >> STUDENT: No низ заявка 500 00:22:34,380 --> 00:22:35,220 >> DAVID J. Malan: Не е низ заявка. 501 00:22:35,220 --> 00:22:37,270 Няма съмнение, марка нещо. 502 00:22:37,270 --> 00:22:40,050 Няма съмнение, марка Q се равнява на котки, както направихме миналия път. 503 00:22:40,050 --> 00:22:42,170 И със сигурност не име въпросителен знак е равна на 504 00:22:42,170 --> 00:22:46,310 David или общежитието равнява Matthews, Е, къде е, че всички отиваме? 505 00:22:46,310 --> 00:22:51,290 >> Е, нека да се върнем към Gedit тук и отваряне на първата от тези файлове 506 00:22:51,290 --> 00:22:57,020 в моя vhost, локален хост, общественото указател тук и отидете в froshim0. 507 00:22:57,020 --> 00:23:02,060 Така се оказва, че почти всички на тази страница е само HTML. 508 00:23:02,060 --> 00:23:05,410 И това може да е непознато за вас, но скоро ще бъде още повече, че с PSET 6 509 00:23:05,410 --> 00:23:07,370 и PSET 7 и PSET 8. 510 00:23:07,370 --> 00:23:09,160 Но това е само една HTML страница. 511 00:23:09,160 --> 00:23:12,400 >> И интересното изглежда да е тук. 512 00:23:12,400 --> 00:23:16,290 A форма маркер чието действие атрибут има стойност на регистър 0. 513 00:23:16,290 --> 00:23:18,890 Ето защо, когато подам това, той отива в този файл. 514 00:23:18,890 --> 00:23:20,620 Но метод е различен today-- пост. 515 00:23:20,620 --> 00:23:23,120 Така се оказва, че е най-малко два метода в интернет използват 516 00:23:23,120 --> 00:23:24,911 да изпрати информация от браузъра, за да сървър. 517 00:23:24,911 --> 00:23:25,980 Махни го поставя в URL адреса. 518 00:23:25,980 --> 00:23:27,950 Създайте го слага на друго място. 519 00:23:27,950 --> 00:23:30,570 И кога и защо може да ви всъщност искам уеб сайт 520 00:23:30,570 --> 00:23:34,110 да използвате пост тогава вместо за да получите, просто интуитивно? 521 00:23:34,110 --> 00:23:37,080 Всеки сайт. 522 00:23:37,080 --> 00:23:42,010 Какви данни трябва да мина малко от извод сега по пощата, за разлика от 523 00:23:42,010 --> 00:23:45,184 да се получи, ако сме виждали двете разлики? 524 00:23:45,184 --> 00:23:46,350 STUDENT: [недоловим] осигуряване. 525 00:23:46,350 --> 00:23:47,790 DAVID J. Malan: Ако искате нещо, за да бъде сигурен. 526 00:23:47,790 --> 00:23:50,360 Така че може да въведете парола в един сайт, кредитна карта 527 00:23:50,360 --> 00:23:53,030 в един сайт ще вид на тези неоптимално 528 00:23:53,030 --> 00:23:56,220 Ако браузърът сложи това стойност в рамките на URL. 529 00:23:56,220 --> 00:23:57,680 Защо? 530 00:23:57,680 --> 00:24:00,059 Можете да я видите, които не изглежда да е толкова голям проблем, 531 00:24:00,059 --> 00:24:03,350 но шансовете са ви доста често ходи далеч от компютъра или използване на компютър 532 00:24:03,350 --> 00:24:05,310 лаборатории, и така някой друг или дори съквартирант 533 00:24:05,310 --> 00:24:08,220 може лесно да се изкачват и да видим че лична информация. 534 00:24:08,220 --> 00:24:10,220 Когато изпратите имейл чрез интернет, най-вероятно 535 00:24:10,220 --> 00:24:12,350 не искам това край данни в адреса, както добре. 536 00:24:12,350 --> 00:24:15,266 И така, има редица причини Затова бихме искали да го пуснат тук. 537 00:24:15,266 --> 00:24:18,610 И photos-- прав, не мога дори доста представете си как бихте се вземе графика, 538 00:24:18,610 --> 00:24:21,480 като JPEG, и го сложи в URL. 539 00:24:21,480 --> 00:24:22,330 Можете да го направите. 540 00:24:22,330 --> 00:24:25,840 Има начини за кодиране, но това е просто не е прост като това. 541 00:24:25,840 --> 00:24:29,030 >> Така се регистрирайте 0 е всъщност много underwhelming. 542 00:24:29,030 --> 00:24:31,610 Всичко, което казва буквално е това. 543 00:24:31,610 --> 00:24:35,910 Той отпечатва вътре на някои HTML тагове следното. 544 00:24:35,910 --> 00:24:38,640 Имам етикет PHP тук вложени вътре в предварително маркер. 545 00:24:38,640 --> 00:24:42,300 "Pre" просто означава предварително форматиран текст, моно-раздалечени, като пишеща машина. 546 00:24:42,300 --> 00:24:44,836 >> Printr е печат рекурсивни функции. 547 00:24:44,836 --> 00:24:46,710 И тогава там е това интересно нещо тук. 548 00:24:46,710 --> 00:24:48,835 И ние ще се върнем към този защото има други, 549 00:24:48,835 --> 00:24:51,140 но долар знак за подчертаване пост изглежда е 550 00:24:51,140 --> 00:24:56,110 променлива в PHP в който нищо ви изпрати от браузъра, за да сървъра 551 00:24:56,110 --> 00:24:58,040 получава съхраняват за вас. 552 00:24:58,040 --> 00:25:00,930 И ще видиш как да стигнеш най- тази информация не след дълго. 553 00:25:00,930 --> 00:25:04,000 >> Но първо, нека да се върнем към малко по-различен пример. 554 00:25:04,000 --> 00:25:09,050 Отивате в register-- или по-скоро, froshims1.php, 555 00:25:09,050 --> 00:25:10,470 което изглежда малко по-различна. 556 00:25:10,470 --> 00:25:12,670 Взех малко по- усилие с форматиране, 557 00:25:12,670 --> 00:25:14,370 въпреки че тя все още е доста грозна. 558 00:25:14,370 --> 00:25:16,990 Но аз ще отида напред и напишете "David" сега. 559 00:25:16,990 --> 00:25:17,850 Мъж. 560 00:25:17,850 --> 00:25:19,360 Ще проверим "капитан" и този път. 561 00:25:19,360 --> 00:25:20,660 Ние ще направим Matthews. 562 00:25:20,660 --> 00:25:22,430 И да се регистрирате. 563 00:25:22,430 --> 00:25:24,110 >> И този път той казва, хм, не съвсем. 564 00:25:24,110 --> 00:25:26,180 Добре, така че какво да се регистрирате 1? 565 00:25:26,180 --> 00:25:30,509 Позволете ми да отида в отворен регистър 1 and-- хм. 566 00:25:30,509 --> 00:25:32,300 Добре, така че това е интересно, а това 567 00:25:32,300 --> 00:25:34,880 е трамплин към момента по-интересни програми. 568 00:25:34,880 --> 00:25:38,970 >> Обърнете внимание на горната част на този файл има PHP таг, както и някои коментари. 569 00:25:38,970 --> 00:25:42,590 И те са, за сега, отвличане на вниманието така че нека просто да се отървем от тези коментари 570 00:25:42,590 --> 00:25:47,070 само като те са в C. И аз твърдя, с това парче код с коментар 571 00:25:47,070 --> 00:25:49,280 че този код е утвърждаване на подаването. 572 00:25:49,280 --> 00:25:51,690 >> Е, оказва се, че променливи, като знака за долар 573 00:25:51,690 --> 00:25:53,739 подчертае пост са нарича супер глобални. 574 00:25:53,739 --> 00:25:55,530 Те са като тези специални глобални променливи 575 00:25:55,530 --> 00:25:58,840 че са само омни-в момента наличен във вашата програма. 576 00:25:58,840 --> 00:26:03,870 И вие можете да използвате квадратен скоба нотация да индексира в тях не използват номера 577 00:26:03,870 --> 00:26:07,460 като 0, 1, 2, 3, но действителните думи. 578 00:26:07,460 --> 00:26:12,100 >> Така че можеш да се сетиш на знака за долар подчертае, след като сортиране на хеш таблица 579 00:26:12,100 --> 00:26:15,920 че бихте могли да преминат ключа в, а за справка дума между квадратните скоби, 580 00:26:15,920 --> 00:26:19,370 и това ще ви даде гърба на стойност, която действително се предоставя на потребителя. 581 00:26:19,370 --> 00:26:21,210 PHP има функция нарича празна, че само 582 00:26:21,210 --> 00:26:23,720 казва да или не, това променлива е празна или не. 583 00:26:23,720 --> 00:26:27,250 Ние имаме тези двойни барове, което просто означава, или, както е в C. 584 00:26:27,250 --> 00:26:31,740 >> Така че в действителност, тази линия 4 е просто казвайки, ако потребителят не даде име 585 00:26:31,740 --> 00:26:36,540 или не даде пол или не е даде общежитието, давай напред и да го пренасочи 586 00:26:36,540 --> 00:26:38,184 или си чрез тази линия тук. 587 00:26:38,184 --> 00:26:40,600 Така че това е малко по-загадъчен, но това просто означава буквално 588 00:26:40,600 --> 00:26:43,330 се върна на това място, така че punts потребителя 589 00:26:43,330 --> 00:26:45,420 обратно до мястото, където той или тя идва. 590 00:26:45,420 --> 00:26:47,880 Но това е малко грубоват в това, че е трудно кодирани. 591 00:26:47,880 --> 00:26:52,150 >> Но какво, ако това, ако състояние не се оцени, за да е истина? 592 00:26:52,150 --> 00:26:55,790 Какво, ако потребителят не ми даде му или нейното име и в общежитието и пол? 593 00:26:55,790 --> 00:26:58,540 Това ако състоянието не е ще се оцени като истина, 594 00:26:58,540 --> 00:27:00,650 така че аз не се появи на изхода на линия 7. 595 00:27:00,650 --> 00:27:01,680 И така, какво се случва? 596 00:27:01,680 --> 00:27:03,880 И това е, което е интересно за PHP. 597 00:27:03,880 --> 00:27:07,470 >> Можете да пуснете в и извън на режим на PHP, така да се каже. 598 00:27:07,470 --> 00:27:10,985 Ако искате някакъв код да се изпълни, можете да отваряте и затваряте етикет PHP 599 00:27:10,985 --> 00:27:13,010 и сложи код там като съм направил тук. 600 00:27:13,010 --> 00:27:16,810 Веднага след като затворите маркера PHP, сървърът 601 00:27:16,810 --> 00:27:19,407 е просто ще изплюе каквото и да постави там. 602 00:27:19,407 --> 00:27:21,740 И наистина, това е част от оригиналния дизайн на PHP, 603 00:27:21,740 --> 00:27:25,280 за по-добро, за лошо, е това смесването на код и маркиране 604 00:27:25,280 --> 00:27:25,920 език. 605 00:27:25,920 --> 00:27:28,670 И ние ще видим, че това много бързо преминава в бъркотия. 606 00:27:28,670 --> 00:27:31,280 И така, ние ще се справим по-добре, отколкото това в крайна сметка, но само 607 00:27:31,280 --> 00:27:35,620 забележите, че лекотата, с която съм действително в състояние да изпълни някаква логика. 608 00:27:35,620 --> 00:27:37,440 >> Но все още е малко underwhelming. 609 00:27:37,440 --> 00:27:41,210 Нека отворим версия две от Фрош УИ, които 610 00:27:41,210 --> 00:27:44,270 очевидно представя register2.php. 611 00:27:44,270 --> 00:27:47,600 Така че този файл е всъщност ще да изглеждат почти еднакви. 612 00:27:47,600 --> 00:27:50,780 Отивам да отидете на Фрош УИ 2. 613 00:27:50,780 --> 00:27:53,050 Но в Фрош УИ 2, нека да видим какво ще стане. 614 00:27:53,050 --> 00:27:58,110 >> Дейвид, кликнете върху бутона за избор, тъй като тя се нарича; Matthews, без капитан. 615 00:27:58,110 --> 00:27:59,230 Регистрирайте се. 616 00:27:59,230 --> 00:28:00,130 Вие сте регистриран. 617 00:28:00,130 --> 00:28:00,700 Не съвсем. 618 00:28:00,700 --> 00:28:02,574 О, чакайте, ние просто направихме този пример, нали така? 619 00:28:02,574 --> 00:28:04,520 Добре стои. 620 00:28:04,520 --> 00:28:06,602 Ние ще направим тройка. 621 00:28:06,602 --> 00:28:08,560 Очевидно нещо не е за да се случи с Gmail. 622 00:28:08,560 --> 00:28:09,600 Ние ще стигнем до там. 623 00:28:09,600 --> 00:28:11,900 >> Така Фрош УИ 3 изглежда по този начин. 624 00:28:11,900 --> 00:28:13,050 Не по-различно. 625 00:28:13,050 --> 00:28:19,850 Но когато го направя David, мъж, Матюс, и регистър, това третата и последна версия 626 00:28:19,850 --> 00:28:22,230 претенции, просто ви, са регистрирани наистина. 627 00:28:22,230 --> 00:28:23,560 Това е нещо несъществено. 628 00:28:23,560 --> 00:28:25,600 Но аз твърдя с това Третата и последна версия 629 00:28:25,600 --> 00:28:30,610 Аз сега пресъздадени точно това, което ми съквартирант и аз построих за Фрош УИ 630 00:28:30,610 --> 00:28:31,731 преди програмни години. 631 00:28:31,731 --> 00:28:32,480 И това е много проста. 632 00:28:32,480 --> 00:28:34,330 Не е имало данни, не Excel електронна таблица. 633 00:28:34,330 --> 00:28:36,450 Но по-важното е, не е имало повече хартия 634 00:28:36,450 --> 00:28:42,520 защото това, което сме направили с тази програма е действително да изпрати Проктър, който 635 00:28:42,520 --> 00:28:44,530 беше преди получаване тези неща чрез форми. 636 00:28:44,530 --> 00:28:48,890 >> И очевидно сме програмирани това такъв начин, че когато някой се регистрира, 637 00:28:48,890 --> 00:28:52,470 Имейли сметка Джон Харвард на proctor-- или себе си в този случай, 638 00:28:52,470 --> 00:28:55,960 John Harvard-- със следното text-- "Този човек просто регистрирана." 639 00:28:55,960 --> 00:29:00,560 Името е Дейвид, капитан е празно; пол, мъжки; и общежитието, Matthews. 640 00:29:00,560 --> 00:29:01,560 >> Така че това, което се случи там? 641 00:29:01,560 --> 00:29:05,360 Е, въпросния файл тук е очевидно register3.php. 642 00:29:05,360 --> 00:29:09,080 И ако мога да отворя това, вие ще видите, както силата на код като този 643 00:29:09,080 --> 00:29:12,380 а също и, честно казано, несигурността на система, като електронна поща. 644 00:29:12,380 --> 00:29:16,290 Току-що ефективно се престори, че е Джон Харвард по следния начин. 645 00:29:16,290 --> 00:29:20,920 >> Имам отворен таг на PHP до върха, който просто казва, тук идва някои PHP код. 646 00:29:20,920 --> 00:29:23,155 Първа тук, оказва се, има библиотеки в PHP. 647 00:29:23,155 --> 00:29:26,410 Просто не трябва да Включване на Хедър файлове, като много. 648 00:29:26,410 --> 00:29:28,900 Можете да получите повече с кухненска мивка, така да се каже. 649 00:29:28,900 --> 00:29:31,820 >> Но този път на ред 4, аз правя Искам да специална библиотека, наречена 650 00:29:31,820 --> 00:29:36,087 PHP писмото, което е, че нещо можете да инсталирате безплатно в много системи. 651 00:29:36,087 --> 00:29:37,920 Тук долу съм валидиране представяне само 652 00:29:37,920 --> 00:29:40,540 чрез проверка е потребителят да даде ми име, пол, и общежитието. 653 00:29:40,540 --> 00:29:44,130 И ако е така, давай напред и конкретни примери писмото. 654 00:29:44,130 --> 00:29:47,020 >> Можете да мислите за това, че е на линия на код, който просто разпределя. 655 00:29:47,020 --> 00:29:48,950 Това е като изчистване, но това е малко по-секси 656 00:29:48,950 --> 00:29:51,790 по това, че не говорим просто изчистване и някакъв общ брой. 657 00:29:51,790 --> 00:29:55,030 Вие казвате, дайте ми един от тях, дайте ми нов един от тях. 658 00:29:55,030 --> 00:29:57,950 >> И ако вие сте програмирали в Java или C ++ или други езици, 659 00:29:57,950 --> 00:29:59,130 може би сте виждали това. 660 00:29:59,130 --> 00:30:01,840 Но в краткосрочен от него, ако непознат, този ред 661 00:30:01,840 --> 00:30:05,410 поставя под знака за долар поща специална структура, наречена 662 00:30:05,410 --> 00:30:08,731 обект, който е вграден в имейл функционалност. 663 00:30:08,731 --> 00:30:10,355 И в действителност, забележете, и подобен синтаксис. 664 00:30:10,355 --> 00:30:11,900 >> Това не е указател, сам по себе си. 665 00:30:11,900 --> 00:30:13,990 PHP просто използва същия синтаксис. 666 00:30:13,990 --> 00:30:17,660 Тази линия се казва ползване SMTP-- Simple Mail Transfer 667 00:30:17,660 --> 00:30:20,900 Протокол, който е само на протокол, използван за изпращане на поща. 668 00:30:20,900 --> 00:30:24,240 Това е уточняване употреба SMTP сървъра на Харвардския университет, който 669 00:30:24,240 --> 00:30:25,830 е някъде тук, на територията на колежа. 670 00:30:25,830 --> 00:30:28,480 >> Това се казва какво TCP номер на порта да се говори за, 671 00:30:28,480 --> 00:30:31,650 и аз си помислих, че от Googling или чрез задаване на Help Desk. 672 00:30:31,650 --> 00:30:34,640 И след това, тъй като Harvard използва някои система за сигурност на server-- поща 673 00:30:34,640 --> 00:30:37,060 най-малко за криптиране трафик между вас и него, 674 00:30:37,060 --> 00:30:41,380 въпреки че всеки може да изпрати на it-- Отивам да включите протокола TLS 675 00:30:41,380 --> 00:30:42,710 за поддържане на това сигурно. 676 00:30:42,710 --> 00:30:44,730 >> Но това е мястото, където нещата получи малко страшно. 677 00:30:44,730 --> 00:30:47,970 Мога просто произволно кажа, че съм jharvard, 678 00:30:47,970 --> 00:30:51,930 и аз може просто произволно себе си приятел тук. 679 00:30:51,930 --> 00:30:55,650 И след това мога да посочите предмет с тази линия тук. 680 00:30:55,650 --> 00:30:58,460 >> И това просто изглежда грозно, но това е само куп конкатенация. 681 00:30:58,460 --> 00:31:04,480 Оказва се, че PHP е супер полезен символ, като някои езици, операторът на точка, 682 00:31:04,480 --> 00:31:07,340 която току-що буквално конкатенира низ след низ след низ, 683 00:31:07,340 --> 00:31:09,810 и не е нужно да се изчистване или цифра от общата дължина на низа. 684 00:31:09,810 --> 00:31:10,820 Можете просто да го направя. 685 00:31:10,820 --> 00:31:15,220 И наистина, защото аз съм слепване във всички тези неща с тези точки, 686 00:31:15,220 --> 00:31:18,330 ето защо имейл I изпрати изглеждаше като го е направил. 687 00:31:18,330 --> 00:31:20,610 >> И тогава най-накрая тук, аз съм изпращане на поща. 688 00:31:20,610 --> 00:31:22,580 Така че, ако това е невярна, Аз съм просто ще умре, 689 00:31:22,580 --> 00:31:25,680 което е функция, която само разпечатки до известна съобщение за грешка на екрана. 690 00:31:25,680 --> 00:31:29,170 Но това е, в действителност, извикване на функцията за изпращане. 691 00:31:29,170 --> 00:31:31,780 В противен случай, ако всичко това се провали, това ме пренасочва обратно тук. 692 00:31:31,780 --> 00:31:34,050 >> И защо виждам, че Аз съм регистриран наистина? 693 00:31:34,050 --> 00:31:36,110 Е, това се случи точно тук. 694 00:31:36,110 --> 00:31:38,170 Така че аз нося този за няколко причини. 695 00:31:38,170 --> 00:31:41,542 >> One, това е точно как, ако се изгради някой сайт за окончателен проект 696 00:31:41,542 --> 00:31:44,000 или за реалния свят, това е как ви изпрати имейл напомняния 697 00:31:44,000 --> 00:31:45,924 на вашите клиенти или вашите абонати. 698 00:31:45,924 --> 00:31:47,590 Това е как да ви изпрати парола напомняния. 699 00:31:47,590 --> 00:31:50,760 Това е как да изпрати хора на съобщения че те имат нов Facebook 700 00:31:50,760 --> 00:31:52,990 съобщение висящи или нещо подобно. 701 00:31:52,990 --> 00:31:55,010 >> Но той също така говори за на факта, че това би могло да 702 00:31:55,010 --> 00:31:58,160 са били много добре от Дейвин или някой друг. 703 00:31:58,160 --> 00:32:00,567 И аз казвам на този вид с усмивка, защото аз съм 704 00:32:00,567 --> 00:32:03,400 съвсем сигурен какво се случва през няколко от мислите ви в този момент. 705 00:32:03,400 --> 00:32:11,910 Но това е един от тези, които правя, както аз казвам, а не както аз правя вид на нещата, 706 00:32:11,910 --> 00:32:14,480 защото това е лесно да се изградят имейли като този. 707 00:32:14,480 --> 00:32:16,480 Но както може би сте виждали или да прочетете в червено, 708 00:32:16,480 --> 00:32:18,271 на края тя също е доста тривиално за хората 709 00:32:18,271 --> 00:32:20,050 да ги проследи до известна произход. 710 00:32:20,050 --> 00:32:23,790 И ме питат известно време, може би при CS50 обяд, как за първи път 711 00:32:23,790 --> 00:32:27,080 се запознаха много тясно почти до изд борда на много години 712 00:32:27,080 --> 00:32:30,890 Преди, когато открих, как интернет работи. 713 00:32:30,890 --> 00:32:36,940 Така че в никакъв case-- леко след като направи изд дъската. 714 00:32:36,940 --> 00:32:42,300 >> Така във всеки случай, е цял куп супер глобални 715 00:32:42,300 --> 00:32:45,960 както ги наричат ​​тук, един от които ние saw-- долар знак за подчертаване пост. 716 00:32:45,960 --> 00:32:49,530 Има един колега, наречен GET, което е мястото, където нещата от URL 717 00:32:49,530 --> 00:32:50,690 в крайна сметка става. 718 00:32:50,690 --> 00:32:54,051 А има и един куп други, too-- сесия и сървър и бисквитка. 719 00:32:54,051 --> 00:32:55,800 Ще се върнем към Cookie някой друг път, 720 00:32:55,800 --> 00:33:01,340 но сесията е вид хладно защото точно now-- докато now-- 721 00:33:01,340 --> 00:33:06,350 всичко, което сме направили с уеб браузър е нещо без гражданство, така да се каже. 722 00:33:06,350 --> 00:33:10,060 Мога да кликнете наоколо, достъп файлове на сървъра, нещо, 723 00:33:10,060 --> 00:33:13,500 се случва на екрана, но след това връзката се затваря. 724 00:33:13,500 --> 00:33:17,450 The Internet Explorer или Firefox икона спира предене 725 00:33:17,450 --> 00:33:20,340 и просто да видим какво че уеб страница съдържа. 726 00:33:20,340 --> 00:33:23,530 >> Така HTTP е без гражданство, в които след като прави връзка 727 00:33:23,530 --> 00:33:25,050 получава някои данни, това е всичко. 728 00:33:25,050 --> 00:33:29,940 Не повече връзка, за разлика от Skype, за разлика от FaceTime, за разлика GChat, които 729 00:33:29,940 --> 00:33:32,180 поддържа постоянна връзка със сървъра. 730 00:33:32,180 --> 00:33:34,650 Мрежата е фундаментално изключен, макар че ще 731 00:33:34,650 --> 00:33:36,630 виж след дълго как ние можем да симулира неща 732 00:33:36,630 --> 00:33:39,300 като Facebook чат и GChat, който поддържа illusion-- 733 00:33:39,300 --> 00:33:41,680 или всъщност не се поддържа постоянна връзка с помощта 734 00:33:41,680 --> 00:33:43,270 по-модерна технология. 735 00:33:43,270 --> 00:33:49,000 >> Но ако отида, да речем, counter.php, това е друг прост пример, 736 00:33:49,000 --> 00:33:52,700 както ще видим, че в момента мисли Посетих сайта нула време. 737 00:33:52,700 --> 00:33:56,790 Но ако просто се презарежда страницата, някак си знае, че е бил тук преди. 738 00:33:56,790 --> 00:33:58,840 Ако аз се презареди отново, тя знае, че е бил тук преди. 739 00:33:58,840 --> 00:34:01,100 И отново, и отново, и отново, и отново. 740 00:34:01,100 --> 00:34:03,610 >> Така че има някакъв плюс plussing става, но известие 741 00:34:03,610 --> 00:34:07,090 малкото нещо, което се върти все така за кратко до върха и след това прекъсва, 742 00:34:07,090 --> 00:34:11,179 така че не е като да имам постоянна връзка с моя уред. 743 00:34:11,179 --> 00:34:16,929 Е, ако отида в counter.php, забележите колко е лесно. 744 00:34:16,929 --> 00:34:19,080 За първи път се обади тази специална функция, която скоро ще 745 00:34:19,080 --> 00:34:21,513 започнете да приемате за даденост нарича начало на сесията. 746 00:34:21,513 --> 00:34:22,179 Започнете сесия. 747 00:34:22,179 --> 00:34:25,095 >> И сесия отсега нататък е просто ще бъде една кофа, като пазаруване 748 00:34:25,095 --> 00:34:28,120 количката, в която можете да сложите ценности и вид на доверие като програмист 749 00:34:28,120 --> 00:34:31,590 че те ще бъдат тук, когато че потребителят влезе back-- втори 750 00:34:31,590 --> 00:34:35,670 по-късно, един час по-късно, дори и една година по-късно, толкова дълго, тъй като той или тя прави не е ясно 751 00:34:35,670 --> 00:34:37,602 техните бисквитки, както ние в крайна сметка ще видим. 752 00:34:37,602 --> 00:34:39,310 И сега просто трябва на ако състоянието тук. 753 00:34:39,310 --> 00:34:44,679 Така че, ако на следния ключ, наречена брояч, се определя в 754 00:34:44,679 --> 00:34:49,210 на тази супер global-- този хеш маса, ако will-- нарича сесия, 755 00:34:49,210 --> 00:34:53,350 след което продължете напред и вземете стойност от session-- мислят 756 00:34:53,350 --> 00:34:55,250 за това като за пазаруване cart-- и да го съхранява 757 00:34:55,250 --> 00:34:57,680 в временна променлива, наречена брояч. 758 00:34:57,680 --> 00:35:02,240 >> В противен случай, ако тази стойност е брояч не е зададено в така наречената количката за пазаруване, 759 00:35:02,240 --> 00:35:04,430 просто го инициализира с 0. 760 00:35:04,430 --> 00:35:09,830 На последно място, тук, отидете и се връща в количките за пазаруване или сесията 761 00:35:09,830 --> 00:35:13,000 стойността на брояча +1. 762 00:35:13,000 --> 00:35:16,730 Така се оказва, че това специален контейнер here-- 763 00:35:16,730 --> 00:35:20,355 който отново е един от тези свързани масиви, масив, който можете индекс 764 00:35:20,355 --> 00:35:25,010 в думи, вместо numbers-- продължава дори след като потребителят отива. 765 00:35:25,010 --> 00:35:26,510 Отново ще се върна към страницата сега. 766 00:35:26,510 --> 00:35:28,400 Той е бил една минута или така. 767 00:35:28,400 --> 00:35:31,300 Но тя си спомня, че съм бил тук 19 пъти преди. 768 00:35:31,300 --> 00:35:32,740 Това е моят 20-ти посещение. 769 00:35:32,740 --> 00:35:36,560 >> И така, това ще бъде от ключово значение за прилагане на всеки сайт, който си спомня, 770 00:35:36,560 --> 00:35:40,640 че сте влезли в, че сте поставили нещо буквално в пазарската количка 771 00:35:40,640 --> 00:35:43,902 да купуват или че имате някои брой съобщения в очакване. 772 00:35:43,902 --> 00:35:45,610 Всеки път, когато искате да не забравяйте, информация, 773 00:35:45,610 --> 00:35:48,130 ще видим, че PHP, като няколко други езици, 774 00:35:48,130 --> 00:35:53,640 ни дава тази илюзия на държавната въпреки че, както ще видите в PSET 6, 775 00:35:53,640 --> 00:35:57,642 като сте прави HTTP заявки от клиент-сървър, това е всичко. 776 00:35:57,642 --> 00:35:59,850 След като се върна, че отговор, няма нищо по- 777 00:35:59,850 --> 00:36:01,790 връща от сървъра по подразбиране. 778 00:36:01,790 --> 00:36:03,820 Но ще видим как да се справите с това. 779 00:36:03,820 --> 00:36:07,430 >> Е, сега, нека се опитаме да почистване на този до малко. 780 00:36:07,430 --> 00:36:09,470 Видяхме няколко различни примери. 781 00:36:09,470 --> 00:36:12,250 О, и като настрана, за тези, познати или непознати, 782 00:36:12,250 --> 00:36:14,230 поради това, че Фрош УИ например отиде 783 00:36:14,230 --> 00:36:18,060 от търсите наистина грозно да slightly-- добре, 784 00:36:18,060 --> 00:36:23,160 още ugly-- до леко по-малко грозно макар и все още грозно 785 00:36:23,160 --> 00:36:25,230 е така, защото ако погледнем изходния код тук 786 00:36:25,230 --> 00:36:28,240 Оказва се, че имам тази най-горната част на файла. 787 00:36:28,240 --> 00:36:32,570 >> Оказва се, че фърмуера е един от многото свободно достъпни библиотеки там 788 00:36:32,570 --> 00:36:37,140 че не съществува за езици за програмиране винаги, но за CSS или JavaScript 789 00:36:37,140 --> 00:36:39,190 или HTML или произволен брой езици. 790 00:36:39,190 --> 00:36:42,160 >> И тези хора here-- първоначално излезе 791 00:36:42,160 --> 00:36:44,730 на Twitter-- просто трябва цял куп стилове. 792 00:36:44,730 --> 00:36:47,360 Това е огромен файл тук, че някой е написал, 793 00:36:47,360 --> 00:36:51,020 или някой е написал, че с течение на времето уточнява, цветове и форматиране 794 00:36:51,020 --> 00:36:53,740 и какво ли не, така че не мога да вид на заем си синтаксис 795 00:36:53,740 --> 00:36:56,157 и не трябва да разбера как да изложи ми форма. 796 00:36:56,157 --> 00:36:57,990 Това се minified така че един компютър може да 797 00:36:57,990 --> 00:37:00,560 го разбирам, но не непременно човек. 798 00:37:00,560 --> 00:37:03,050 Така че това е просто защо стилизация има променен. 799 00:37:03,050 --> 00:37:05,450 >> Но нека сега направим по-добре по отношение на дизайна, 800 00:37:05,450 --> 00:37:07,490 защото ако остане надолу този път е твърде дълъг, 801 00:37:07,490 --> 00:37:11,290 нашият код ще получите разхвърлян и объркана. 802 00:37:11,290 --> 00:37:13,040 Така че нека да се съсредоточи върху тези примери тук. 803 00:37:13,040 --> 00:37:15,090 Последният за днес. 804 00:37:15,090 --> 00:37:18,720 >> Така че тук е супер проста версия 1.0 на сайта CS50 е. 805 00:37:18,720 --> 00:37:21,250 Той има само линкове към лекции и учебна програма, 806 00:37:21,250 --> 00:37:25,490 и това е с помощта на които неподреден списък tag-- тага UL, че сме използвали за последен път. 807 00:37:25,490 --> 00:37:28,800 И ако в действителност, ако I отвори View Page Source, 808 00:37:28,800 --> 00:37:31,710 ще видите, че това е наистина, наистина прост HTML. 809 00:37:31,710 --> 00:37:35,460 И в действителност, въпреки че това е файл PHP под капака, 810 00:37:35,460 --> 00:37:38,620 това е все още само плюене само HTML за сега. 811 00:37:38,620 --> 00:37:41,312 >> Така че, ако кликнете върху Лекции, виждаме това да се случи. 812 00:37:41,312 --> 00:37:43,020 И ако кликнете върху седмица нула, ние виждаме това. 813 00:37:43,020 --> 00:37:44,920 И ако щракнете върху Сряда, ние виждаме това. 814 00:37:44,920 --> 00:37:47,900 И това очевидно е PDF на слайдовете от този ден. 815 00:37:47,900 --> 00:37:52,020 Всичко, което съм направил, е връзка с котва маркер към този URL тук. 816 00:37:52,020 --> 00:37:55,400 >> Така че това е само да се каже, че това е доста проста версия на сайта CS50 е. 817 00:37:55,400 --> 00:37:56,790 Нека да видим как се изпълнява. 818 00:37:56,790 --> 00:38:01,240 Ако отида в директорията mvc0, ще видим няколко файлове. 819 00:38:01,240 --> 00:38:03,250 Един от тях е README, така че ако някои от това е твърде бързо, 820 00:38:03,250 --> 00:38:05,166 можете просто да мушкам около по-спокойно по-късно. 821 00:38:05,166 --> 00:38:07,930 И известие тук е index.php файл. 822 00:38:07,930 --> 00:38:09,960 Оказва се, че ако Вие сами, човекът, 823 00:38:09,960 --> 00:38:14,460 не уточняват окончателно име на URL, уеб сървър обикновено 824 00:38:14,460 --> 00:38:17,010 заключава някакво име по подразбиране за вас. 825 00:38:17,010 --> 00:38:20,060 Индексът точка нещо обикновено е по подразбиране. 826 00:38:20,060 --> 00:38:23,010 >> Така че това е защо преди малко когато посетих този URL тук, 827 00:38:23,010 --> 00:38:26,750 не името на файла, без файл разширение, без период на URL. 828 00:38:26,750 --> 00:38:29,710 Той просто знаеше някак си магически да търсят index.php. 829 00:38:29,710 --> 00:38:30,870 Това е просто една конвенция. 830 00:38:30,870 --> 00:38:32,360 Може ли да се нарече нещо. 831 00:38:32,360 --> 00:38:35,110 >> Така че, ако аз сега отида в index.php, ще видите 832 00:38:35,110 --> 00:38:37,100 че indeed-- нека се отървете от коментарите 833 00:38:37,100 --> 00:38:39,500 тук, защото там наистина нищо интересно да it-- 834 00:38:39,500 --> 00:38:41,579 това е просто трудно кодирани HTML. 835 00:38:41,579 --> 00:38:43,370 Така че това е последователна, все пак, с моя иск 836 00:38:43,370 --> 00:38:45,230 че можете да смесвам HTML и PHP. 837 00:38:45,230 --> 00:38:48,060 Не е действителната програмиране логика тук. 838 00:38:48,060 --> 00:38:51,030 >> И други файлове са доста много точно толкова безинтересно. 839 00:38:51,030 --> 00:38:56,240 Това е просто трудно кодирани една седмица тук, за да една седмица м и една седмица W, 840 00:38:56,240 --> 00:38:57,510 понеделник и сряда. 841 00:38:57,510 --> 00:39:01,890 И след това, ако се отвори нула седмица забележите, че е почти идентичен. 842 00:39:01,890 --> 00:39:03,320 >> И това е нещо като ключ за вкъщи. 843 00:39:03,320 --> 00:39:06,180 Забележете колко излишно е това. 844 00:39:06,180 --> 00:39:10,710 Тези файлове едва се променят, и все пак аз извади един от тези Copy / Paste работни места 845 00:39:10,710 --> 00:39:13,420 когато взех един file-- вероятно през седмица zero-- го копира 846 00:39:13,420 --> 00:39:16,320 когато една седмица дойде наоколо, и променени няколко стойности. 847 00:39:16,320 --> 00:39:18,590 Ние вероятно ще трябва да бъде в състояние да направи по-добре от това. 848 00:39:18,590 --> 00:39:21,800 >> Така че нека да се върнем до MVC и отиде в една версия. 849 00:39:21,800 --> 00:39:24,810 И забележи имам няколко файла, защото това, което 850 00:39:24,810 --> 00:39:29,870 е общ за всички тези файлове просто миг ago-- ако се върна до версия 0, 851 00:39:29,870 --> 00:39:32,600 нека се върнем в индекс, и просто postulate-- 852 00:39:32,600 --> 00:39:36,090 след като се отървете от comments-- каква част от тази страница 853 00:39:36,090 --> 00:39:40,072 е вероятно във всеки един от моите файлове? 854 00:39:40,072 --> 00:39:40,780 Просто го извикам. 855 00:39:40,780 --> 00:39:44,620 Кои линии са дублирани вероятно през всички тези страници? 856 00:39:44,620 --> 00:39:45,120 Така ли? 857 00:39:45,120 --> 00:39:46,110 >> STUDENT: [недоловим]. 858 00:39:46,110 --> 00:39:47,660 >> DAVID J. Malan: от 1 до 9. 859 00:39:47,660 --> 00:39:48,720 Да, абсолютно. 860 00:39:48,720 --> 00:39:52,080 От 1 до 9, с изключение може би 8 променя малко, защото CS50 861 00:39:52,080 --> 00:39:54,650 става лекции или нула седмица или нещо такова. 862 00:39:54,650 --> 00:39:55,970 Но почти идентични. 863 00:39:55,970 --> 00:39:58,657 Така че всичко това е просто вид копирани и поставили. 864 00:39:58,657 --> 00:40:00,490 И има няколко други линии мога да се сетя 865 00:40:00,490 --> 00:40:05,000 на които вероятно са идентични във всички файлове. 866 00:40:05,000 --> 00:40:06,315 >> STUDENT: 12 и 13. 867 00:40:06,315 --> 00:40:07,190 DAVID J. Malan: Да. 868 00:40:07,190 --> 00:40:11,220 Разбира се, 12, 13 и 14, може би, само защото интересните неща 869 00:40:11,220 --> 00:40:15,460 се случва по линии 11 и 10, така че ще изглежда. 870 00:40:15,460 --> 00:40:18,350 Така че нека да погледнем на версия 1, която се опитва да се подобри по този въпрос. 871 00:40:18,350 --> 00:40:24,020 Във версия 1 от настоящия MVC example-- ние ще обясни какво MVC средства в moment-- 872 00:40:24,020 --> 00:40:27,420 ако отида в индекса, то вид изглежда малко объркващо сега. 873 00:40:27,420 --> 00:40:28,880 Това не е толкова просто, колкото преди. 874 00:40:28,880 --> 00:40:30,906 >> Но след като започнете да прочетете я внимателно, това е 875 00:40:30,906 --> 00:40:32,530 доста ясно какво прави. 876 00:40:32,530 --> 00:40:34,397 Очевидно линия 1 и линия 8 се заменя 877 00:40:34,397 --> 00:40:37,230 всички от нещата, които просто identified-- макар и само за добра мярка, 878 00:40:37,230 --> 00:40:41,900 Оставих ULs има само в случай, че някои дни не са имали списък на нещата. 879 00:40:41,900 --> 00:40:47,860 И така изискват е нещо като килограм включва в C. Той копира и пасти 880 00:40:47,860 --> 00:40:50,470 съдържанието ефективно точно тук, в този файл. 881 00:40:50,470 --> 00:40:53,650 >> Така че в header.php, както може да се направи извод от неговото име, 882 00:40:53,650 --> 00:40:55,330 ще бъде заглавието на страницата. 883 00:40:55,330 --> 00:40:57,110 Това е вид на сираци тук. 884 00:40:57,110 --> 00:41:01,820 Той има само отгоре, но че няма повече съдържание по-долу. 885 00:41:01,820 --> 00:41:05,070 >> И ако погледнете долния Междувременно който бе другият файл mentioned-- 886 00:41:05,070 --> 00:41:08,830 това е още по-интересно, но отново, това е обща за всичко. 887 00:41:08,830 --> 00:41:10,250 Така че това е най-долното поле. 888 00:41:10,250 --> 00:41:11,300 Това е заглавието. 889 00:41:11,300 --> 00:41:13,950 Това е файл, който е се променя, така че защо да не 890 00:41:13,950 --> 00:41:18,140 опитайте да фактор на сходството с тези два реда тук? 891 00:41:18,140 --> 00:41:20,090 >> Но можем да се почисти тази до малко по-нататък. 892 00:41:20,090 --> 00:41:23,260 Аз ще отида напред и да отвори версия две, където 893 00:41:23,260 --> 00:41:27,106 ще видим, че има нов файл, helpers.php. 894 00:41:27,106 --> 00:41:28,610 Ще видим какво е в момента, в който. 895 00:41:28,610 --> 00:41:30,930 Нека се върнем към индекс, тъй като входна точка, както и преди. 896 00:41:30,930 --> 00:41:35,230 >> И сега забележи съм изискваща helpers.php не, горен или долен колонтитул. 897 00:41:35,230 --> 00:41:41,720 Но помощници е нещо като helpers.c и helpers.h от PSET 2 898 00:41:41,720 --> 00:41:46,150 или PSET 3 отдавна, когато всъщност се търси и намира за това PSET, 899 00:41:46,150 --> 00:41:50,950 и сте имали всички на вашия код за сортиране и търсене в отделен файл. 900 00:41:50,950 --> 00:41:52,510 Това е, което се случва тук. 901 00:41:52,510 --> 00:41:54,390 >> И сега, ред 3 изглежда малко по-различна. 902 00:41:54,390 --> 00:41:55,920 И това е само един ред. 903 00:41:55,920 --> 00:41:57,950 За да направите това дори по- ясно, можех просто 904 00:41:57,950 --> 00:42:01,820 се това да бъде стилистично съответствие с всичко друго, което съм направил. 905 00:42:01,820 --> 00:42:04,130 Но това не е наистина промяна на функционалност. 906 00:42:04,130 --> 00:42:05,880 Това е само една линия на недвижими код. 907 00:42:05,880 --> 00:42:09,010 >> Очевидно е, че има една функция някъде наречен направи удар с глава, 908 00:42:09,010 --> 00:42:11,420 и това е мястото, където нещата получите доста мощен. 909 00:42:11,420 --> 00:42:17,040 Забележете, че в рамките на своите скоби е какво друго парче синтаксис? 910 00:42:17,040 --> 00:42:19,780 911 00:42:19,780 --> 00:42:23,350 Това е може би малко по-трудно да се каже, но забележите there's-- Ще сложа малко бяло 912 00:42:23,350 --> 00:42:24,300 пространство. 913 00:42:24,300 --> 00:42:25,530 Има квадратни скоби. 914 00:42:25,530 --> 00:42:29,700 >> И квадратни скоби, които видяхме преди малко в контекста на асоциативни масиви 915 00:42:29,700 --> 00:42:31,580 които, отново, като хеш таблици. 916 00:42:31,580 --> 00:42:36,230 И ако мислите, че сега, за да С, За аргументи в функция 917 00:42:36,230 --> 00:42:37,570 винаги трябва да бъдат еднакви. 918 00:42:37,570 --> 00:42:41,146 Трябва да се помни какво, поръчате is-- X, Y, Z или Z, Y, x-- 919 00:42:41,146 --> 00:42:44,020 и вие винаги трябва да им се осигури в същия ред или да ги гледам 920 00:42:44,020 --> 00:42:45,100 ако сте забравили. 921 00:42:45,100 --> 00:42:51,140 >> Но това изглежда е един умен начин на полагане на стойност произволен клавиш 922 00:42:51,140 --> 00:42:55,840 двойки, при което заглавието е името на аргумент в този случай 923 00:42:55,840 --> 00:42:58,334 и CS50 е неговата стойност. 924 00:42:58,334 --> 00:43:00,250 А фактът, че имам тези квадратни скоби 925 00:43:00,250 --> 00:43:02,560 тук означава, че можех да премине в нещо 926 00:43:02,560 --> 00:43:07,550 като седмица е 1 или 0 или 2 или 3. 927 00:43:07,550 --> 00:43:10,550 Така че ние сме параметризирано тази функция по такъв начин, 928 00:43:10,550 --> 00:43:15,180 че това може да отнеме много входове, но за сега това е само един. 929 00:43:15,180 --> 00:43:20,060 >> Ако аз сега отида в helpers.php, забележите това, което прави. 930 00:43:20,060 --> 00:43:22,030 Това е малко по- на нова функционалност, 931 00:43:22,030 --> 00:43:24,190 но за сега просто да на вяра, че това е 932 00:43:24,190 --> 00:43:26,570 синтаксиса, с която дефинира функция в PHP. 933 00:43:26,570 --> 00:43:27,840 Можете буквално да кажа функция. 934 00:43:27,840 --> 00:43:30,090 Вие не уточняват връщане пишете, и това е в съответствие 935 00:43:30,090 --> 00:43:33,880 с променлива детайл по-рано където наистина не силно пишете. 936 00:43:33,880 --> 00:43:35,650 >> Това просто уточнява, че по подразбиране това 937 00:43:35,650 --> 00:43:37,460 отнема асоциативен масив като аргумент. 938 00:43:37,460 --> 00:43:38,210 И знаеш ли какво? 939 00:43:38,210 --> 00:43:41,450 Ако потребителят не минава един в, да предположим, стойност по подразбиране. 940 00:43:41,450 --> 00:43:44,680 >> Това е функция, която C не трябва за нас, което е хубаво, защото сега 941 00:43:44,680 --> 00:43:46,430 данни, дори ако не го даде нещо, 942 00:43:46,430 --> 00:43:49,300 ще бъде масив, но празна. 943 00:43:49,300 --> 00:43:51,860 И като настрана, екстракт просто прави нещо фънки 944 00:43:51,860 --> 00:43:56,380 където е необходимо всички ключове от този асоциативен масив, всички неща, 945 00:43:56,380 --> 00:43:59,950 бихте могли да поставите в квадратни скоби, и създава променливи от тях 946 00:43:59,950 --> 00:44:06,270 така че в крайна сметка можем да имаме достъп за тях в footet.php и header.php. 947 00:44:06,270 --> 00:44:08,950 Това е малко абстрактно, така че нека да се отбележи това. 948 00:44:08,950 --> 00:44:12,990 >> В index.php, забележите, че аз съм преминаване в ключов стойност чифт заглавие 949 00:44:12,990 --> 00:44:14,850 на стойност CS50. 950 00:44:14,850 --> 00:44:18,660 Ако сега погледнете helpers.php, забележите, че RenderHeader 951 00:44:18,660 --> 00:44:23,870 е извличане на тези данни, че аз съм минаваща , а след това се изисква header.php. 952 00:44:23,870 --> 00:44:27,970 Това, което съм направил е нещо лошо на човека изпълнение сега на следното. 953 00:44:27,970 --> 00:44:31,720 >> Ако се отвори header.php, известие, че съм вече не трудно 954 00:44:31,720 --> 00:44:34,890 кодирана думата CS50 в заглавния файл. 955 00:44:34,890 --> 00:44:39,310 Вложил съм това наистина отвратително име функция, HTML специални символи, 956 00:44:39,310 --> 00:44:40,170 там. 957 00:44:40,170 --> 00:44:41,640 Но забележете какво съм направил. 958 00:44:41,640 --> 00:44:44,240 Имам отворен HTML. 959 00:44:44,240 --> 00:44:47,420 Тогава имам отворена глава и отворени заглавие. 960 00:44:47,420 --> 00:44:52,380 >> И тогава вътре на отворена и на заглавието Затвори таговете, имам малко PHP код. 961 00:44:52,380 --> 00:44:56,670 И това е хубаво, но на синтаксиса, което просто означава, ехо навън. 962 00:44:56,670 --> 00:44:59,840 Това буквално означава this-- ехо following-- 963 00:44:59,840 --> 00:45:01,910 но това е по-секси, за да пиша. 964 00:45:01,910 --> 00:45:05,000 Ехо от титлата който е бил приет вътре. 965 00:45:05,000 --> 00:45:07,560 >> Но какво мислите HTML специален знак е за всички, 966 00:45:07,560 --> 00:45:10,590 особено ако имате някои преди HTML опит? 967 00:45:10,590 --> 00:45:14,050 Какви знаци могат да бъдат Опасно е да премине, за да страница 968 00:45:14,050 --> 00:45:17,980 къде сте динамично генериране уеб страница с код като този? 969 00:45:17,980 --> 00:45:21,370 970 00:45:21,370 --> 00:45:24,650 Позволете ми да отидете на този файл, версия две, и да видим, ако не може да предизвика това. 971 00:45:24,650 --> 00:45:26,210 >> Версия две е това. 972 00:45:26,210 --> 00:45:28,510 И забележи всичко е добре, работи добре. 973 00:45:28,510 --> 00:45:35,280 Но предполагам, че отивам в index.php и I е посочено, че заглавието на страницата си 974 00:45:35,280 --> 00:45:36,630 не е CS50. 975 00:45:36,630 --> 00:45:44,930 Това е сигнал, отворена скоба скрипт Здравей, свят, в близост апостроф, 976 00:45:44,930 --> 00:45:49,740 близо скоби, точка и запетая, отворена скоба, наклонена черта скрипт. 977 00:45:49,740 --> 00:45:51,897 >> Script, като ние ще в крайна сметка виждате, е етикет 978 00:45:51,897 --> 00:45:54,480 които можете да използвате, за да се използва от друг език за програмиране, наречен 979 00:45:54,480 --> 00:45:56,330 JavaScript във вътрешността на дадена уеб страница. 980 00:45:56,330 --> 00:45:57,960 И сега забележи логиката тук. 981 00:45:57,960 --> 00:45:59,840 Тук е ключов нарича заглавие. 982 00:45:59,840 --> 00:46:02,690 Ето това е луд дълго стойност сега. 983 00:46:02,690 --> 00:46:07,840 >> Но ако отида на помощници page- или по-скоро, на страницата на хедър, 984 00:46:07,840 --> 00:46:11,310 Обаждам се на тази функция на тази титла на първо място. 985 00:46:11,310 --> 00:46:15,250 Така че, ако сега аз презаредите тази страница, I виж това, което изглежда абсурдно, 986 00:46:15,250 --> 00:46:16,110 но това е безопасно. 987 00:46:16,110 --> 00:46:17,310 Той просто изглежда глупаво. 988 00:46:17,310 --> 00:46:20,320 >> Но вместо да предполагам Бях забравил това. 989 00:46:20,320 --> 00:46:24,660 И помнете ми думата, ненулев брой вие ще забравите да направите това 990 00:46:24,660 --> 00:46:27,790 и вие ще получите някои трудолюбив студент или приятел, идва 991 00:46:27,790 --> 00:46:31,540 за вас по време на панаира CS50 или анонимно през нощта изпълзяват около на вашия сайт 992 00:46:31,540 --> 00:46:35,300 и по същество инжектиране код без знанието на вас на вашия сайт 993 00:46:35,300 --> 00:46:35,800 по някакъв начин. 994 00:46:35,800 --> 00:46:39,000 >> Защото, ако аз просто плюе Титла тук и титла 995 00:46:39,000 --> 00:46:44,330 there-- добре, ако заглавието буквално прилича това и PHP 996 00:46:44,330 --> 00:46:47,660 като език, който може да плюе на други езици, текст, 997 00:46:47,660 --> 00:46:50,650 това е буквално ще да се замени с този етикет, 998 00:46:50,650 --> 00:46:53,010 Разбира се, това, което сложих на друго място. 999 00:46:53,010 --> 00:46:57,640 >> Така че, ако сега отидете тук и да се презареди след отменяйки тези механизми за безопасност, 1000 00:46:57,640 --> 00:46:59,982 сега имам здравей свят тук. 1001 00:46:59,982 --> 00:47:02,690 Сега това не е всичко, че голяма от се справят, но бихте могли да направите нещо 1002 00:47:02,690 --> 00:47:05,119 малко по-злонамерен тук, като има 1003 00:47:05,119 --> 00:47:08,410 други tags-- както ще видим след като ние прекарваме повече време в JavaScript-- като място 1004 00:47:08,410 --> 00:47:14,910 точка HREF получава, цитирам, край на цитата, HTTP business.com, но обратното на това 1005 00:47:14,910 --> 00:47:15,950 от онзи ден. 1006 00:47:15,950 --> 00:47:20,120 И сега може да предизвика уеб страница действително да отиде веднага 1007 00:47:20,120 --> 00:47:21,190 тази уеб страница тук. 1008 00:47:21,190 --> 00:47:23,000 >> И всъщност, аз не искам дори да отидете на business.com 1009 00:47:23,000 --> 00:47:24,749 защото аз не искам да знам какво е това. 1010 00:47:24,749 --> 00:47:28,710 Но това също ще доведе до код трябва да се инжектира в тази страница. 1011 00:47:28,710 --> 00:47:32,680 Така че това е само за да се каже, че въпреки че ние сме за въвеждане на супер рано някои 1012 00:47:32,680 --> 00:47:36,800 на тези по-сложни структури, всичко е към своя край като се уверите 1013 00:47:36,800 --> 00:47:39,320 че кодът не е приложимо. 1014 00:47:39,320 --> 00:47:40,960 >> Така че сега трета версия тук. 1015 00:47:40,960 --> 00:47:42,470 Става все по-малко красиви. 1016 00:47:42,470 --> 00:47:44,875 Аз наистина не like-- аналния ми страна 1017 00:47:44,875 --> 00:47:47,750 ставаше все по-малко ядосан от Факт е, че бях функция, наречена 1018 00:47:47,750 --> 00:47:51,940 RenderHeader и RenderFooter които са почти идентични. 1019 00:47:51,940 --> 00:47:55,400 Така ми хрумна, защо да не се направи I задаване на параметри на тези функции 1020 00:47:55,400 --> 00:47:59,180 в само една, наречена направи, го вземе втори аргумент 1021 00:47:59,180 --> 00:48:04,420 като името на шаблона, на финала да render-- или горен или долен колонтитул? 1022 00:48:04,420 --> 00:48:07,160 И след това е възможно, ако искам да премине в някои ключови двойки стойности 1023 00:48:07,160 --> 00:48:10,580 като правя за титлата за служебната информация, но не и за долната лента, 1024 00:48:10,580 --> 00:48:11,800 Бих могъл да направя това. 1025 00:48:11,800 --> 00:48:16,510 >> И така, сега, ако отида в helpers.php, това е малко по-сложен. 1026 00:48:16,510 --> 00:48:19,670 И аз ще размахва ръцете си в подробности, но това е само една функция. 1027 00:48:19,670 --> 00:48:21,890 Така че това е стъпка към по-добър дизайн. 1028 00:48:21,890 --> 00:48:23,360 >> Ние можем да използваме тази една стъпка по-нататък. 1029 00:48:23,360 --> 00:48:28,890 Ако отида в моя четвърти версия на това, забележете сега 1030 00:48:28,890 --> 00:48:31,320 че правя нещо още по-загадъчен вид. 1031 00:48:31,320 --> 00:48:33,230 И знам, че това е много да се абсорбира веднага, 1032 00:48:33,230 --> 00:48:35,080 но ние сме просто вид за почистване на нещата. 1033 00:48:35,080 --> 00:48:38,550 Сега аз съм като моите помощници файла в папка, наречена 1034 00:48:38,550 --> 00:48:41,190 includes-- просто произволно назове мястото, където искате да поставите неща 1035 00:48:41,190 --> 00:48:44,300 че искам да include-- и след това останалата част от това е същото. 1036 00:48:44,300 --> 00:48:47,140 >> Но ако погледнем сега в Gedit, известие, че съм намерила отърве 1037 00:48:47,140 --> 00:48:51,940 на всички тези други файлове и съм тях преместени, например, в тук. 1038 00:48:51,940 --> 00:48:55,110 И след това в шаблони, Аз имам този тук. 1039 00:48:55,110 --> 00:48:59,292 И така, това е всичко, сега на стъпка за използване на много по-добре шарка. 1040 00:48:59,292 --> 00:49:01,000 И ние сме много бързо ще се премести далеч 1041 00:49:01,000 --> 00:49:03,870 от функционалност подразбиране на PHP, което започнахме тук с, 1042 00:49:03,870 --> 00:49:07,655 където можете просто да смесвам PHP, и си HTML и CSS си, 1043 00:49:07,655 --> 00:49:09,780 а ти просто го изплюе и да отида за вашия начин. 1044 00:49:09,780 --> 00:49:11,404 Тя няма да бъде много може да се поддържа. 1045 00:49:11,404 --> 00:49:14,481 Точно както в C, ние започнахме да използваме множество файлове и множество функции 1046 00:49:14,481 --> 00:49:15,730 и факторинг неща, че от. 1047 00:49:15,730 --> 00:49:16,688 Ние ще направим същото тук. 1048 00:49:16,688 --> 00:49:19,970 И в действителност, в петия и финала версия тук, направих едно друго нещо. 1049 00:49:19,970 --> 00:49:23,710 Можете дори да използвате точка точка, която, отново, е просто директория. 1050 00:49:23,710 --> 00:49:28,260 За да бъде още по-голяма сигурност в съзнание, защото, ако аз гледам на слушането 1051 00:49:28,260 --> 00:49:32,450 тук за петата и последна версия, известие че имам една директория, наречена тук 1052 00:49:32,450 --> 00:49:35,180 обществени, а след това върху същото ниво, така да се каже, 1053 00:49:35,180 --> 00:49:38,490 Имам включва и шаблони и след това, че текстов файл Readme. 1054 00:49:38,490 --> 00:49:41,130 >> И причината съм структуриран харесва this-- и толкова много уеб 1055 00:49:41,130 --> 00:49:44,330 Силите, особено онези $ 5 месеца такива или $ десет месеца такива, 1056 00:49:44,330 --> 00:49:47,170 ако някога сте имали някое от тези services-- какво толкова много от тях 1057 00:49:47,170 --> 00:49:50,690 е, че те просто очаквам да зареже всичко на вашите файлове в една директория, 1058 00:49:50,690 --> 00:49:53,640 като ние вече направихме с този първи пример. 1059 00:49:53,640 --> 00:49:56,740 >> Но веднага след като се започне изграждането на по- сложни сайтове, които само се съхранява 1060 00:49:56,740 --> 00:50:00,480 данните, които се грижат за вас и файлове грижа за, всъщност организиране неща 1061 00:50:00,480 --> 00:50:05,060 правилно и с по-голяма сигурност съзнание в съзнанието може да 1062 00:50:05,060 --> 00:50:07,927 ние започваме да се защитава срещу всички приятели 1063 00:50:07,927 --> 00:50:10,135 че имате във или извън този клас, който, 1064 00:50:10,135 --> 00:50:12,510 веднага след като започнете да печелите програми за себе си в интернет, 1065 00:50:12,510 --> 00:50:15,140 ще започне бране върху вас и върху тях. 1066 00:50:15,140 --> 00:50:17,420 >> И така, ние ще разгледаме в крайна сметка в този дизайн. 1067 00:50:17,420 --> 00:50:20,010 Това е само една снимка която показва следното. 1068 00:50:20,010 --> 00:50:22,897 Отиваме да се сложи всичко на нашия програмиране логика в един или повече файлове, 1069 00:50:22,897 --> 00:50:25,230 и ние просто ще започне призовава тези контролери. 1070 00:50:25,230 --> 00:50:28,022 Това е мястото, където мозъците на нашите сайтове всъщност са. 1071 00:50:28,022 --> 00:50:29,730 След това ние ще имат изглед и изглед 1072 00:50:29,730 --> 00:50:32,480 са толкова прости, колкото просто отделен files-- наречените шаблони, често. 1073 00:50:32,480 --> 00:50:34,410 Те просто имат естетика на моята страница, 1074 00:50:34,410 --> 00:50:37,020 това, което искам на страницата, за да изглежда like-- цветовете и оформлението 1075 00:50:37,020 --> 00:50:38,870 и позициите на Всички променливи. 1076 00:50:38,870 --> 00:50:41,120 >> И тогава по-интересно че ние в крайна сметка ще стигнем до 1077 00:50:41,120 --> 00:50:45,420 е модел, който ще бъде само думата ние шамар на други технологии 1078 00:50:45,420 --> 00:50:47,771 че ние носим в картина, като действителните бази данни, 1079 00:50:47,771 --> 00:50:49,520 така че, когато искате да запазите информацията, 1080 00:50:49,520 --> 00:50:52,140 не трябва само да изпратите имейл да си Proctor или за себе си, 1081 00:50:52,140 --> 00:50:57,350 всъщност я съхранява в база данни използване на друг език, известен като SQL. 1082 00:50:57,350 --> 00:51:00,450 И така, ние ще оставим тук днес и вземете с този в сряда 1083 00:51:00,450 --> 00:51:02,990 и въвеждане на бази данни след това. 1084 00:51:02,990 --> 00:51:06,940 >> [За възпроизвеждане на музика] 1085 00:51:06,940 --> 00:54:24,555