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 >> Дэвид Дж Маланом: Ладно. 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 Мы собираемся использовать каскадное Стилей, или 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 Лента новостей, которые постоянно меняется, или мгновенные сообщения, которые появляются время от 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 >> СТУДЕНТ: Код. 31 00:01:28,685 --> 00:01:29,560 Дэвид Дж Маланом: Код. 32 00:01:29,560 --> 00:01:30,440 Хорошо. 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 Но-- это обязательство? 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 Дэвид Дж Маланом: Переменные. 41 00:01:43,760 --> 00:01:44,160 Да, конечно. 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 >> СТУДЕНТ: Печать. 47 00:01:56,570 --> 00:01:57,778 >> Дэвид Дж Маланом: Печать, не так ли? 48 00:01:57,778 --> 00:02:01,050 Печать, или Printf в Мир C. Таким образом, все это время, 49 00:02:01,050 --> 00:02:03,362 мы имели в нашей утилизация language-- C, 50 00:02:03,362 --> 00:02:05,570 в particular-- и даже Царапины на то пошло, что 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 >> СТУДЕНТ: Она должна быть собраны в машинный код. 71 00:03:02,940 --> 00:03:03,060 >> Дэвид Дж Маланом: ОК. 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. что CPU, как те сделаны Intel, 77 00:03:14,830 --> 00:03:16,110 на самом деле понять. 78 00:03:16,110 --> 00:03:19,690 >> Теперь, PHP и Python и Руби и 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 или Руби или любое количество другие языки означает. 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 Таким образом, "пользователь, бен, ENV, для окружающей среды, 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 >> Но ниже, на что я могу сейчас сделать что-то довольно просто, как Printf привет запятая 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 >> СТУДЕНТ: Chmod. 123 00:05:24,159 --> 00:05:26,700 Дэвид Дж Маланом: Да, CHMOD, для изменения режима файла. 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 >> И получается, что вы можете сделать это с много синтаксиса напоминает С. 135 00:05:55,690 --> 00:06:03,400 Отпусти меня в сегодняшней кода, которые я положил в моем каталоге с виртуальными хостами 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.c 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 это неотличимо так далеко от С. 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 >> СТУДЕНТ: Знак доллара н? 152 00:06:44,070 --> 00:06:44,944 >> Дэвид Дж Маланом: Да. 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 >> СТУДЕНТ: Readline. 161 00:07:01,630 --> 00:07:02,671 >> Дэвид Дж Маланом: Readline. 162 00:07:02,671 --> 00:07:06,550 Readline мы не видели, как таковой, в С, даже при том, что существует что-то 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 как я объясню в немного в моей виртуальный хост каталог и мой источник каталога, 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 >> Итак, позвольте мне увеличивать и делать CHMOD плюс х на условиях, точечных условиях косой. 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 такая же, как $ я для Printf. 188 00:08:30,920 --> 00:08:33,460 Так то это кубатуры, точка, точка, точка, в строке 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 >> СТУДЕНТ: [неразборчиво]. 198 00:08:57,900 --> 00:09:00,070 >> Дэвид Дж Маланом: Там нет прототип верх. 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 >> СТУДЕНТ: [неразборчиво]. 208 00:09:25,084 --> 00:09:27,750 Дэвид Дж Маланом: Мы не должны объявлять типы переменных, 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 >> СТУДЕНТ: Там нет библиотеки. 213 00:09:37,430 --> 00:09:38,630 >> Дэвид Дж Маланом: Там нет библиотеки. 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 >> СТУДЕНТ: Указатель. 221 00:09:47,960 --> 00:09:49,270 >> Дэвид Дж Маланом: Нет указателей. 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 >> СТУДЕНТ: Главная. 228 00:10:00,185 --> 00:10:01,060 Дэвид Дж Маланом: Главная. 229 00:10:01,060 --> 00:10:02,768 Так это было важная персона Я думал о. 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 >> Это портирование ПК версия правописания от 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 >> Так что это только сказать, что это довольно просто конвертировать Speller 254 00:11:10,140 --> 00:11:12,000 от С до 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, я 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 этот еще не все что отличается от C, 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 Одно-- и это 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 >> Дэвид Дж Маланом: ОК. 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 Что-то подобное экзистенциалист в С, по крайней мере, для символов, 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 или Realloc, вы должны освободить себя. 360 00:16:04,700 --> 00:16:08,770 Все, что вы открыть поток, вы должны 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 >> Так что может компромисс здесь движется, от С до 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 >> СТУДЕНТ: [неразборчиво] памяти. 373 00:16:36,064 --> 00:16:36,980 Дэвид Дж Маланом: Скорость. 374 00:16:36,980 --> 00:16:37,479 Хорошо. 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-- и позвольте мне идти вперед и работать Speller. 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 >> Так что, если я делаю Speller из тильды CS50 Pset 5 тексты, Король Джеймс, введите. 393 00:17:32,020 --> 00:17:39,700 394 00:17:39,700 --> 00:17:43,050 Он по-прежнему быстрее, чем письма это в C, но общее время 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 >> СТУДЕНТ: Сумма использования RAM. 406 00:18:10,340 --> 00:18:11,756 >> Дэвид Дж Маланом: Сумма использования 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 >> Итак, позвольте мне идти вперед и открыть несколько Примеры, которые я подготовил заранее. 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 как его называли, идя через двор к Wigglesworth, 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 Мы полностью спонтировал на идее делать что-либо с этим входом. 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 Дэвид, я проверю от пол Здесь, говорят, Мэтьюз здесь. 481 00:21:42,980 --> 00:21:43,800 Я не буду капитаном. 482 00:21:43,800 --> 00:21:45,410 Я собираюсь нажмите Регистрация. 483 00:21:45,410 --> 00:21:50,720 И обратите внимание, что URL имеет изменилась зарегистрироваться, 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 Это своего рода РНР из эквивалентно 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 >> СТУДЕНТ: Нет строка запроса 500 00:22:34,380 --> 00:22:35,220 >> Дэвид Дж Маланом: Там нет строки запроса. 501 00:22:35,220 --> 00:22:37,270 Там нет вопросительного знака что-то. 502 00:22:37,270 --> 00:22:40,050 Там нет вопросительного знака д равна кошек, как мы сделали в прошлый раз. 503 00:22:40,050 --> 00:22:42,170 И есть, конечно, нет Название вопросительный знак равно 504 00:22:42,170 --> 00:22:46,310 Дэвид или общежития равна Мэтьюз, так где то, что все происходит? 505 00:22:46,310 --> 00:22:51,290 >> Ну, позвольте мне вернуться к Gedit здесь и открыть первый из этих файлов 506 00:22:51,290 --> 00:22:57,020 на мой виртуальный хост, локальный хост, общественного каталог здесь и пойти в 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 Форма тег, действие которого атрибут имеет значение регистра 0. 513 00:23:16,290 --> 00:23:18,890 Вот почему, когда я представить это, он идет к этому файлу. 514 00:23:18,890 --> 00:23:20,620 Но метод отличается раз сегодня пост. 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 Get ставит его в 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 СТУДЕНТ: [неразборчиво] обеспечить. 525 00:23:46,350 --> 00:23:47,790 Дэвид Дж Маланом: Если вы хотите что-то, чтобы быть в безопасности. 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 не хочу, что окончание данных до в URL, а также. 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 на самом деле очень восторг. 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 Но я собираюсь идти вперед и введите в "Давида" сейчас. 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 Мы сделаем Мэтьюз. 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 и-- гм. 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 так же, как они в С. И я утверждаю, с этой кусок кода с комментарием 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 вернуться к этому месту, так что плоскодонки пользователю 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 >> Но все-таки немного в восторг. 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 >> Дэвид, установите переключатель, как это называется; Мэтьюз, не капитан. 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 Но когда я делаю Дэвид, мужчина, Мэтьюз, и зарегистрируйтесь, этот третий и окончательный вариант 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 Джон Harvard-- следующим text-- "Этот человек только что зарегистрировался." 639 00:28:55,960 --> 00:29:00,560 Имя Давид, капитан пусто; пол, мужчина; и общежития, Мэтьюз. 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 и я просто понял, что путем прибегая к помощи или обратиться в службу поддержки. 672 00:30:31,650 --> 00:30:34,640 А потом из-за Гарвардского использует некоторые Система безопасности на почтовом 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 вот почему письмо, которое я отправлено посмотрел, как это было. 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 >> Один из них, это точно, как если вы строите некоторые веб-сайт для окончательного проекта 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 Но, как вы, возможно, видели или читать в Crimson, 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 Мы вернемся к печенья в другой раз, 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 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 Это также минимизирован так что компьютер может 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 И если в самом деле, если я открыть 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 Это просто жестко неделе один здесь, чтобы неделю один м и недели один ж, 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 Эти файлы почти не изменит, и все же я вытащил одну из этих копий / рабочих мест пасты 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 >> СТУДЕНТ: [неразборчиво]. 858 00:39:46,110 --> 00:39:47,660 >> Дэвид Дж Маланом: с 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 >> СТУДЕНТ: 12 и 13. 867 00:40:06,315 --> 00:40:07,190 Дэвид Дж Маланом: Да. 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 И так нужно, это вроде как фунт включают в С. копий и паст 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 и Я уточнил, что название моей странице 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 >> Сценарий, как мы будем в конце концов увидеть, является тег 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 >> Но если я иду в помощники страница- или, скорее, на странице заголовок, 984 00:46:07,840 --> 00:46:11,310 Я звоню этой функции на этот титул первой. 985 00:46:11,310 --> 00:46:15,250 Так что, если я сейчас перезагрузить эту страницу, я убедиться в этом, который выглядит смешно, 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 Так что мне пришло в голову, почему не Я параметризации этих функций 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 что я хочу, чтобы включать: а затем Остальные это то же самое. 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 У меня включает и шаблонов а затем, что текстовый файл ридми. 1054 00:49:38,490 --> 00:49:41,130 >> И причина я структурирована это нравится this-- и так много веб 1055 00:49:41,130 --> 00:49:44,330 Хозяева, особенно те, $ 5 месяц те или $ 10 в месяц те, 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 Вы не просто отправить по электронной почте на ваш сопровождающий или для себя, 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