1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Неделя 8, продолжение] 2 00:00:02,000 --> 00:00:04,000 [David J. Малан] [Harvard University] 3 00:00:04,000 --> 00:00:08,000 [Это CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:13,000 >> Это CS50, так это к концу недели 8 здесь. 5 00:00:13,000 --> 00:00:16,000 Мы, конечно, было немного урагана ранее на этой неделе, 6 00:00:16,000 --> 00:00:19,000 поэтому сейчас это действительно только ты и я в этом лекционный зал, 7 00:00:19,000 --> 00:00:22,000 Но сегодня мы продолжаем наш разговор о PHP 8 00:00:22,000 --> 00:00:25,000 и о веб-программировании в целом, и мы также ввести понятие 9 00:00:25,000 --> 00:00:29,000 базы данных, в частности, одна называется MySQL, которая является довольно популярным в эти дни, 10 00:00:29,000 --> 00:00:34,000 В значительной мере благодаря ее масштабируемости, а также потому, что его быть свободным и открытым исходным кодом. 11 00:00:34,000 --> 00:00:37,000 >> Но сначала посмотрим на котором мы остановились в прошлый раз. 12 00:00:37,000 --> 00:00:40,000 Напомним, что мы искали в нескольких Frosh примеры мгновенные сообщения, 13 00:00:40,000 --> 00:00:44,000 и это была отвратительная форма, которая мне пришла в голову еще 15 лет назад + 14 00:00:44,000 --> 00:00:49,000 для того, чтобы иметь студентов на территории кампуса регистр для первокурсников очной спортивных 15 00:00:49,000 --> 00:00:52,000 , фактически не имея к походу больше через двор к Wigglesworth 16 00:00:52,000 --> 00:00:56,000 скользить физической бумагу под дверь некоторых Проктора. 17 00:00:56,000 --> 00:00:59,000 Вместо этого мы переехали все в Интернете, но для этого мы должны использовать 18 00:00:59,000 --> 00:01:03,000 несколько технологий, так что, нам нужно HTML, язык гипертекстовой разметки, 19 00:01:03,000 --> 00:01:07,000 что опять же это язык разметки, с которой вы делаете веб-страниц структурно. 20 00:01:07,000 --> 00:01:10,000 >> Используя немного CSS в эти дни, каскадные таблицы стилей, 21 00:01:10,000 --> 00:01:16,000 которым мы пользуемся стилизации веб-страницы, используя несколько иной синтаксис, 22 00:01:16,000 --> 00:01:19,000 в то время как HTML было все, о структуре их. 23 00:01:19,000 --> 00:01:21,000 Нам также необходимо ввести языка веб-программирования. 24 00:01:21,000 --> 00:01:25,000 В этом случае, мы будем использовать PHP, и PHP будет позволить нам 25 00:01:25,000 --> 00:01:28,000 для динамического вывода контента, а также делать программные вещи, как 26 00:01:28,000 --> 00:01:33,000 отправка электронной почты, как это было на ноте мы уехали на прошлой неделе. 27 00:01:33,000 --> 00:01:35,000 >> Напомним, что код этого была в 2-х частях. 28 00:01:35,000 --> 00:01:38,000 Один из них, мы должны были froshims3.php, 29 00:01:38,000 --> 00:01:42,000 и это было в значительной степени разметки HTML с формой внутри него, 30 00:01:42,000 --> 00:01:45,000 чуть-чуть CSS здесь, в атрибуты стиля 31 00:01:45,000 --> 00:01:48,000 так что сама форма будет по центру страницы, но помимо этого 32 00:01:48,000 --> 00:01:51,000 у нас были некоторые представителем входа форме, в текстовое поле, флажок, 33 00:01:51,000 --> 00:01:55,000 некоторые радио-кнопки, выберите меню, и кнопка отправки. 34 00:01:55,000 --> 00:02:01,000 И через эту форму, мы представили в файл, который был по-видимому называли register3.php, 35 00:02:01,000 --> 00:02:04,000 что само по себе выглядело немного что-то вроде этого. 36 00:02:04,000 --> 00:02:08,000 Теперь, большая часть кода в register3.php, напомним, было все об электронной почте. 37 00:02:08,000 --> 00:02:11,000 Он сделал немного проверку виде, который был представлен, чтобы убедиться, 38 00:02:11,000 --> 00:02:14,000 , что поля были на самом деле при условии, что ожидалось. 39 00:02:14,000 --> 00:02:18,000 Тогда мы называли некоторые функции с использованием PHP немного нового синтаксиса, 40 00:02:18,000 --> 00:02:20,000 даже если он заимствован из C. 41 00:02:20,000 --> 00:02:24,000 >> Эта стрелка оператора позволяет нам использовать то, что называется объектно-ориентированного программирования. 42 00:02:24,000 --> 00:02:27,000 Мы не будем вдаваться в том, что в любой детали, но знаю теперь 43 00:02:27,000 --> 00:02:31,000 это способ иметь функции, связанные с объектами, 44 00:02:31,000 --> 00:02:34,000 которые представляют собой особый тип строения, как мы видели в C. 45 00:02:34,000 --> 00:02:37,000 Но сейчас, просто принять на веру, что это правильный синтаксис для использования 46 00:02:37,000 --> 00:02:41,000 При использовании библиотеки как эта библиотека PHPMailer. 47 00:02:41,000 --> 00:02:44,000 И тогда к концу этого файла мы динамически генерируемых электронной почте 48 00:02:44,000 --> 00:02:47,000 , что послали на мой счет jharvard@cs50.net 49 00:02:47,000 --> 00:02:50,000 от моего jharvard@cs50.net счета, 50 00:02:50,000 --> 00:02:54,000 и мы проинформировали пользователей соответственно, что они были зарегистрированы для этого вида спорта. 51 00:02:54,000 --> 00:02:57,000 Это в значительной степени то, что сайт Frosh чаты сделал много лет назад 52 00:02:57,000 --> 00:03:00,000 Когда я реализовал ее, правда, на другом языке, 53 00:03:00,000 --> 00:03:02,000 но он показывает вам, возможно, власть, которая у вас есть 54 00:03:02,000 --> 00:03:05,000 Теперь, когда вы можете выразить себя не только программными 55 00:03:05,000 --> 00:03:08,000 на низком уровне в языке, как C, но на гораздо более высоком уровне 56 00:03:08,000 --> 00:03:11,000 с этим очень реальный мир приложений, как электронная почта на самом деле решить 57 00:03:11,000 --> 00:03:13,000 некоторые реальные проблемы мира. 58 00:03:13,000 --> 00:03:16,000 >> Сейчас, конечно, хотя я использую этот скрипт для создания некоторых 59 00:03:16,000 --> 00:03:20,000 сообщения электронной почты динамически из jharvard@cs50.net, которая действительно счету 60 00:03:20,000 --> 00:03:23,000 что у меня есть доступ к, не быть достаточно осторожным, чтобы отправить 61 00:03:23,000 --> 00:03:26,000 почты только со счетов, что на самом деле свой собственный, 62 00:03:26,000 --> 00:03:30,000 чтобы вещи вам в небольшом количестве горячей воды в жизни. 63 00:03:30,000 --> 00:03:35,000 С учетом сказанного, давайте теперь переход к решению другой проблемы в целом, 64 00:03:35,000 --> 00:03:37,000 что сохранения государства. 65 00:03:37,000 --> 00:03:39,000 Итак, что же это на самом деле означает? 66 00:03:39,000 --> 00:03:42,000 HTTP, этот протокол передачи гипертекста, 67 00:03:42,000 --> 00:03:45,000 на самом деле без протокола, и что это означает, что 68 00:03:45,000 --> 00:03:48,000 когда вы тянете что-то вроде Google.com а затем нажмите ввод 69 00:03:48,000 --> 00:03:51,000 Обычно ваш браузер имеет какой-то вращающийся значок, который затем 70 00:03:51,000 --> 00:03:54,000 Результаты в некоторых веб-страницы загружаются, 71 00:03:54,000 --> 00:03:57,000 а затем, что маленький значок прекращает вращаться, и что на самом деле предлагает 72 00:03:57,000 --> 00:04:02,000 , что HTTP завершил какой-то соединение с сервером, вот и все. 73 00:04:02,000 --> 00:04:05,000 HTTP является лицом без гражданства, в том смысле, что оно не поддерживают 74 00:04:05,000 --> 00:04:08,000 постоянное подключение к серверу в том же Skype случае не 75 00:04:08,000 --> 00:04:11,000 или Gchat делает, потому что с HTTP 76 00:04:11,000 --> 00:04:15,000 Предполагается, что, как только вы взяли веб-страницу, вот и все. 77 00:04:15,000 --> 00:04:18,000 >> Сейчас, на самом деле в эти дни на таких сайтах, как Facebook и Google Maps 78 00:04:18,000 --> 00:04:21,000 и Twitter, и как там много больший динамизм которой 79 00:04:21,000 --> 00:04:25,000 даже после этого значка останавливает вращение, может на самом деле получить больше обновлений 80 00:04:25,000 --> 00:04:29,000 от сервера, больше твитов, больше обновлений статусов на Facebook и тому подобное. 81 00:04:29,000 --> 00:04:33,000 Но даже это, используя технику, что мы будем говорить в неделю или две 82 00:04:33,000 --> 00:04:36,000 известный как Ajax с использованием языка JavaScript называется, 83 00:04:36,000 --> 00:04:38,000 но в конце дня, HTTP-прежнему без гражданства. 84 00:04:38,000 --> 00:04:42,000 И все же, если вы хотите, чтобы как-то помню вещи о пользователе 85 00:04:42,000 --> 00:04:44,000 даже после того как они отключены от сервера 86 00:04:44,000 --> 00:04:47,000 PHP делает позволить вам средство этом 87 00:04:47,000 --> 00:04:52,000 поскольку, как мы видели в последний раз, PHP имеет ряд суперглобальных, 88 00:04:52,000 --> 00:04:55,000 и суперглобальная, опять же, специальные глобальные переменные 89 00:04:55,000 --> 00:04:59,000 который передал вам веб-сервером и PHP себя. 90 00:04:59,000 --> 00:05:02,000 >> Вы не должны ничего делать, чтобы положить значения в нем, 91 00:05:02,000 --> 00:05:05,000 и среди суперглобальных мы видели до настоящего времени, получать и отправлять, 92 00:05:05,000 --> 00:05:08,000 который является, где поля формы ставятся автоматически для вас, 93 00:05:08,000 --> 00:05:11,000 , а также несколько других, которые мы еще не видели. 94 00:05:11,000 --> 00:05:17,000 Внутри $ _SERVER некоторые специальные переменные, связанные с самим сервером. 95 00:05:17,000 --> 00:05:22,000 Что такое IP-адрес, что протокол, HTTP или HTTPS вы используете, 96 00:05:22,000 --> 00:05:25,000 что метод запроса вы используете и т.п., так что некоторые интересные, 97 00:05:25,000 --> 00:05:29,000 пикантные подробности о сервере, а на самом деле, пользователь в там же. 98 00:05:29,000 --> 00:05:33,000 Там в $ _COOKIE, который является, где эти вещи называются куки хранятся. 99 00:05:33,000 --> 00:05:36,000 Мы не будем тратить время на печенье себя сегодня, 100 00:05:36,000 --> 00:05:40,000 но знаю теперь, что печенье является лишь небольшой фрагмент информации 101 00:05:40,000 --> 00:05:43,000 , что веб-сервер могут посадить на веб-браузере 102 00:05:43,000 --> 00:05:46,000 и в свою очередь ее память или жесткий диск своего компьютера 103 00:05:46,000 --> 00:05:49,000 для хранения информации о пользователе, например, свое имя пользователя 104 00:05:49,000 --> 00:05:52,000 так, чтобы они не придется вводить его каждый раз, когда они войти в систему или некоторых 105 00:05:52,000 --> 00:05:55,000 Уникальный номер или идентификатор для этого пользователя 106 00:05:55,000 --> 00:05:58,000 так что вам не придется приставать к ним с тем же виды вопросов о 107 00:05:58,000 --> 00:06:00,000 предпочтения в будущем, но большинство из интереса 108 00:06:00,000 --> 00:06:02,000 Прямо сейчас составляет $ _SESSION. 109 00:06:02,000 --> 00:06:07,000 >> Это суперглобальная, который, как и другие, передают вам автоматически PHP 110 00:06:07,000 --> 00:06:10,000 когда вы пишете PHP-сайтов на основе 111 00:06:10,000 --> 00:06:13,000 можно хранить все, что угодно, строки, числа, 112 00:06:13,000 --> 00:06:16,000 плавающей точкой, значения, массивы, объекты, 113 00:06:16,000 --> 00:06:20,000 на самом деле все, что вы хотите, и это позволяет сохранить его таким образом, 114 00:06:20,000 --> 00:06:23,000 что даже если пользователь посещает вас то и дело 115 00:06:23,000 --> 00:06:26,000 возвращается минутах от теперь и в 5 минутах от теперь, потому что 116 00:06:26,000 --> 00:06:28,000 они принимают их время, прежде чем нажать некоторые другие ссылки 117 00:06:28,000 --> 00:06:32,000 PHP будет гарантировать, что все, что вы положите в этой сессии суперглобальная 118 00:06:32,000 --> 00:06:37,000 минуты или 5 минут назад все еще будет там, когда возвращается пользователю. 119 00:06:37,000 --> 00:06:40,000 А под капотом этого суперглобальная осуществляется путем 120 00:06:40,000 --> 00:06:44,000 те вещи, называемые куки, но сейчас это просто абстракция 121 00:06:44,000 --> 00:06:47,000 которым это своего рода программный эквивалент корзине. 122 00:06:47,000 --> 00:06:50,000 Что бы вы, программист, положить в том, что 123 00:06:50,000 --> 00:06:53,000 суперглобальная ассоциативный массив будет там некоторое количество минут позже 124 00:06:53,000 --> 00:06:59,000 до тех пор пока вы его не удалите или пока пользователь не выйдет своего браузера в целом. 125 00:06:59,000 --> 00:07:02,000 >> Давайте посмотрим на примере, как эта вещь действительно используются. 126 00:07:02,000 --> 00:07:07,000 В counter.php среди части сегодняшнего код 127 00:07:07,000 --> 00:07:09,000 мы имеем следующую строку. 128 00:07:09,000 --> 00:07:13,000 В начале этого файла у нас есть куча синих комментарии, которые неинтересны сейчас. 129 00:07:13,000 --> 00:07:15,000 Но в строке 13 у нас есть новая линия, 130 00:07:15,000 --> 00:07:18,000 session_start, и что на самом деле делает именно то, что он говорит. 131 00:07:18,000 --> 00:07:20,000 Она начинается сессий. 132 00:07:20,000 --> 00:07:25,000 Это позволяет использовать это большая суперглобальная $ _SESSION, и это так просто. 133 00:07:25,000 --> 00:07:30,000 Теперь, если мы исходим, чтобы посмотреть на линию 16, давайте попробуем выяснить, что эта веб-страница будет делать. 134 00:07:30,000 --> 00:07:35,000 Если (Исеть ($ _SESSION ["счетчик"]), а затем пойти дальше 135 00:07:35,000 --> 00:07:39,000 и хранить в переменной счетчика, строчные счетчика, 136 00:07:39,000 --> 00:07:42,000 $ _SESSION ["Счетчик"]. 137 00:07:42,000 --> 00:07:45,000 Это, кажется, объявления локальных переменных называется счетчиком 138 00:07:45,000 --> 00:07:48,000 внутри которых он надевает копию того, что находится внутри суперглобальная 139 00:07:48,000 --> 00:07:52,000 называется сессии в положение "счетчик". 140 00:07:52,000 --> 00:07:56,000 В противном случае, по-видимому, эта маленькая локальная переменная счетчика, устанавливается на 0. 141 00:07:56,000 --> 00:08:01,000 >> Но потом через несколько строк в 26 Обратите внимание, что копия сессии счетчика, 142 00:08:01,000 --> 00:08:06,000 ее ключом, имеет новый присвоено значение, который является его текущее значение плюс 1. 143 00:08:06,000 --> 00:08:09,000 Короче говоря, этот файл выглядит как обновление 144 00:08:09,000 --> 00:08:13,000 Счетчик, который хранится внутри сессии суперглобальная 145 00:08:13,000 --> 00:08:16,000 , увеличивая его на 1, но он сначала сохраняет копию предыдущего значения 146 00:08:16,000 --> 00:08:20,000 , сохраняя его в локальной переменной с именем $ счетчика, 147 00:08:20,000 --> 00:08:22,000 , а затем сюда давайте посмотрим, что осталось. 148 00:08:22,000 --> 00:08:24,000 Оказывается, это в значительной степени только HTML. 149 00:08:24,000 --> 00:08:29,000 В нижней части этой страницы мы видим в строке 37, которые я посетил этот сайт 150 00:08:29,000 --> 00:08:33,000 Счетчик количество раз, так что есть несколько интересных особенностей здесь. 151 00:08:33,000 --> 00:08:36,000 Один из них, это явно переменной, но это не достаточно просто положить 152 00:08:36,000 --> 00:08:39,000 $ Счетчика в теле вашего HTML, потому что, конечно, 153 00:08:39,000 --> 00:08:43,000 если это только там, среди ваших PHP HTML будет считать, что это просто HTML. 154 00:08:43,000 --> 00:08:48,000 Вы буквально хотят $ счетчиков, которые будут напечатаны на экране. 155 00:08:48,000 --> 00:08:51,000 >> Но вместо этого падения в режиме PHP 156 00:08:51,000 --> 00:08:55,000 с этой частью синтаксиса мы можем динамически вставить значение здесь 157 00:08:55,000 --> 00:08:58,000 Очень близки по духу к тому, что мы сделали в прошлый раз с 158 00:08:58,000 --> 00:09:00,000 вставка значения в строки. 159 00:09:00,000 --> 00:09:04,000 На самом деле, это просто сокращенное обозначение для сказав что-то вроде этого буквально, 160 00:09:04,000 --> 00:09:12,000 Печать ($ счетчика) или даже что-то вроде Е (% S, счетчик), 161 00:09:12,000 --> 00:09:14,000 или даже, как вы, возможно, видели в Интернете или в учебниках, 162 00:09:14,000 --> 00:09:17,000 есть функция в PHP называется эхо 163 00:09:17,000 --> 00:09:20,000 которая делает то же самое, и все это только больше наматывается способами 164 00:09:20,000 --> 00:09:25,000 сказать 00:09:28,000 В этом случае вам не нужно ставить 166 00:09:28,000 --> 00:09:30,000 Слово PHP после знака вопроса. 167 00:09:30,000 --> 00:09:34,000 Это сокращенное обозначение для, опять же, то, что мы только что видели минуту назад 168 00:09:34,000 --> 00:09:37,000 который эхом некоторое значение. 169 00:09:37,000 --> 00:09:39,000 >> Давайте посмотрим, что конечным результатом этого на самом деле. 170 00:09:39,000 --> 00:09:43,000 Позвольте мне перейти в наш файл counter.php, 171 00:09:43,000 --> 00:09:47,000 и мы увидим, что Дэвид просто ошибся, играя с код. 172 00:09:47,000 --> 00:09:50,000 Давайте исправление то, что он облажался, 173 00:09:50,000 --> 00:09:54,000 и ошибка вроде бы есть, нет, в строке 37. 174 00:09:54,000 --> 00:09:59,000 По началу страницы я посетил этот сайт 0 раз. 175 00:09:59,000 --> 00:10:02,000 Ну, давайте идти вперед сейчас, и в верхней части окна браузера нажмите на 176 00:10:02,000 --> 00:10:05,000 перезагрузить значок, и я нажимаю кнопку перезагрузки, 177 00:10:05,000 --> 00:10:12,000 и теперь я посетил сайт 1 раз, 2, 3, 4, 5, 6, 7, 8. 178 00:10:12,000 --> 00:10:16,000 И действительно, если мы посмотрим на исходный код этой страницы реальный исходный код меняется, 179 00:10:16,000 --> 00:10:19,000 и обратите внимание на полное отсутствие каких-либо PHP, и это потому, что 180 00:10:19,000 --> 00:10:23,000 PHP код оцениваются или интерпретировать стороне сервера, 181 00:10:23,000 --> 00:10:27,000 и так, что означает, что выход из сценариев PHP является то, что в конечном итоге направляется в браузер, 182 00:10:27,000 --> 00:10:31,000 который в данном случае является некоторым сырья HTML и некоторых сырой текст. 183 00:10:31,000 --> 00:10:33,000 Что здесь происходит? 184 00:10:33,000 --> 00:10:37,000 >> Ну, с относительно небольшим количеством строк кода, я могу хранить 185 00:10:37,000 --> 00:10:40,000 постоянно в течение нескольких секунд, или если мы достаточно долго ждали, 186 00:10:40,000 --> 00:10:44,000 минут, даже часов, некоторые значения таким образом, что делает HTTP 187 00:10:44,000 --> 00:10:47,000 кажется состоянием, как если бы мы сохранили 188 00:10:47,000 --> 00:10:51,000 это соединение с сервером, и это просто помню, что я говорил в прошлый раз, 189 00:10:51,000 --> 00:10:55,000 но на самом деле есть целая куча сложности происходит под капотом 190 00:10:55,000 --> 00:10:59,000 с участием печенье которая позволяет PHP, чтобы дать мне эту иллюзию 191 00:10:59,000 --> 00:11:02,000 этой корзине подобные функции. 192 00:11:02,000 --> 00:11:05,000 На данный момент тривиальный пример, где мы просто хранить целое число, 193 00:11:05,000 --> 00:11:08,000 но эта функция вернется к иметь большое значение 194 00:11:08,000 --> 00:11:10,000 Когда мы начинаем говорить о более сложных проектов, 195 00:11:10,000 --> 00:11:12,000 Среди них задачу, поставленную 7. 196 00:11:12,000 --> 00:11:16,000 Это ваш самый последний вопрос, поставленный в CS50. 197 00:11:16,000 --> 00:11:19,000 Я знаю, это так печально, но то, что вы найдете то, что мы собираемся заключить 198 00:11:19,000 --> 00:11:22,000 эта часть семестра на самом деле переход 199 00:11:22,000 --> 00:11:25,000 Из контекста C, конечно, в контексте PHP 200 00:11:25,000 --> 00:11:27,000 но при использовании некоторых из той же основы 201 00:11:27,000 --> 00:11:29,000 Мы говорили в течение некоторого времени. 202 00:11:29,000 --> 00:11:33,000 >> Цель с PSET 7 является осуществление CS50 финансов, 203 00:11:33,000 --> 00:11:37,000 который является вашей собственной версии Yahoo Finance и Google Finance 204 00:11:37,000 --> 00:11:40,000 или даже Etrade.com, в котором вы имеете возможность 205 00:11:40,000 --> 00:11:43,000 посмотреть цены на акции для данного символа, но даже более того 206 00:11:43,000 --> 00:11:48,000 у вас есть возможность "купить" и "продать" акции 207 00:11:48,000 --> 00:11:51,000 , которые торгуются на различных биржах, потому как это главная страница 208 00:11:51,000 --> 00:11:55,000 Здесь предложения, которые действительно, в какой степени мы начали 209 00:11:55,000 --> 00:11:59,000 Проблема набора для вас, вы должны войти формы, которая спрашивает имя пользователя и пароль. 210 00:11:59,000 --> 00:12:03,000 Она имеет кнопку отправки, но после того, как мы в конечном счете видеть, 211 00:12:03,000 --> 00:12:06,000 ничего не происходит на самом деле под капотом еще и потому, что 212 00:12:06,000 --> 00:12:09,000 остается для вас, чтобы реализовать возможность регистрировать новых пользователей, 213 00:12:09,000 --> 00:12:12,000 Возможность купить акции, продать акции, 214 00:12:12,000 --> 00:12:14,000 на самом деле посмотреть текущие цены на акции. 215 00:12:14,000 --> 00:12:17,000 >> И действительно, это будет как реальный мир, как возможно потому, что мы сделали 216 00:12:17,000 --> 00:12:20,000 есть кусок кода, который позволит вам с одной функцией 217 00:12:20,000 --> 00:12:25,000 для запросов Yahoo Finance, которая чудесно делает доступным бесплатное данных 218 00:12:25,000 --> 00:12:31,000 для поиска цен на акции на основе символа акции или тикер, 219 00:12:31,000 --> 00:12:34,000 и вы получите обратно текущие цены на акции в день. 220 00:12:34,000 --> 00:12:37,000 Данные на самом деле вы видите в данном PSET будет 221 00:12:37,000 --> 00:12:40,000 О, как реальный мир, как он может получить, так что вы на самом деле взаимодействие 222 00:12:40,000 --> 00:12:43,000 с реальными запасами мир, реальные мировые цены, 223 00:12:43,000 --> 00:12:47,000 и мы будем видеть, сколько денег вы можете сделать, возможно, 224 00:12:47,000 --> 00:12:51,000 в течение следующих нескольких дней, играя с вашим собственным набором проблем. 225 00:12:51,000 --> 00:12:55,000 >> Но давайте сначала подготовить почву для, как проектировать то, что, конечно, более сложная 226 00:12:55,000 --> 00:12:59,000 чем counter.php, это сложнее, чем любой из Frosh примеры чаты до сих пор, 227 00:12:59,000 --> 00:13:02,000 и давайте попробуем ввести несколько парадигм здесь, которые позволяют нам 228 00:13:02,000 --> 00:13:06,000 как для PSET 7 и, может быть, для вашего проекта, если вы делаете что-то веб-основе 229 00:13:06,000 --> 00:13:11,000 чтобы сохранить ваш код хорошо организованы, чтобы держать себя в здравом уме, 230 00:13:11,000 --> 00:13:15,000 и сделать шаг в сторону сотрудничества, будь то в окончательном проекте CS50 в 231 00:13:15,000 --> 00:13:18,000 или за ее пределами, если вы будете продолжать программировать что-то в будущем. 232 00:13:18,000 --> 00:13:21,000 Там в эту общую парадигму дизайна 233 00:13:21,000 --> 00:13:24,000 в области информатики и в разработке программного обеспечения в целом 234 00:13:24,000 --> 00:13:27,000 известный как MVC, Model View Controller, 235 00:13:27,000 --> 00:13:30,000 и это глупо акроним, который описывает очень хорошая идея, 236 00:13:30,000 --> 00:13:34,000 которая является разделение различных аспектов программы, 237 00:13:34,000 --> 00:13:39,000 специально ведения отдельных логики или бизнес-логику сайта 238 00:13:39,000 --> 00:13:42,000 так что все, что включает в себя такие вещи, как 239 00:13:42,000 --> 00:13:45,000 Вызов функций и запросов к базам данных и т.п. 240 00:13:45,000 --> 00:13:48,000 происходит не среди ваших HTML 241 00:13:48,000 --> 00:13:51,000 а в отдельных файлах, и, действительно, есть такой один файл 242 00:13:51,000 --> 00:13:54,000 Обычно, что вы назвали контроллер 243 00:13:54,000 --> 00:13:56,000 что на самом деле мозги за операцию, и мы увидим, например, 244 00:13:56,000 --> 00:13:58,000 это в один момент. 245 00:13:58,000 --> 00:14:01,000 >> Там есть модель, которая программного кода 246 00:14:01,000 --> 00:14:05,000 , что делает разговаривал с базами данных, который разговаривает с Yahoo Finance и т.п., 247 00:14:05,000 --> 00:14:08,000 а там V в MVC, виды, 248 00:14:08,000 --> 00:14:11,000 Все вещи, которые связаны с эстетикой, файлы, которые на самом деле содержат 249 00:14:11,000 --> 00:14:14,000 ваши HTML, CSS, может быть, ваше и тому подобное. 250 00:14:14,000 --> 00:14:17,000 Идея здесь в том, как эта картина предполагает, что контроллер 251 00:14:17,000 --> 00:14:21,000 это файл, как мы скоро увидим, и как вы будете особенно видеть в PSET 7, 252 00:14:21,000 --> 00:14:24,000 что мир говорит с помощью своих веб-браузеров. 253 00:14:24,000 --> 00:14:27,000 Это файл, который будет побывал на интернет-общественности, 254 00:14:27,000 --> 00:14:30,000 но контроллер общается с потенциально модели, 255 00:14:30,000 --> 00:14:34,000 которая является одним или несколькими другими файлами, которые содержат код, связанный с данными, 256 00:14:34,000 --> 00:14:37,000 Код, связанных с базами данных и т.п., а потом разговаривает с 257 00:14:37,000 --> 00:14:40,000 Контроллер один или несколько других файлов, известных как взгляды, 258 00:14:40,000 --> 00:14:43,000 которые являются эстетика веб-страницы, шаблоны в духе, 259 00:14:43,000 --> 00:14:47,000 , что может занять некоторое данных в качестве входных данных, но в конце дня 260 00:14:47,000 --> 00:14:50,000 Только логика внутри целью должно быть оказание этих данных, 261 00:14:50,000 --> 00:14:53,000 итерации цикла и на самом деле плевать на некоторые 262 00:14:53,000 --> 00:14:56,000 HTML на основе их исполнением или даже что-то вроде PDF. 263 00:14:56,000 --> 00:14:59,000 >> Что приятно о MVC является то, что вы можете иметь различные взгляды 264 00:14:59,000 --> 00:15:02,000 в зависимости от типа устройства, в зависимости от типа файла формата, который вы на самом деле 265 00:15:02,000 --> 00:15:04,000 хотите показать пользователю. 266 00:15:04,000 --> 00:15:10,000 Давайте посмотрим на несколько более и более сложные и хорошо продуманные примеры 267 00:15:10,000 --> 00:15:13,000 , начиная с первой версии 0 здесь. 268 00:15:13,000 --> 00:15:16,000 Позвольте мне идти вперед и открывать в нашем каталоге MVC сегодня 269 00:15:16,000 --> 00:15:21,000 файл с именем index.php в каталоге: 0. 270 00:15:21,000 --> 00:15:26,000 Обратите внимание, это супер простой и очень восторг сайта 271 00:15:26,000 --> 00:15:29,000 это своего рода версия 0 из домашней страницы для CS50, 272 00:15:29,000 --> 00:15:32,000 и заметил, как у нас есть ссылка на лекции, у нас есть ссылка на учебный план, 273 00:15:32,000 --> 00:15:35,000 и если я перейдите по ссылке на уведомления лекции о том, что URL 274 00:15:35,000 --> 00:15:39,000 наверху будет меняться в lectures.php. 275 00:15:39,000 --> 00:15:44,000 Если бы я тогда следуйте по ссылке неделя 1 Обратите внимание, что URL изменений в week1.php. 276 00:15:44,000 --> 00:15:46,000 Там, кажется, довольно простой иерархической структуры здесь. 277 00:15:46,000 --> 00:15:49,000 >> Давайте бросим быстрый взгляд под капотом, как это выложил, 278 00:15:49,000 --> 00:15:53,000 И действительно, если посмотреть на index.php это довольно просто. 279 00:15:53,000 --> 00:15:57,000 В самом деле, хотя я и назвал эту файле PHP нет никаких фактических программный код. 280 00:15:57,000 --> 00:16:01,000 Там в комментарии, что я написал здесь, в PHP просто, так что пользователю не до конца видя его. 281 00:16:01,000 --> 00:16:05,000 Конечно, как и раньше, ничего, что между PHP теги 282 00:16:05,000 --> 00:16:08,000 интерпретируется, даже если это комментарии, и интерпретировать комментарий 283 00:16:08,000 --> 00:16:11,000 означает просто выбросить его в конце дня, и на самом деле не 284 00:16:11,000 --> 00:16:15,000 отправить его в браузер, так что все здесь просто эстетика. 285 00:16:15,000 --> 00:16:20,000 Если я открываю аналогичным lectures.php это тоже просто жестко кодированных файлов. 286 00:16:20,000 --> 00:16:23,000 Это происходит называть что-то. PHP, 287 00:16:23,000 --> 00:16:27,000 но это действительно просто. HTML, и week1.php, week2.php 288 00:16:27,000 --> 00:16:31,000 Точно так же только разметка, так что куча недостатков этой конструкции. 289 00:16:31,000 --> 00:16:33,000 Один из них, это огромное количество копировать / вставить. 290 00:16:33,000 --> 00:16:37,000 Даже несмотря на то единственное, что меняется Среди этих файлов в случае маркированного списка, 291 00:16:37,000 --> 00:16:41,000 Ли теги, я, тем не менее есть док типа, HTML, головы, 292 00:16:41,000 --> 00:16:44,000 названия, близкие тела, близкие HTML и многое другое 293 00:16:44,000 --> 00:16:47,000 В каждый файл, который означает, что если я когда-нибудь хотите реструктуризацию 294 00:16:47,000 --> 00:16:50,000 эта веб-страница или restylize это я должен пойти и изменить 295 00:16:50,000 --> 00:16:54,000 Все эти файлы вручную или с некоторым массивным найти и заменить. 296 00:16:54,000 --> 00:17:01,000 >> Давайте сделаем шаг в сторону умнее, больше думать дизайна в версии 1 здесь 297 00:17:01,000 --> 00:17:04,000 которым в соответствии читать мне, что мы включили, так что вы можете играть вместе с 298 00:17:04,000 --> 00:17:07,000 эти более спокойные дома, обратите внимание, что мы имеем здесь 299 00:17:07,000 --> 00:17:10,000 Резюме файлы в версии 1 этого сайта, 300 00:17:10,000 --> 00:17:13,000 и кажется, что я взял на себя смелость вынести за скобки 301 00:17:13,000 --> 00:17:17,000 общий код, header.php и footer.php. 302 00:17:17,000 --> 00:17:20,000 Ну, давайте взглянем на то, что внутри первой из них. 303 00:17:20,000 --> 00:17:23,000 Header.php выглядит знакомо, 304 00:17:23,000 --> 00:17:26,000 но обратите внимание, где это отрезать? 305 00:17:26,000 --> 00:17:30,000 Сразу после строки 19, так что это все, что было общим 306 00:17:30,000 --> 00:17:33,000 из файла index.php, lectures.php, 307 00:17:33,000 --> 00:17:36,000 Неделя1 и week2.php из предыдущего примера. 308 00:17:36,000 --> 00:17:40,000 Что я сделал копию и вырезать все, что было общим для всех этих файлов, 309 00:17:40,000 --> 00:17:44,000 положить его в отдельный файл заголовка, а так же в footer.php 310 00:17:44,000 --> 00:17:48,000 я применить тот же принцип, согласно которому только интересные линии 311 00:17:48,000 --> 00:17:52,000 В footer.php эти два, недалеко тела и близких HTML. 312 00:17:52,000 --> 00:17:55,000 >> Но что это означает теперь, что в новой версии 313 00:17:55,000 --> 00:17:59,000 из index.php обратите внимание, как много проще он может получить. 314 00:17:59,000 --> 00:18:02,000 Конечно, немного более загадочным выглядит, немного меньше, интуитивно 315 00:18:02,000 --> 00:18:06,000 следовать сверху вниз, но боже мой, все, что избыточность в настоящее время нет. 316 00:18:06,000 --> 00:18:10,000 Мы требуем использованием PHP функция называется буквально требуют наверху, 317 00:18:10,000 --> 00:18:15,000 которая очень напоминает, напомним, С # включить в механизм. 318 00:18:15,000 --> 00:18:17,000 Мы требуем header.php на самом верху. 319 00:18:17,000 --> 00:18:20,000 Мы требуем footer.php на дне, и единственное, что различные 320 00:18:20,000 --> 00:18:25,000 или особенного в этом файле содержание, которое должно быть уникальным для этого. 321 00:18:25,000 --> 00:18:29,000 Если бы я тогда идут, скажем, lectures.php, тот же принцип применяется. 322 00:18:29,000 --> 00:18:32,000 Опять же, некоторые комментарии наверху, но потом требуют заголовке, требуют нижний колонтитулы, 323 00:18:32,000 --> 00:18:35,000 и между ними, это только содержание, что на самом деле изменилось. 324 00:18:35,000 --> 00:18:38,000 И если бы мы смотрели в неделю 1 и 2-я неделя мы будем видеть 325 00:18:38,000 --> 00:18:42,000 что этот же принцип был применен там. 326 00:18:42,000 --> 00:18:44,000 Ну, мы не совсем сделано там. 327 00:18:44,000 --> 00:18:48,000 >> Давайте взглянем на версии 2, который имеет аналогичную структуру, 328 00:18:48,000 --> 00:18:50,000 не заметить, что теперь я ввел нечто другое. 329 00:18:50,000 --> 00:18:53,000 В строке 10 я представил helpers.php, 330 00:18:53,000 --> 00:18:55,000 который очевидно содержит вспомогательные функции. 331 00:18:55,000 --> 00:18:58,000 Вспомогательные функции, как правило, относительно короткими функции 332 00:18:58,000 --> 00:19:01,000 что вы пишете, чтобы помочь вам в различных местах, 333 00:19:01,000 --> 00:19:04,000 и давайте посмотрим, что внутри helpers.php. 334 00:19:04,000 --> 00:19:07,000 В этом случае, похоже, что она имеет 2 функции. 335 00:19:07,000 --> 00:19:10,000 Напомним, с другой день с кубом пример 336 00:19:10,000 --> 00:19:13,000 Вы можете определить свои собственные функции в PHP, и то, что я сделал, теперь у меня 337 00:19:13,000 --> 00:19:17,000 функций называется оказывают подвал и сделать заголовок, 338 00:19:17,000 --> 00:19:21,000 первый из которых принимает параметр называется данными, 339 00:19:21,000 --> 00:19:25,000 которого по умолчанию является пустой массив, как это было предложено там, 340 00:19:25,000 --> 00:19:29,000 и мы действительно можем написать это еще более кратко в последней версии PHP 341 00:19:29,000 --> 00:19:32,000 , сказав, открытые квадратные скобки, закрытые квадратные скобки. 342 00:19:32,000 --> 00:19:35,000 Это означает, что пустой массив размером 0, но, тем не менее массива. 343 00:19:35,000 --> 00:19:38,000 >> Этот экстракт функция немного специфичен тем, что 344 00:19:38,000 --> 00:19:41,000 что он делает это в качестве аргумента ассоциативный массив 345 00:19:41,000 --> 00:19:45,000 , который имеет 0 или более пар ключ-значение, и если у вас есть ключ Foo 346 00:19:45,000 --> 00:19:48,000 а значение бара экстракт функции 347 00:19:48,000 --> 00:19:51,000 создает ситуацию, в которой сейчас, как линии 11, 348 00:19:51,000 --> 00:19:57,000 у вас есть локальная переменная $ FOO, значением которого является бар. 349 00:19:57,000 --> 00:19:59,000 И если бы у вас было больше ключей и значений в массиве данных, 350 00:19:59,000 --> 00:20:03,000 Аналогичным бы они извлекаются в локальную область 351 00:20:03,000 --> 00:20:06,000 или пространства имен, так что и footer.php 352 00:20:06,000 --> 00:20:09,000 та же идея здесь, чтобы header.php 353 00:20:09,000 --> 00:20:12,000 имеют доступ к этим переменным. 354 00:20:12,000 --> 00:20:15,000 В самом деле, позвольте мне открыть снова header.php 355 00:20:15,000 --> 00:20:18,000 и обратить внимание на то, что теперь он выглядит в этой версии. 356 00:20:18,000 --> 00:20:22,000 >> Вместо жесткого кодирования CS50 в качестве названия для каждой страницы 357 00:20:22,000 --> 00:20:24,000 заметит динамизм, что это возможно сейчас. 358 00:20:24,000 --> 00:20:29,000 В строке 5 я эхом название переменной, 359 00:20:29,000 --> 00:20:34,000 но сначала я передаю, что название переменной функцию под названием HTMLSpecialChars. 360 00:20:34,000 --> 00:20:38,000 Глупое имя для функции, если она есть, но она действительно делает то, что он говорит. 361 00:20:38,000 --> 00:20:41,000 Это гарантирует, что любые специальные символы 362 00:20:41,000 --> 00:20:46,000 в строке, который был принят в правильно бежал HTML. 363 00:20:46,000 --> 00:20:49,000 На самом деле это способ избежать так называемых Cross Site Scripting атаки 364 00:20:49,000 --> 00:20:52,000 которой кто-то может злонамеренно или случайно 365 00:20:52,000 --> 00:20:55,000 вводить свои собственные HTML на свой сайт 366 00:20:55,000 --> 00:20:59,000 путем вставки в той или иной форме, например, 367 00:20:59,000 --> 00:21:02,000 то, что вы были не совсем ожидал, в частности, наличие кода, 368 00:21:02,000 --> 00:21:05,000 как мы будем говорить в неделю или два времени. 369 00:21:05,000 --> 00:21:08,000 >> Это сейчас header.php, это вид 370 00:21:08,000 --> 00:21:12,000 В том смысле, что оно позволяет просматривать эстетическое содержание некоторых наборов данных. 371 00:21:12,000 --> 00:21:14,000 Но более конкретно, это шаблон. 372 00:21:14,000 --> 00:21:19,000 Это своего рода план теперь, что мы хотим заголовке каждой страницы, чтобы выглядеть, 373 00:21:19,000 --> 00:21:23,000 но есть некоторая динамика в том, что мы хотим, чтобы название будет динамически вставляются 374 00:21:23,000 --> 00:21:26,000 Судя по названию переменной 375 00:21:26,000 --> 00:21:30,000 , которое было извлечено, когда мы звонили, опять же, 376 00:21:30,000 --> 00:21:33,000 Функция визуализации заголовка. 377 00:21:33,000 --> 00:21:36,000 Теперь, если мы посмотрели на рендер подвал, там на самом деле не так много использования, что прямо сейчас 378 00:21:36,000 --> 00:21:40,000 потому что в footer.php нет динамизма бы то ни было. 379 00:21:40,000 --> 00:21:43,000 Там могут быть, но на данный момент это жестко запрограммированный список из 2 тегами, 380 00:21:43,000 --> 00:21:46,000 но та же идея применима, так что фактически предлагает почему 381 00:21:46,000 --> 00:21:49,000 ли мы тратить время имеющий заголовок визуализации и рендеринга колонтитул функцию? 382 00:21:49,000 --> 00:21:52,000 Отпусти меня, а теперь в версии 3, 383 00:21:52,000 --> 00:21:56,000 и в версии 3 в помощники я решил упростить ее еще больше. 384 00:21:56,000 --> 00:21:58,000 >> Позвольте мне один визуализации функций. 385 00:21:58,000 --> 00:22:02,000 Дайте мне его взять еще один аргумент, на этот раз называется шаблоном, 386 00:22:02,000 --> 00:22:05,000 , который предназначен, чтобы быть имя шаблона, 387 00:22:05,000 --> 00:22:11,000 и тогда я буду объединения дерзко. PHP, чтобы значение этой переменной, 388 00:22:11,000 --> 00:22:17,000 , а затем, если он существует foo.php, bar.php или header.php и footer.php, 389 00:22:17,000 --> 00:22:20,000 Затем я собираюсь идти вперед и извлечь переменных данных 390 00:22:20,000 --> 00:22:23,000 , а затем требуют, чтобы путь. 391 00:22:23,000 --> 00:22:29,000 Другими словами, использование этого сейчас, если я открываю index.php 392 00:22:29,000 --> 00:22:32,000 заметить, что я не называю визуализации заголовка больше. 393 00:22:32,000 --> 00:22:36,000 Я просто называю сделать, но я пройти в кавычках значение заголовка 394 00:22:36,000 --> 00:22:39,000 ясно дать понять, какой шаблон я на самом деле хочу, чтобы загрузить. 395 00:22:39,000 --> 00:22:41,000 >> Тогда здесь заметить, что я делаю. 396 00:22:41,000 --> 00:22:44,000 Я передаю в динамично ключ название, 397 00:22:44,000 --> 00:22:47,000 Значение CS50, и это тоже, как мы видели раньше, 398 00:22:47,000 --> 00:22:51,000 мог бы быть более краткими в последней версии PHP 399 00:22:51,000 --> 00:22:54,000 где я могу заменить функцию массива в квадратных скобках, 400 00:22:54,000 --> 00:22:57,000 который я предлагаю еще более читаемым и, конечно, 401 00:22:57,000 --> 00:22:59,000 немного легче набирать. 402 00:22:59,000 --> 00:23:02,000 И, конечно, с вынести колонтитул вызова в нижней части, 403 00:23:02,000 --> 00:23:05,000 Мы не беспокоят проходящие во второй аргумент вообще, не ассоциативный массив, 404 00:23:05,000 --> 00:23:07,000 потому что нет ничего динамического внутри этого колонтитула. 405 00:23:07,000 --> 00:23:10,000 Это всего лишь некоторые близкие тегов для HTML. 406 00:23:10,000 --> 00:23:14,000 Хорошо, мы предпринимаем шаги по очистке вещи действительно здесь, 407 00:23:14,000 --> 00:23:17,000 но позвольте мне открыть 2 финала примеров. 408 00:23:17,000 --> 00:23:21,000 Это один, номер 4, обратите внимание, что я принял сознательное решение сейчас 409 00:23:21,000 --> 00:23:26,000 чтобы улучшить предыдущий пример, наконец, используя некоторые иерархии мои файлы. 410 00:23:26,000 --> 00:23:29,000 >> Обратите внимание, что в данном резюме, в этом читал мне, я представил 411 00:23:29,000 --> 00:23:32,000 включает в себя каталог и каталог шаблонов 412 00:23:32,000 --> 00:23:35,000 , содержимое которых будет то, что я хочу, чтобы включить 413 00:23:35,000 --> 00:23:38,000 и шаблоны, которые я хочу сделать, соответственно. 414 00:23:38,000 --> 00:23:42,000 Это действительно я, будучи анальный и пытается держать вещи опрятными, 415 00:23:42,000 --> 00:23:45,000 сохранить файлы, связанные вместе, но конечный результат 416 00:23:45,000 --> 00:23:48,000 является то, что у нас теперь есть немного опрятнее установки, но мы должны помнить, теперь 417 00:23:48,000 --> 00:23:51,000 в, например, index.php 418 00:23:51,000 --> 00:23:55,000 когда мы требуем файл helpers.php 419 00:23:55,000 --> 00:24:01,000 мы должны теперь требуют его через включает / helpers.php 420 00:24:01,000 --> 00:24:06,000 , а не просто говорить helpers.php, потому что теперь это на самом деле в подкаталог. 421 00:24:06,000 --> 00:24:09,000 Теперь, как и в сторону, вы увидите в этих примерах и некоторые другие 422 00:24:09,000 --> 00:24:11,000 функции, как требуется, требуется один раз. 423 00:24:11,000 --> 00:24:15,000 Там на самом деле сама функция называется включать, и все они имеют несколько иное поведение. 424 00:24:15,000 --> 00:24:18,000 Здесь я говорю требуется один раз, чтобы сделать супер ясно, что я только хочу, чтобы эти 425 00:24:18,000 --> 00:24:20,000 Помощники, включенных в моем проекте раза. 426 00:24:20,000 --> 00:24:24,000 Но если я осторожно, и если я на самом деле думаю через мою логику правильно 427 00:24:24,000 --> 00:24:27,000 этого должно хватить слишком просто сказать, требуют наверху 428 00:24:27,000 --> 00:24:31,000 Пока я сам не случайно требует, чтобы и тот же файл в другом месте. 429 00:24:31,000 --> 00:24:34,000 На самом деле, это немного более эффективный способ делать вещи, затем с помощью 430 00:24:34,000 --> 00:24:38,000 требуется один раз, так что я буду урезать его до просто требуют. 431 00:24:38,000 --> 00:24:40,000 >> Давайте возьмем еще один шаг вперед. 432 00:24:40,000 --> 00:24:46,000 Этот последний пример сейчас, версии 5, имеет еще чище иерархии папок. 433 00:24:46,000 --> 00:24:50,000 Обратите внимание на то, что я сделал здесь за читала мне в этой последней версии 434 00:24:50,000 --> 00:24:54,000 Теперь у меня есть HTML каталог, который у меня был все это время, 435 00:24:54,000 --> 00:24:58,000 но внутри там сейчас только index.php, lectures.php, 436 00:24:58,000 --> 00:25:01,000 week1.php и week2.php. 437 00:25:01,000 --> 00:25:05,000 Каталог включает в себя в настоящее время живет рядом с HTML каталога, 438 00:25:05,000 --> 00:25:08,000 так на том же уровне, как родной брат, так сказать. 439 00:25:08,000 --> 00:25:10,000 Так же как и шаблоны папки. 440 00:25:10,000 --> 00:25:14,000 Ключевым вынос здесь я представил немного больше структуры, 441 00:25:14,000 --> 00:25:17,000 но ключевой особенностью является то, что теперь только файлы 442 00:25:17,000 --> 00:25:21,000 , которые должны быть доступны веб публично адресуемых 443 00:25:21,000 --> 00:25:25,000 по URL на интернет-общественности в моем HTML каталога. 444 00:25:25,000 --> 00:25:28,000 >> Между тем, другие файлы, helpers.php, footer.php, 445 00:25:28,000 --> 00:25:32,000 header.php, которые, возможно, являются, возможно, более чувствительны, 446 00:25:32,000 --> 00:25:35,000 Может быть, помощники на самом деле имеет некоторые имена пользователей и пароли или некоторые интеллектуальные 447 00:25:35,000 --> 00:25:39,000 свойство мое, функции, я действительно не хочу, чтобы мир видел, даже если случайно. 448 00:25:39,000 --> 00:25:45,000 Это хорошая практика, чтобы держаться подальше от общественных каталога HTML 449 00:25:45,000 --> 00:25:48,000 любые файлы, которые не нужно себя публике. 450 00:25:48,000 --> 00:25:51,000 Все, что нужно сделать в этом случае, когда смотрю, например, 451 00:25:51,000 --> 00:25:55,000 index.php каталога в HTML файл, 452 00:25:55,000 --> 00:25:58,000 Заметьте, что мы просто должны быть немного более осторожны, когда требуется 453 00:25:58,000 --> 00:26:00,000 или требуется только файл. 454 00:26:00,000 --> 00:26:03,000 Мне нужно сначала сделать .. для перехода в родительский каталог, 455 00:26:03,000 --> 00:26:06,000 то же / входит / helpers.php 456 00:26:06,000 --> 00:26:12,000 нырять вниз, чтобы получить файл, который меня волнует. 457 00:26:12,000 --> 00:26:16,000 >> Любые вопросы, то на MVC 458 00:26:16,000 --> 00:26:20,000 или это относительно простое воплощение его? 459 00:26:20,000 --> 00:26:23,000 И позвольте мне пояснить, что мы сосредоточились совсем немного на 460 00:26:23,000 --> 00:26:27,000 V здесь, мнения и факторинговые из этих шаблонов. 461 00:26:27,000 --> 00:26:30,000 Мы на самом деле не отличается от M C только пока. 462 00:26:30,000 --> 00:26:33,000 На самом деле, там действительно нет M здесь, и даже наш C, 463 00:26:33,000 --> 00:26:36,000 контроллера, на самом деле не делают все, что много, но вы получите намного больше 464 00:26:36,000 --> 00:26:39,000 знакомый с обоими этими 2 письма от MVC, 465 00:26:39,000 --> 00:26:43,000 или, вернее, вы получите гораздо больше знакомы с C 466 00:26:43,000 --> 00:26:49,000 В MVC для задачи набора 7, поэтому есть больше, что на горизонте. 467 00:26:49,000 --> 00:26:51,000 Вопросы? 468 00:26:51,000 --> 00:26:53,000 Там на самом деле никого нет. 469 00:26:53,000 --> 00:26:57,000 >> Хорошо, давайте теперь перейдем к второй и последний тема на сегодняшний день. 470 00:26:57,000 --> 00:27:00,000 То есть введение базы данных. 471 00:27:00,000 --> 00:27:03,000 До этого момента мы имели несколько способов хранения данных. 472 00:27:03,000 --> 00:27:05,000 Мы использовали переменные. 473 00:27:05,000 --> 00:27:08,000 Вернуться в нашем файле C, I / O обсуждения мы начали использовать текстовые файлы 474 00:27:08,000 --> 00:27:11,000 и использование файлов, таких как Fprintf, и тогда мы даже начали 475 00:27:11,000 --> 00:27:14,000 говорить о CSV-файлов немного, значения, разделенные запятыми, 476 00:27:14,000 --> 00:27:17,000 так что все это позволило нам иметь данные, хранящиеся 477 00:27:17,000 --> 00:27:19,000 либо не постоянно, или настойчиво. 478 00:27:19,000 --> 00:27:23,000 Но даже CSVs на самом деле не способствует поиску 479 00:27:23,000 --> 00:27:25,000 и вставки и удаления. 480 00:27:25,000 --> 00:27:28,000 Это действительно просто глупо текстовых файлов, разделенных запятыми 481 00:27:28,000 --> 00:27:30,000 строка за строкой путем строка за строкой, поэтому если вы хотите, чтобы 482 00:27:30,000 --> 00:27:32,000 поиск файлов, что лучшее, что вы можете сделать действительно линейный поиск. 483 00:27:32,000 --> 00:27:34,000 Вы должны начать в верхней части файла, читать все это в, 484 00:27:34,000 --> 00:27:36,000 и искать некоторое значение интереса. 485 00:27:36,000 --> 00:27:39,000 Если Вы хотите вставить в нее вы должны сделать то же самое, 486 00:27:39,000 --> 00:27:41,000 итерации он и вставки в определенном месте, 487 00:27:41,000 --> 00:27:45,000 и в том, что Вы должны сделать все поиски логики себе. 488 00:27:45,000 --> 00:27:49,000 >> Вы не можете сделать умное шаблону на файл CSV, если вы сами написать код. 489 00:27:49,000 --> 00:27:51,000 Вы не можете сделать фильтрацию файлов CSV 490 00:27:51,000 --> 00:27:53,000 если вы сами написать код. 491 00:27:53,000 --> 00:27:56,000 Разве не было бы здорово, если бы кто-то другой положил во всех усилий 492 00:27:56,000 --> 00:27:59,000 на самом деле сделать поиск простым и легким вставки 493 00:27:59,000 --> 00:28:01,000 и удаления и обновления и так далее? 494 00:28:01,000 --> 00:28:04,000 Это именно то, что база данных. 495 00:28:04,000 --> 00:28:07,000 SQL, язык структурированных запросов, является еще одним языком 496 00:28:07,000 --> 00:28:10,000 что мы представляем здесь сегодня, но это тоже довольно доступной, 497 00:28:10,000 --> 00:28:13,000 и то, что мы действительно собираемся сделать, это просто вырвать из него некоторые из наиболее характерных 498 00:28:13,000 --> 00:28:16,000 характеристик, так что для PSET 7, и если вы делаете что-то веб-основе, 499 00:28:16,000 --> 00:28:19,000 ваш окончательный проект, у вас есть возможность выразить себя 500 00:28:19,000 --> 00:28:22,000 по данным запросам. 501 00:28:22,000 --> 00:28:25,000 У Вас есть возможность хранить мало или много данных 502 00:28:25,000 --> 00:28:28,000 в более структурированном виде, что будет в конце дня 503 00:28:28,000 --> 00:28:32,000 сделать вашу жизнь проще, потому что с SQL вы можете выразить себя 504 00:28:32,000 --> 00:28:35,000 гораздо точнее, гораздо более методично, с тем чтобы 505 00:28:35,000 --> 00:28:40,000 вернуть некоторые подмножества данных из большого корпуса данных. 506 00:28:40,000 --> 00:28:45,000 >> Вы можете думать о базе данных, в этом случае база данных SQL, действительно, как Excel 507 00:28:45,000 --> 00:28:48,000 или чисел, где это электронная таблица, 508 00:28:48,000 --> 00:28:50,000 или, может быть, нескольких электронных таблиц и таблиц, конечно, 509 00:28:50,000 --> 00:28:53,000 есть строки и столбцы, и это потому, что 510 00:28:53,000 --> 00:28:56,000 SQL базы данных реляционную, реляционную в том смысле, 511 00:28:56,000 --> 00:28:59,000 что они хранят данные в терминах этих таблицах, 512 00:28:59,000 --> 00:29:01,000 строк и столбцов. 513 00:29:01,000 --> 00:29:03,000 Они более высокой производительностью, чем что-то вроде таблицы, 514 00:29:03,000 --> 00:29:05,000 и таблица предназначена для использования человеком. 515 00:29:05,000 --> 00:29:08,000 База данных предназначена для использования программистом 516 00:29:08,000 --> 00:29:12,000 написание кода против этого, поэтому воплощение базы данных 517 00:29:12,000 --> 00:29:14,000 будет либо командной строки. 518 00:29:14,000 --> 00:29:18,000 >> Один из самых популярных реляционных баз данных там, опять же, MySQL, 519 00:29:18,000 --> 00:29:22,000 которая чудесно бесплатно, очень высокопроизводительные, и это то, что 520 00:29:22,000 --> 00:29:24,000 Facebook использовать очень рано и до некоторой степени еще и сегодня 521 00:29:24,000 --> 00:29:27,000 хранить много своих данных, и мы увидим в момент 522 00:29:27,000 --> 00:29:30,000 что с помощью относительно простых команд 523 00:29:30,000 --> 00:29:33,000 мы можем выбрать данные, вставки данных, обновление данных, 524 00:29:33,000 --> 00:29:37,000 удаление данных и тому подобное, но, к счастью, есть более удобный интерфейс 525 00:29:37,000 --> 00:29:39,000 чем просто введя в черно-белой строки здесь. 526 00:29:39,000 --> 00:29:43,000 Мы будем использовать для PSET 7 и за бесплатный инструмент под названием PHPMyAdmin. 527 00:29:43,000 --> 00:29:45,000 Название является случайным. 528 00:29:45,000 --> 00:29:47,000 Инструмент случается быть реализованы в PHP, 529 00:29:47,000 --> 00:29:49,000 но это принципиально не имеет значения. 530 00:29:49,000 --> 00:29:53,000 Что полезного о PHPMyAdmin том, что это веб-утилиты. 531 00:29:53,000 --> 00:29:55,000 Мы предварительно установили его в прибор для вас, 532 00:29:55,000 --> 00:29:58,000 и с его помощью вы можете создавать таблицы в базе данных, 533 00:29:58,000 --> 00:30:01,000 Вы можете вставить данные, удалять данные, и вообще см. 534 00:30:01,000 --> 00:30:04,000 Ваши данные в достаточно удобной средой. 535 00:30:04,000 --> 00:30:07,000 Ваши пользователи не собирается использовать PHPMyAdmin. 536 00:30:07,000 --> 00:30:09,000 >> Это действительно только административные или разработчик инструментов 537 00:30:09,000 --> 00:30:12,000 , с которой, чтобы увидеть и копаться ваши данные и выяснить, как структурировать ее, 538 00:30:12,000 --> 00:30:15,000 так же, как вы сами можете использовать Excel или Numbers, 539 00:30:15,000 --> 00:30:19,000 но это будет отличный способ визуализации, что происходит под капотом 540 00:30:19,000 --> 00:30:22,000 так что вы можете сосредоточиться на решении проблем интересным и не столько 541 00:30:22,000 --> 00:30:25,000 на тайные команды. 542 00:30:25,000 --> 00:30:28,000 Давайте посмотрим на пример данных, которые могут храниться таблично 543 00:30:28,000 --> 00:30:30,000 В реляционной базе данных. 544 00:30:30,000 --> 00:30:32,000 Вот один из таких примеров. 545 00:30:32,000 --> 00:30:35,000 Сейчас, к сожалению, PHPMyAdmin ошибку на стороне бросать слишком много слов 546 00:30:35,000 --> 00:30:38,000 и графики на вас, но если вы оттачивают только на 547 00:30:38,000 --> 00:30:42,000 ID колонки, колонки имя пользователя и хэш-столбца 548 00:30:42,000 --> 00:30:45,000 это эффективно таблицы, но это случается, фрагмент 549 00:30:45,000 --> 00:30:49,000 таблицы внутри прибора 550 00:30:49,000 --> 00:30:53,000 использование файлов, мы предоставляем вам в проблеме набор 7. 551 00:30:53,000 --> 00:30:57,000 >> В частности, мы даем вам файл, который представляет 552 00:30:57,000 --> 00:31:01,000 пользователем таблицы, поэтому таблицу, содержащую пользователей с 3 колонками, 553 00:31:01,000 --> 00:31:05,000 одним из которых является уникальный идентификатор, начиная с 1 и увеличивается время после этого. 554 00:31:05,000 --> 00:31:08,000 Во втором столбце имя пользователя, и те из вас, кто сделал хакер, 555 00:31:08,000 --> 00:31:12,000 Хакер издание для PSET 2, могли бы признать некоторые из этих имен пользователей по крайней мере. 556 00:31:12,000 --> 00:31:16,000 На правой стороне находятся пароли, но они не буквальное пароли. 557 00:31:16,000 --> 00:31:19,000 Они хэши их, так получается 558 00:31:19,000 --> 00:31:22,000 , что хранить пароли в базе данных, это действительно плохая идея. 559 00:31:22,000 --> 00:31:25,000 Вы все, наверное, читали в какой-то момент некоторые веб-сайт 560 00:31:25,000 --> 00:31:28,000 или базы данных, некоторые компании компрометации, а затем вы должны 561 00:31:28,000 --> 00:31:31,000 изменить пароль, вам нужно получить возврат на вещи 562 00:31:31,000 --> 00:31:34,000 потому что некоторые плохой парень на самом деле ворвались в своем аккаунте в качестве результата. 563 00:31:34,000 --> 00:31:38,000 >> Хранение паролей в незашифрованном виде, в открытом виде в базе данных 564 00:31:38,000 --> 00:31:41,000 совершенно глупый, и все же это очень забавно 565 00:31:41,000 --> 00:31:44,000 Затем, чтобы прочитать о некоторых очень известных компаний 566 00:31:44,000 --> 00:31:47,000 Иногда в прессе, базы данных которых оказываются под угрозой, 567 00:31:47,000 --> 00:31:50,000 и эта часть не смешно, но факт, что базы данных содержат незашифрованные 568 00:31:50,000 --> 00:31:53,000 Пароли смешно, потому что буквально с одной строки кода 569 00:31:53,000 --> 00:31:57,000 Вы можете защититься от этой конкретной угрозой, и это то, что мы сделали здесь. 570 00:31:57,000 --> 00:32:00,000 Даже для наших поддельных немного CS50 финансов версии 571 00:32:00,000 --> 00:32:03,000 Мы шифрования паролей только для хорошей мерой, и тот факт, что 572 00:32:03,000 --> 00:32:07,000 Все эти пароли начинаются с $ 1 $ это просто конвенции. 573 00:32:07,000 --> 00:32:10,000 Это просто означает, что они зашифрованы или действительно хэшируется 574 00:32:10,000 --> 00:32:13,000 которая, как односторонняя функция шифрования 575 00:32:13,000 --> 00:32:17,000 которых вы не можете ликвидировать ее последствия с так называемой MD5. 576 00:32:17,000 --> 00:32:21,000 >> Тот факт, что 50 это после того, что означает, что значения соли 577 00:32:21,000 --> 00:32:24,000 из 50 были использованы для перемешивания все эти пароли, за исключением одного. 578 00:32:24,000 --> 00:32:27,000 Шахта, конечно, как вы видите, есть, HA, 579 00:32:27,000 --> 00:32:30,000 было использование различных солей, так что те из вас, кто получил слегка споткнулся 580 00:32:30,000 --> 00:32:33,000 Может быть, в Hacker 2, что, возможно, было результатом нашей использовав 581 00:32:33,000 --> 00:32:36,000 различных хэш, чем другие, потому что мой пароль фактически то же самое 582 00:32:36,000 --> 00:32:38,000 как и некоторые другие Пользователь там. 583 00:32:38,000 --> 00:32:41,000 В самом деле, если вы ждали все эти недели, чтобы узнать 584 00:32:41,000 --> 00:32:44,000 что эти пароли были здесь были пароли, которые вы были оспорены 585 00:32:44,000 --> 00:32:48,000 взломать в Hacker издание проблемой набора 2, так что не слишком сложно. 586 00:32:48,000 --> 00:32:50,000 В самом деле, Малан был таким же, как jharvard, 587 00:32:50,000 --> 00:32:54,000 Но если мы вернемся они выглядели по-другому. 588 00:32:54,000 --> 00:32:58,000 >> Сосредоточьтесь на jharvard в малиновый, потому что они были соленые по-разному. 589 00:32:58,000 --> 00:33:01,000 Алгоритм был возмущенный таким образом, что 590 00:33:01,000 --> 00:33:05,000 хэш-значение, зашифрованное значение выглядит немного иначе 591 00:33:05,000 --> 00:33:08,000 потому что входы были немного другими, но пароль под капотом 592 00:33:08,000 --> 00:33:10,000 по-прежнему в конечном счете, малиновый. 593 00:33:10,000 --> 00:33:12,000 Теперь, кто заботится об этом? 594 00:33:12,000 --> 00:33:15,000 Ну, мы предоставляем вам с образцами пользователей, имена образцов пользователей 595 00:33:15,000 --> 00:33:18,000 и хэши паролей, так что у вас действительно есть некоторый 596 00:33:18,000 --> 00:33:23,000 клиенты для CS50 финансов, когда вы впервые оторваться от земли с вашим кодом. 597 00:33:23,000 --> 00:33:27,000 Вам придется выполнять несколько таблиц внутри MySQL, внутри базы данных. 598 00:33:27,000 --> 00:33:30,000 Вы будете иметь, чтобы создать более таблиц, эффективно, но мы решили дать вам эту 599 00:33:30,000 --> 00:33:33,000 , чтобы вы начали, и вы увидите, что проблема набора спецификаций 600 00:33:33,000 --> 00:33:37,000 проведет вас через процесс импорта этой таблице 601 00:33:37,000 --> 00:33:39,000 а также объяснить, что некоторые из характеристик, 602 00:33:39,000 --> 00:33:41,000 и вы также увидите, что мы предлагаем Вам код 603 00:33:41,000 --> 00:33:44,000 для обработки хэширования или шифрования данных паролей, 604 00:33:44,000 --> 00:33:49,000 так что вам не нужно слишком беспокоиться о том, что MD5 или как на самом деле все. 605 00:33:49,000 --> 00:33:53,000 >> Таким образом, SQL, язык структурированных запросов. 606 00:33:53,000 --> 00:33:56,000 Это, попросту говоря, язык, который мы собираемся начать использовать в PSET 7 607 00:33:56,000 --> 00:34:01,000 и, возможно, за пределами запросить данные из некоторых баз данных. 608 00:34:01,000 --> 00:34:06,000 Данные, опять же, хранится таблично в этих реляционных таблиц, столбцов и строк, 609 00:34:06,000 --> 00:34:09,000 но с использованием некоторых относительно простой синтаксис, как удаление, 610 00:34:09,000 --> 00:34:12,000 вставки, обновления и выбора мы можем сделать именно это. 611 00:34:12,000 --> 00:34:15,000 Мы можем удалить из базы данных, вставки, 612 00:34:15,000 --> 00:34:19,000 обновления данных, а также выбрать, то есть извлечения данных из базы данных. 613 00:34:19,000 --> 00:34:21,000 Как мы можем идти об этом? 614 00:34:21,000 --> 00:34:23,000 Позвольте мне идти вперед в устройство. 615 00:34:23,000 --> 00:34:28,000 Позвольте мне подтянуть http://localhost, 616 00:34:28,000 --> 00:34:30,000 который, опять же, местные сам прибор. 617 00:34:30,000 --> 00:34:32,000 Это по умолчанию прозвище. 618 00:34:32,000 --> 00:34:35,000 И позвольте мне перейти к / PHPMyAdmin. 619 00:34:35,000 --> 00:34:39,000 Это случается, специальный URL, что прибор предварительно понять, 620 00:34:39,000 --> 00:34:42,000 , что сразу подсказывает мне имя пользователя и пароль. 621 00:34:42,000 --> 00:34:46,000 >> Как обычно, я собираюсь ввести jharvard и малиновый, 622 00:34:46,000 --> 00:34:48,000 но понимаю, что это учетная запись администратора на компьютере. 623 00:34:48,000 --> 00:34:53,000 Это просто совпадение, что есть также jharvard зарегистрированы для CS50 финансов. 624 00:34:53,000 --> 00:34:56,000 Jharvard, малиновый, введите дает мне пользовательский интерфейс, который мы видели 625 00:34:56,000 --> 00:34:59,000 проблеск минуту назад, и это немного подавляющим сначала, 626 00:34:59,000 --> 00:35:02,000 но будьте уверены, вы никогда не будете иметь, чтобы нажмите большинство ссылок в этом инструменте. 627 00:35:02,000 --> 00:35:05,000 Вы будете в конечном итоге с помощью небольшой группы, которые являются супер полезно, 628 00:35:05,000 --> 00:35:08,000 первый из которых баз данных здесь. 629 00:35:08,000 --> 00:35:11,000 Если я подхожу к базам данных, заметили, что я предложено создать базу данных. 630 00:35:11,000 --> 00:35:14,000 Это как создание нового файла Excel, эффективно. 631 00:35:14,000 --> 00:35:18,000 Я собираюсь пойти дальше и называют эту лекцию, и я просто не обращать внимания на поле там, сортировки. 632 00:35:18,000 --> 00:35:20,000 Это связано с представлением данных в нем, 633 00:35:20,000 --> 00:35:24,000 и я собираюсь нажать кнопку создать, а сейчас заметила, как я отпустил создать 634 00:35:24,000 --> 00:35:27,000 на левой стороне, где он говорит, что нет базы данных 635 00:35:27,000 --> 00:35:30,000 Я скоро см. лекцию базы данных. 636 00:35:30,000 --> 00:35:32,000 >> Если я теперь нажмите на левую сторону, лекции базе данных, 637 00:35:32,000 --> 00:35:34,000 заметит мои вкладки изменится немного. 638 00:35:34,000 --> 00:35:38,000 У меня есть структуры, SQL, экспорт, импорт и некоторые другие вещи. 639 00:35:38,000 --> 00:35:40,000 Структура является в значительной степени пустым. 640 00:35:40,000 --> 00:35:43,000 Никаких таблиц в базе данных, как сказано здесь, 641 00:35:43,000 --> 00:35:47,000 поэтому давайте создадим таблицу, и давайте идти вперед и создавать таблицы 642 00:35:47,000 --> 00:35:53,000 как студенты, и сколько колонн мы хотим? 643 00:35:53,000 --> 00:35:55,000 Давайте держать это простой, и давайте записи для каждого студента 644 00:35:55,000 --> 00:35:58,000 ID номер, имя и адрес электронной почты. 645 00:35:58,000 --> 00:36:02,000 >> Мы будем держать это простым, как, что, таким образом, 3 колонки, иди. 646 00:36:02,000 --> 00:36:05,000 Форма, которую вы здесь видите, сейчас немного грязный и подавляющим, 647 00:36:05,000 --> 00:36:08,000 но мы просто должны пройти через это строка за строкой, поэтому очень быстро давай 648 00:36:08,000 --> 00:36:14,000 Первый столбец в этой базе данных имя ID для уникального идентификатора. 649 00:36:14,000 --> 00:36:17,000 Это будет целое число. Я могу фактически игнорируют длины и значения. 650 00:36:17,000 --> 00:36:21,000 Int будет 32 бит независимо от того, что вы печатаете там, так что давайте оставим это поле пустым. 651 00:36:21,000 --> 00:36:24,000 Значение по умолчанию, я мог бы сделать его нулевым, как они определены. 652 00:36:24,000 --> 00:36:27,000 Я собираюсь оставить это в покое. Давайте не будем беспокоиться о значениях по умолчанию. 653 00:36:27,000 --> 00:36:29,000 Давайте прокрутки здесь направо, атрибуты. 654 00:36:29,000 --> 00:36:31,000 Это интересно. 655 00:36:31,000 --> 00:36:33,000 Давайте идти вперед и несколько условно сказать, что идентификаторы должны быть подписаны. 656 00:36:33,000 --> 00:36:35,000 Давайте не будем терять ни отрицательных чисел. 657 00:36:35,000 --> 00:36:37,000 >> Пойдем от 0 до 4 млрд, плюс-минус, 658 00:36:37,000 --> 00:36:40,000 и давайте не будем касаться любого из этих полей просто еще там, 659 00:36:40,000 --> 00:36:43,000 но тогда позвольте мне ввести имя здесь, 660 00:36:43,000 --> 00:36:46,000 , а затем другая электронной почты, поэтому улов электронной почте 661 00:36:46,000 --> 00:36:50,000 и имя, очевидно, не целые числа, так что давайте менять их на другое поле. 662 00:36:50,000 --> 00:36:53,000 Оказывается, VARCHAR, переменной длины символов, 663 00:36:53,000 --> 00:36:56,000 , как строка в базе данных SQL 664 00:36:56,000 --> 00:36:59,000 но переменной длины, и вы на самом деле нужно сказать, что это заранее 665 00:36:59,000 --> 00:37:02,000 Максимальная длина строки, так что я собираюсь несколько условно 666 00:37:02,000 --> 00:37:05,000 по соглашению типа 255 символов. 667 00:37:05,000 --> 00:37:08,000 Я могу сказать совершенно 32. Я мог бы сказать 1.000. 668 00:37:08,000 --> 00:37:11,000 Вы вроде необходимости решить для себя, на основе ваших демографических что 669 00:37:11,000 --> 00:37:14,000 самый длинный студента имя и идти с этим номером или немного больше, 670 00:37:14,000 --> 00:37:17,000 но то, что хорошо о VARCHAR он не собирается тратить 671 00:37:17,000 --> 00:37:19,000 255 байт на имя каждого студента. 672 00:37:19,000 --> 00:37:23,000 Если это DAVID он не собирается использовать все 255 байт, 673 00:37:23,000 --> 00:37:26,000 но это верхняя граница, так что я пойду с 255 только по соглашению, 674 00:37:26,000 --> 00:37:30,000 но мы могли бы обсудить, что будет несколько ниже стоимости, так и для электронной почты 675 00:37:30,000 --> 00:37:34,000 просто быть последовательным 255, но опять же, мы могли бы иметь такую ​​же дискуссию. 676 00:37:34,000 --> 00:37:36,000 Но я собираюсь сделать еще одну вещь здесь на правой стороне. 677 00:37:36,000 --> 00:37:40,000 >> Что мощных о базе данных является то, что она может делать много тяжелой работы 678 00:37:40,000 --> 00:37:42,000 или сложная работа для вас. 679 00:37:42,000 --> 00:37:46,000 В частности, я действительно не волнует, что ID моего студента числа. 680 00:37:46,000 --> 00:37:49,000 Это просто должно быть уникальным идентификатором в базе данных 681 00:37:49,000 --> 00:37:52,000 так что у меня есть 32-разрядные кратким представлением, что студент 682 00:37:52,000 --> 00:37:55,000 так что у меня есть какой-то способ уникальной идентификации их 683 00:37:55,000 --> 00:37:58,000 чтобы не быть 2 Давидс, например, в классе. 684 00:37:58,000 --> 00:38:01,000 На самом деле, я собираюсь этот флажок А.И., автоматическое приращение, 685 00:38:01,000 --> 00:38:04,000 так что база данных, MySQL, выясняет, 686 00:38:04,000 --> 00:38:08,000 что ID каждого вновь вставленной студента будет. 687 00:38:08,000 --> 00:38:11,000 Я даже не придется заботиться о том, что в моем коде, 688 00:38:11,000 --> 00:38:13,000 и я также буду выбирать что-то под индексом меню. 689 00:38:13,000 --> 00:38:17,000 Индекс выпадающие здесь первичные, уникальные, 690 00:38:17,000 --> 00:38:19,000 индекс и полный текст. 691 00:38:19,000 --> 00:38:21,000 Можно догадаться, что, может быть, пару таких вещей, 692 00:38:21,000 --> 00:38:24,000 но оказывается, что в реляционных базах данных 693 00:38:24,000 --> 00:38:28,000 Вы программист или администратор базы данных, чтобы получить превентивно 694 00:38:28,000 --> 00:38:32,000 давать подсказки к базе данных как к тому, что поля 695 00:38:32,000 --> 00:38:34,000 В таблице немного особенным. 696 00:38:34,000 --> 00:38:37,000 >> Например, в данном случае я хочу сказать, что ID 697 00:38:37,000 --> 00:38:42,000 будет первичный индекс, иначе известный как первичный ключ. 698 00:38:42,000 --> 00:38:44,000 Что это означает, по определению, является то, что отныне ID 699 00:38:44,000 --> 00:38:48,000 однозначно идентифицировать студентов в этой таблице. 700 00:38:48,000 --> 00:38:53,000 Ни один студент не будет иметь тот же ID, потому что я введения этого ограничения или этот индекс. 701 00:38:53,000 --> 00:38:55,000 Кроме того, что это собирается сделать для меня это расскажет 702 00:38:55,000 --> 00:38:58,000 MySQL, что ID является специальным. 703 00:38:58,000 --> 00:39:03,000 Я забочусь особенно о ID, так что идти вперед и делать магию вашей фантазии структура данных, в 704 00:39:03,000 --> 00:39:05,000 создать своего рода дерево. 705 00:39:05,000 --> 00:39:08,000 Обычно это то, что называется B-дерева, которые мы не смотрим на недели назад, 706 00:39:08,000 --> 00:39:11,000 но это другая такая структура данных, близкого по духу к бинарные деревья 707 00:39:11,000 --> 00:39:15,000 и пытается, что мы смотрели, но она скажет 708 00:39:15,000 --> 00:39:18,000 в базе данных этого поля является настолько важным, что я, вероятно, 709 00:39:18,000 --> 00:39:22,000 хочу быть в состоянии искать на это, идти вперед и строить некоторые фантазии 710 00:39:22,000 --> 00:39:25,000 Структура данных в памяти, чтобы ускорить поиски, так что идеально 711 00:39:25,000 --> 00:39:28,000 они постоянные времени или, по крайней мере близко к тому, как возможно 712 00:39:28,000 --> 00:39:32,000 так, что она не превратится в линейный поиск, который не будет 713 00:39:32,000 --> 00:39:34,000 Самый высокопроизводительный подход. 714 00:39:34,000 --> 00:39:37,000 В отличие от этого, адрес электронной почты, возможно, был первичным ключом. 715 00:39:37,000 --> 00:39:41,000 >> В теории, адрес электронной почты каждого человека уникальным, если вы не разделяя некоторые счета, 716 00:39:41,000 --> 00:39:45,000 но это как правило не хорошо использовать что-то вроде строки 717 00:39:45,000 --> 00:39:49,000 в качестве первичного ключа, потому что, если его цель в жизни, чтобы однозначно идентифицировать 718 00:39:49,000 --> 00:39:55,000 строк в таблице нет никаких причин использовать 255 байт максимально 719 00:39:55,000 --> 00:39:58,000 однозначно идентифицировать кого-то, если вы можете обойтись только 4 байта 720 00:39:58,000 --> 00:40:00,000 или 32-разрядный Int. 721 00:40:00,000 --> 00:40:03,000 В общем, первичный ключ должен быть коротким и краткие 722 00:40:03,000 --> 00:40:07,000 а в идеале что-то вроде целое или большой INT, который бывает 64 бит. 723 00:40:07,000 --> 00:40:11,000 Но адрес электронной почты должен быть уникальным, и одна из особенностей базы данных слишком 724 00:40:11,000 --> 00:40:14,000 , чтобы обеспечить уникальность для меня. 725 00:40:14,000 --> 00:40:18,000 При выборе уникальных здесь рядом с электронной почтой, хотя само по электронной почте 726 00:40:18,000 --> 00:40:21,000 прокручивается с экрана, я говорю в базу данных 727 00:40:21,000 --> 00:40:23,000 мне не доверяешь. 728 00:40:23,000 --> 00:40:26,000 Не дай мне вставлять в базу данных 729 00:40:26,000 --> 00:40:29,000 же адрес электронной почты два раза, даже если я идиот, и я не 730 00:40:29,000 --> 00:40:32,000 очень хорошо с моей IFS и IFS еще и фактический код PHP 731 00:40:32,000 --> 00:40:37,000 и я случайно позволить пользователю зарегистрироваться в существующий адрес электронной почты 732 00:40:37,000 --> 00:40:40,000 База данных является еще одним уровнем защиты для корректности 733 00:40:40,000 --> 00:40:44,000 для обеспечения того, чтобы дублирующиеся адреса электронной почты не до конца в таблице. 734 00:40:44,000 --> 00:40:49,000 >> Теперь, наоборот, для названия вы, вероятно, не хотят, чтобы это уникальное 735 00:40:49,000 --> 00:40:51,000 потому что тогда никогда не может быть 2 или 2 Davids Майк Смит, например, 736 00:40:51,000 --> 00:40:55,000 в базе данных, так что мы просто оставить в покое. 737 00:40:55,000 --> 00:40:58,000 Я собираюсь идти вперед и нажмите кнопку Сохранить в правом нижнем углу, 738 00:40:58,000 --> 00:41:02,000 и все выглядит хорошо, но заметил здесь 739 00:41:02,000 --> 00:41:04,000 это часть, которая на данный момент мы не будем тратить слишком много времени на 740 00:41:04,000 --> 00:41:07,000 потому что синтаксис немного сложным, и мы не должны создавать таблицы 741 00:41:07,000 --> 00:41:10,000 Все, что часто, но SQL сам по себе является языком, 742 00:41:10,000 --> 00:41:13,000 синтаксиса, для которых это прямо здесь, что я выделил. 743 00:41:13,000 --> 00:41:18,000 Что PHPMyAdmin действительно это создает веб-интерфейс для вас 744 00:41:18,000 --> 00:41:23,000 , с которой вы можете сэкономить время и не придется вручную вводить из 745 00:41:23,000 --> 00:41:26,000 довольно долгое SQL запросов вроде этого. 746 00:41:26,000 --> 00:41:29,000 >> Другими словами, если вы хотите, чтобы вручную создать эту таблицу, 747 00:41:29,000 --> 00:41:32,000 либо на этой черно-белой строки или даже в PHPMyAdmin 748 00:41:32,000 --> 00:41:35,000 С помощью этой вкладки другой, на этой вкладке SQL, где вы можете набрать в любом запросов SQL 749 00:41:35,000 --> 00:41:38,000 Вы хотите, честно говоря, это заняло бы мне минуту 750 00:41:38,000 --> 00:41:41,000 на самом деле помнит весь синтаксис, и даже тогда я бы, наверное, 751 00:41:41,000 --> 00:41:45,000 сделаны некоторые опечатки, поэтому этот инструмент является полезной вещи, как, что, и это тоже поучительно. 752 00:41:45,000 --> 00:41:49,000 Вы можете начать делать вывод, что синтаксис 753 00:41:49,000 --> 00:41:52,000 просто хорошее цветовое кодирование, что PHPMyAdmin добавляет 754 00:41:52,000 --> 00:41:54,000 для нашего визуального удобства. 755 00:41:54,000 --> 00:41:56,000 А теперь давайте сделаем это вместо этого. 756 00:41:56,000 --> 00:42:00,000 Позвольте мне перейти на вкладку Вставка на вершине, и позвольте мне идти вперед и вставить, например, 757 00:42:00,000 --> 00:42:04,000 Идентификатор скажем, на самом деле меня не волнует. 758 00:42:04,000 --> 00:42:07,000 Это будет автоматическое приращение. Я хочу, чтобы база данных справиться с этим. 759 00:42:07,000 --> 00:42:11,000 Но я буду Давид, и моя электронная почта должна быть malan@harvard.edu. 760 00:42:11,000 --> 00:42:16,000 >> Давайте пойдем дальше здесь и положить в Майк Смит другой. 761 00:42:16,000 --> 00:42:18,000 Я дам себе фамилию, а также, 762 00:42:18,000 --> 00:42:22,000 и мы должны быть ему smith@example.com, 763 00:42:22,000 --> 00:42:24,000 и тогда, где я могу идти дальше? 764 00:42:24,000 --> 00:42:27,000 Ну, это выглядит как пойти, кнопку нажать, и вуаля. 765 00:42:27,000 --> 00:42:30,000 Обратите внимание, в верхнем 2 строки вставлены. 766 00:42:30,000 --> 00:42:32,000 Это реальный запрос SQL. 767 00:42:32,000 --> 00:42:36,000 Это PhpMyAdmin инструмент выполнен для меня, 768 00:42:36,000 --> 00:42:40,000 но в конечном итоге, заметьте, если я сейчас перейдите на вкладку Обзор, 769 00:42:40,000 --> 00:42:43,000 , чтобы увидеть 2 строки в этой таблице, очень напоминают эстетически 770 00:42:43,000 --> 00:42:46,000 в таблице мы видели ранее для наших пользователей от PSET 7, 771 00:42:46,000 --> 00:42:51,000 один из которых является Дэвид Малан, один из которых в настоящее время является Майк Смит. 772 00:42:51,000 --> 00:42:54,000 Но только, чтобы быть ясной, мне не нужно использовать PHPMyAdmin, 773 00:42:54,000 --> 00:42:56,000 И действительно, вы собираетесь в ближайшее время писать код для PSET 7 774 00:42:56,000 --> 00:43:01,000 , которая автоматизирует процесс добавления строк, удаление строк, обновление строк и т.п., 775 00:43:01,000 --> 00:43:04,000 так что позвольте мне вместо этого перейти к вкладке SQL здесь 776 00:43:04,000 --> 00:43:14,000 и типа SELECT * FROM студентов, где 777 00:43:14,000 --> 00:43:18,000 электронную почту = "malan@harvard.edu". 778 00:43:18,000 --> 00:43:21,000 >> Другими словами, предположим, теперь у вас есть 779 00:43:21,000 --> 00:43:26,000 некоторые HTML форме, и пользователь вводит свой адрес электронной почты, среди других областях, 780 00:43:26,000 --> 00:43:29,000 и цель сейчас находится в PHP на заднем конце кода 781 00:43:29,000 --> 00:43:31,000 на самом деле искать другие детали этого пользователя. 782 00:43:31,000 --> 00:43:34,000 Каково ваше полное имя? Каков ваш ID номер? 783 00:43:34,000 --> 00:43:37,000 Вы могли бы написать SQL запрос, как это, выберите * от студентов 784 00:43:37,000 --> 00:43:40,000 где письмо = "malan@harvard.edu". 785 00:43:40,000 --> 00:43:46,000 И если я затем нажмите кнопку Перейти, заметили, что я должна, и действительно я, вернуть только одну строку. 786 00:43:46,000 --> 00:43:50,000 Майк исключены из этого набора результатов, так как коллекции строк 787 00:43:50,000 --> 00:43:53,000 обычно называют, потому что он не имеет тот же адрес электронной почты, как я. 788 00:43:53,000 --> 00:43:57,000 >> Теперь, опять же, здесь PSET 7 вы сможете использовать PHPMyAdmin как административный инструмент 789 00:43:57,000 --> 00:44:00,000 и педагогической инструмент, чтобы узнать свой путь 790 00:44:00,000 --> 00:44:03,000 по всему миру SQL, но в конце дня 791 00:44:03,000 --> 00:44:08,000 Вы собираетесь писать эти запросы внутри фактический код PHP, 792 00:44:08,000 --> 00:44:11,000 и поэтому следите за обновлениями в руководстве Zamyla в частности 793 00:44:11,000 --> 00:44:14,000 где вы получите тур по распределению код для этой проблемой набора 794 00:44:14,000 --> 00:44:18,000 где мы дали вам не только эстетика для страницы входа 795 00:44:18,000 --> 00:44:21,000 и хороший сексуальный логотип, который говорит CS50 финансов, но мы также дали вам 796 00:44:21,000 --> 00:44:24,000 кучей функций, которые сделают вашу жизнь немного легче. 797 00:44:24,000 --> 00:44:27,000 Мы также написал часть PSET для вас, 798 00:44:27,000 --> 00:44:32,000 Вход часть его, в частности, чтобы дать вам ощущение представитель дизайн 799 00:44:32,000 --> 00:44:36,000 что на самом деле использует контроллер, например, index.php, 800 00:44:36,000 --> 00:44:40,000 login.php и тому подобное, и тогда вы увидите PSET также имеется каталог шаблонов 801 00:44:40,000 --> 00:44:43,000 , которая имеет все свои взгляды, все эстетики. 802 00:44:43,000 --> 00:44:46,000 И поэтому общий рабочий процесс в PSET 7 будет в том, что 803 00:44:46,000 --> 00:44:49,000 Ваши пользователи посетить контроллер через URL в браузере. 804 00:44:49,000 --> 00:44:53,000 Это Контроллер содержит PHP код, который вы написали, так и внутри вашего кода PHP 805 00:44:53,000 --> 00:44:57,000 может быть несколько строк SQL вложенные в двойные кавычки 806 00:44:57,000 --> 00:45:00,000 и передается в функцию мы написали называется запросом 807 00:45:00,000 --> 00:45:03,000 , которые помогут вам общаться с базой данных без использования что-то вроде 808 00:45:03,000 --> 00:45:05,000 административных инструментов, как PHPMyAdmin. 809 00:45:05,000 --> 00:45:08,000 >> Вы сможете писать SQL заявления в PHP кода 810 00:45:08,000 --> 00:45:11,000 и вернуться PHP массив результирующего набора, 811 00:45:11,000 --> 00:45:14,000 строк, которые фактически соответствуют данному запросу. 812 00:45:14,000 --> 00:45:18,000 А так же вы сможете сделать вставки или удаления 813 00:45:18,000 --> 00:45:22,000 или обновлений и т.п., синтаксис которого очень похож, 814 00:45:22,000 --> 00:45:25,000 и вы увидите, с некоторых интернет-ссылки, с распределением код 815 00:45:25,000 --> 00:45:29,000 и от PSET упаковать себя в точности, как идти об этом. 816 00:45:29,000 --> 00:45:33,000 Поймите, в конечном счете, мы действительно просто царапать поверхность SQL 817 00:45:33,000 --> 00:45:36,000 и MySQL, но власть это действительно то, что он освобождает вас 818 00:45:36,000 --> 00:45:40,000 сосредоточить внимание на проблемы вы хотите решить, использование случаев вы хотите реализовать 819 00:45:40,000 --> 00:45:43,000 не беспокоиться совершенно так же, по крайней мере, на ранней стадии, 820 00:45:43,000 --> 00:45:47,000 о том, где и как хранить и искать базу данных, 821 00:45:47,000 --> 00:45:50,000 и это вполне буквально, где Facebook сама получила свое начало 822 00:45:50,000 --> 00:45:53,000 Использование MySQL, а затем с помощью более MySQL сервер, а затем более серверов MySQL 823 00:45:53,000 --> 00:45:57,000 до времени, пока они тогда были действительно начать думать над тем, как 824 00:45:57,000 --> 00:46:00,000 хранилище данных, как хранить вещи, даже более эффективно, 825 00:46:00,000 --> 00:46:04,000 так что даже если мы считаем само собой разумеющимся тот факт, что индексы и уникальные ограничения 826 00:46:04,000 --> 00:46:08,000 и так далее просто работать есть очень интересный разговор 827 00:46:08,000 --> 00:46:12,000 что это может в конечном итоге привести всех к, так понимаю, что мы просто царапать поверхность 828 00:46:12,000 --> 00:46:17,000 , что в конечном счете может для вас или ваших проектов становятся совсем немного больших данных. 829 00:46:17,000 --> 00:46:22,000 >> С учетом сказанного, давайте заканчивается, и мы увидимся на следующей неделе. 830 00:46:28,000 --> 00:46:30,000 [CS50.TV]