[Музыка, играющая] Дэвид Дж Маланом: Ладно. С возвращением. Это CS50. Это конец недели 8. И, как вы знаете, у нас есть довольно регулярные рабочие часы в несколько из столовых, в том числе Annenberg. И некоторые команды любезно взял несколько фотографий в последнее время. И в честь Хэллоуин, мы думали, что мы поделиться одним, что скорее поймали нас сюрприз здесь в Annenberg зале просто в ту ночь. Ваш одноклассник Яков позировала это фото, но был более забавным был на Facebook, последующий Разговор, что случилось потом. Его первая должность в ответ чтобы его фото было это. Через несколько минут, он решил к одному до себя с этим. Он пошел на то, чтобы пойти на это, а затем, еще более забавно это когда его мама подхватила. И тогда, в конечном счете, кажется, что это было просто замечательный уловка для играть, что происходит. Так что, если вы хотите чтобы увидеть Джейкоба и другие, среди них Синтия Мэн, кто за кулисами персонала CS50 зоны, направиться в этом URL и этой игре здесь. Так что без лишних слов, сегодня мы продолжить этот взгляд на веб-программирования, и фактическое создание программ что не работают в командной строке, но вместо этого работать внутри браузера. Предположительно сейчас, или очень в ближайшее время, вы идете быть в разгар реализации Ваш собственный веб-сервер, который отличается от веб-программирования. Веб-сервер в pset6 это все о написание программного обеспечения, который знает, как взять HTTP запросы от браузера, или даже от вас, человек, с программой, которая называется Telnet, и затем на них отвечать либо по выплевывая на HTML файл, или JPEG, GIF или, или даже .php файл. Но с веб-сервером, это не Предполагается, просто открыть файл PHP, что-то заканчивается на .php, а затем выплюнуть содержимое. Это должен делать что для этого файла в первую очередь? Так что говорить. Не скомпилировать его, мы сказали в понедельник, но rather-- Так, интерпретировать его. PHP это интерпретируемый язык, и поэтому один из ключевых особенностей вашей сети Сервер, хотя и реализуется нами, эта способность для вашего веб-сервера заметить, о. Это файл, заканчивающийся на .php. Позвольте мне не просто отправить его на Пользователь, как это статический контент, а дайте мне прочитать его линия по линия, слева направо, и интерпретировать его. И делать, что вам Ребята будут существенно Пунт на программу в приборе, и на много компьютерных систем, только что позвонил PHP. То есть название PHP в собственный интерпретатор языка. Так, что часть мы реализуем для Вы, и то, что осталось для вас, в конечном счете, это число штук, среди которых осуществляет поддержку для статического контента. Но теперь, и с Проблема установки семь, ты собирается начать переход к на самом деле написания кода PHP что получает интерпретировать в разговоре с задней части База данных, которая хранит информацию. Так давайте лучше понять сначала пару этих суперглобальных и как много власть вас получить из коробки бесплатно с языка, как PHP. То, что вы не имеют реализовать себя. Так, мы видели в понедельник $ _GET, который является суперглобальная, который просто PHP говорить за глобальным Переменная вы можете получить доступ в любом месте. И что внутри $ _GET? Что внутри этого суперглобальная что мы видим? Конечно статистически на хотя бы один человек знает. Что внутри $ _GET? Да? АУДИТОРИЯ: Это переменные Вы помещаете в строке запроса. Дэвид Дж Маланом: Прекрасно. Это переменные, положить в строке запроса. Так, в нашей старой примере реализовав Google, когда мы были URL, а затем знак вопроса, которая разграничивает начало HTTP Параметры, затем мы должны были д равную что-то, как д равна кошек, что бы автоматически перейти в того, что $ _GET супер глобальный для вас, из-за РНР, является ключевым из Q, и его кошек значения. Другими словами, $ _GET и все эти вещи ассоциативные массивы, хэш-таблицы из сортов, что хранения ключей и ценностей. Теперь вернемся в pset5, хэш Таблица вы, возможно, реализуется, или вам попробовать может реализовали, действительно эффективно было ассоциативным Массив, структура данных, в котором вы можете связать ключи со значениями. Но в pset5, значения были тривиально. Значение по сути истинным или ложным. Является ли слово в словаре? Итак, когда вы хэшируется такое слово, как яблоко чтобы увидеть, если яблоко в словаре, ваша функция проверки предположительно вернулся истинным или ложным. Итак, вот эффективно Значение мы получаем обратно. Но мы видели в понедельник Кратко, вы можете, конечно, связать более интересным значения, чем просто истинным или ложным с ключами, как яблоко. Вы могли фактически вернуться произвольная строка, и в самом деле, это то, что $ _GET и эти другие переменные позволяют сделать. Так $ _POST похож по духу, но если вы отправить форму по почте, Другой метод HTTP это используется для таких вещей, как кредитные карты, и личная информация, и даже двоичные данные, как фотографии, эти вещи в конечном итоге внутри $ _POST. А на самом деле для файлов как в формате JPEG и еще много чего, есть даже другой, что не здесь называется $ _FILES, а также. Так, сервер мы не будем останавливаться на слишком много, но это дает вам доступ сортировать нижних детали уровня около сам сервер, что вы используете. Cookie и сессии, при том, что, мы эффективно видим сейчас. Последнее, что мы используем для реализации Понятие корзине. Супер простой, но напомним, что у нас был этот пример здесь, считая, сколько раз вы что перед посетил эту страницу. Но сегодня, а не просто смотреть на Эффект от этого, давайте откроем Хрома инспектор, которые вы можете обычно сделать, щелкнув правой кнопкой или контроля щелкнув в любом месте на веб-странице, а затем выбрать осмотрите элемент. Или вы можете пойти через меню что мы описываем в спецификации pset6 в. И я собираюсь вкладке Сеть здесь, и давайте смотреть на мгновение HTTP трафик это идти вперед и назад. Позвольте мне сначала идти вперед и кэш Очистка Хрома. Таким образом, некоторые из вас могут быть знакомы с уже этой техники, и мы собираемся его использовать для отладки здесь. Теперь мы, как компьютер Ученые намерены начать Делая это для отладки Цели, в результате чего мы очистить кэш, Обычно, таким образом, что мы может избавиться от вещей, называемых печенье. Таким образом, вы, вероятно, вообще знакомы с тем, что печенье, или, по крайней мере, что они существуют, но то, что Ваше понимание них, как только пользователь из компьютеры, что такое куки? Да. АУДИТОРИЯ: Это немного of-- хорошо, не немного в срок информатики. Это часть данных, которые сайт отправляет вам для того, чтобы иметь возможность записывать статистику на вас. Дэвид Дж Маланом: ОК, хорошо. Так что это часть данных, которые Сервер, ставит на свой компьютер, и давайте обобщим ее даже Более того, это является ключевым value-- хорошо, что становится более точным. Это кусок Информация, часть данных, что сервер может для размещения на вашем компьютере и очень часто, сервер делает это для того, чтобы вспомнить, кто вы есть. Так, например, шансы Вы, наверное, вошли в таких сайтах, как Facebook, или Gmail, или другие, прежде чем, и вы войдите с Вашим имя пользователя и пароль, а затем после этого, в течение некоторого количества минут или часов или даже дней, сервер помнит, что вы, в самом деле, зашли. Теперь, как в том, что на самом деле происходит? Потому что вы, конечно, не перепечатывать Ваше имя пользователя и пароль каждый раз, переходе к другая страница на Facebook. Вот и получается, печенье ответ. Печенье можно придумать, как, вроде как, цифровой руку штамп, что вы могли бы получить на развлечения парк или клуб, который по существу указывает на наличие здесь до, и вы уже показано свой идентификатор в вышибалы, для Экземпляр, и что клуб или парк Теперь следует считать, что вас аутентифицировали уже. Вы уже были определены с помощью него. Так что с учетом этого, давайте откроем счетчик здесь. Позвольте мне идти вперед, я только что сделал, и очистить все мои печенья. А теперь то, что я собираюсь сделать, это держать Shift, просто на всякий случай, и насильственно перезагрузите страницу. Сдвиг просто убедитесь, что что ничто не кэшируются. А вот запрос что пошли вперед и назад. Так вот здесь у нас есть запрос, и пусть мне увеличить здесь, и многое из этого является своего рода неинтересные детали для Теперь о том, что браузер имеет автоматически отправлено, но давайте нажмите View Источник видеть необработанные заголовки. И если вы нырнули в pset6 уже, вы, конечно, признать то, как это, и, возможно, некоторые из этих других линий здесь, но что более интересно на сегодня если я прокрутите вниз, не с просьбой, но в так называемой реакции, эта линия, вероятно, выглядит знакомым. Это хорошая вещь, когда вы видите 200 OK. Видимо, это Дата и время на сервере и есть куча вещей. О, это интересно. Оказывается, когда вы используете PHP, по крайней мере, в этом сервере, сервер выплевывает то, что версия PHP вы используете. Что, на самом деле, для безопасности Цели, это не очень хорошая вещь. Но мы вернемся к тому, что в другой раз, возможно. Но теперь это сочные линии сегодня, и мы кратко видели некоторые из них, Я думаю, что с Facebook, когда мы тыкали вокруг инспектора в то время, Набор печенья является то, что посадка что маленький кусочек информации на ваш компьютер. Это заголовка HTTP это эффективно говорит ваш браузер, Chrome, IE, все, эй браузера магазин на пользователя жесткий диск, или в памяти пользователя, Ключ называется PHPSESSID, который представляет собой сокращенное обозначение для идентификатора сессии, и дать ему значение 0vlk8t, точка, точка, точка. Действительно долго псевдо случайный буквенно-цифровую строку. Это просто на самом деле большое количество, но это закодированные с букв и цифр таким образом, чтобы размер его может быть даже больше, чем только числа. И тогда, кстати, Path = /, что просто означает, что это печенье должно быть связанные с Совокупность сайте, а не просто конкретной Страница все это. Так что это, что виртуальная рука штамп. Это как если бы сервер, Facebook, или в нашем случае прибор, есть буквально письменное 0vlk8t и так далее, на вашей руке. Обратите внимание, что сервер-х, не делает это не хранения мое имя, конечно, не хранить свой пароль. Вместо этого, он по-видимому, хранения псевдо случайной информации так, что никто не может догадаться, что моя рука штамп. На стороне сервера, Между тем, сервер будет помнить, наверное, в базе данных или что-то, что пользователь, который в будущем представляет ручную печать 0vlk8t, точка, точка, точка, должна быть связана с этим частности корзина, так сказать. Другими словами, если сейчас я иду сюда и обновите эту страницу, как знает сервер что я посетил один раз? Или, если я сделаю это снова, как делает сервер знаю, что я посетил его два раза? Ну, если я сойду в этом Последний запрос, который уже в третий, что я послал в общей сложности, заметили мою просьбу сейчас. Существует еще это запросить здесь, же как и раньше, есть еще целая куча вещи, которые мы игнорировали, как и прежде, но в самый последний заголовок, это Время, потому что я был здесь раньше, является презентация это виртуальная рука штамп. Причем эта линия здесь, не установлено печенья но печенье толстой кишки PHPSESSI = 0vlk8t, это только мое браузера автоматическое Презентация этой руки печать, так что Теперь сервер, как только он понимает,, ох, это пользователь 0vlk8t точка, точка, точка, Я сейчас могу вспомнить, кто он или она и реассоциируют с этим пользователем все информация, которую я хочу, и все что информация может храниться на вас, программист, в $ _SESSION. Таким образом, чтобы было ясно, если я открываю реальный быстрый в Gedit, что сам файл, counter.php, в моей местной принимающей общий каталог как и прежде, обратите внимание, что, в самом деле, Я в конечном итоге хранения в $ _SESSION Цитата конец цитаты "счетчик" значение предыдущего счетчика, который Я получаю от этих линий здесь, что мы посмотрел на последний раз плюс один. Так под капотом, это все печенье. Это как раз то, цифровой ручной штамп ходит взад и вперед, и, честно говоря, если вы открываете в Chrome Инспектор на любом сайте Вы посетите сегодня, с супер высокая вероятность, Вы будете видеть, может быть, один, может быть, полдюжины печенье время помнить вас. И что еще хуже, если те, сайт вы посещаете у всех есть рекламные объявления, которые конечно довольно распространены сегодня, и если эти объявления приходят от какой-то центральный партии, кто-то как Google или AdWords, как они позвоните по одному из своих продуктов или другие подобные поставщики, продавать рекламу, что интересно, и, честно говоря, что это немного тревожная, о том, как HTTP работает, является то, что если у вас есть объявление встроенные в Facebook.com и Google.com, и Harvard.edu, любое количество сайтов, так что это такие что есть средний человек, который отбывает до объявления всех трех этих сайтов, получается, что печенье на домен. Так что если у вас есть объявление исходит от же компания на различных веб-сайтах, что компания может эффективно отслеживать кто вы во всех этих сайтов. Гарвардский может не знать, Вы посещаете Facebook. Facebook не может знать и Вы посещения Гарварда. Но то, что объявление обслуживание они используют, если тот домен присутствует в обоих Harvard.edu Сети страниц и Facebook.com веб-страниц, это средний человек, конечно, знает, кто ты из-за этих печенье будучи поделился по, или, скорее,, что так называемый посредник. Таким образом, мы еще вернемся к этому вопросу в последствия для безопасности их, но есть много информации хранится о вас в любое время посетить практически любую веб-страницу на Интернет, и это действительно сводится к этому очень простой механизм. Что происходит, то, если вы параноик и вы решите пойти в Chrome или IE или что-то и отключить куки? Что случилось? Да? Вы really-- вы сделали это правильно? Хорошо. Нет, идти вперед. АУДИТОРИЯ: Некоторые веб-сайты не имеют Функция без него нравится Facebook. Дэвид Дж Маланом: Да! Таким образом, некоторые веб-сайты может просто перестать работать. И в большинстве веб-сайтов в эти дни что принципиально полагаться на печенье, особенно если у них есть вы войти в, они просто сломает. Потому что считают альтернатива, если веб-сайт не имеет возможности запоминания, которые вы, и, следовательно, ваш браузер не представляя с каждым HTTP Запрос этого руки печать, эффективно сайт как собирается Facebook, иметь запрос на войти каждый штопать время Вы изменения страниц, или нажмите на ссылку, которая это, конечно, не особенно хороший пользователь опыт. Так что там тоже есть среди компромиссов. Так что без лишних слов, давайте разумеющимся, что с веб-программирования, в таких языках, как PHP, вы можете помнить, Информация, как, что в проблеме установки семь, когда вы реализуете самостоятельно E * Trade, как веб-сайт, с которым, чтобы купить и продавать акции, как вы помните, именно что пользователь купил и продал и кто он или она путем этой сессии. Но мы собираемся нужно любитель путь, чем по электронной почте начать сохранность информации вокруг. Не так ли? В понедельник, мы говорили о Фрош чаты и как в версии одного из этого веб-сайта, лет назад, все мы делали, было по электронной почте Проктор кто отвечает за очной спорта Программа, название, и пол, и действительно ли вы их капитана, и общежитие кого-то, кто это регистрации для очной спорта. Так что это не плохо, но он или она пришлось тролль через их электронную почту, сделать таблицу или что-то вроде что, чтобы держать все организовано. Так, конечно, мы, как программистов может сделать это для того Проктор. И так введите в SQL, Structured Query Language, который будет выглядеть довольно отличается как C и PHP, и вы будете погружаться в гораздо больше рук на PHP и проблема установить семь, но и SQL, или SQL, это язык, который Вы используете, чтобы поговорить с базой данных. Но то, что база данных? Ну вы думаете о базы данных, по крайней мере сейчас, как просто быть как файл Excel, или если вы Mac файла пользователь через числа, или если вы Службы Google Пользователь электронных таблиц Google, это эффективно базы данных, или действительно специально реляционная база данных. Реляционная база данных является просто что-то, что имеет строк и столбцов, и вы можете хранить любой вид Информация, содержащаяся в этих строк или столбцов. Но то, что приятно об SQL, и о фактических баз данных, а не только электронные таблицы или таблицы Google, является то, что вы можете использовать язык на самом деле выполнять запросы к вставить данные, удалить данные, искать данные, даже самое главное, и вам не должны использовать его довольно вручную как Вы могли бы, как правило, Google таблица, как это. Таким образом, в SQL, есть куча фундаментальные заявления или части функциональности встроенной в. Там в много больше, чем эти, но вы можете пройти огромное расстояние просто зная, что этот язык называется SQL имеет по крайней мере четыре заявления вы можете использовать. Удалить, для удаления данных, Вставьте, для добавления строк, Обновление, для изменения Строки и Выбор, для возвращения строк и это действительно то, что SQL делает. Он работает исключительно на строк так что, когда вы вставляете или удалить, или обновление, или выбрать то, что вы возвращение в качестве так называемого набора результатов, как массив строк. Связка строк из таблицы. Итак, вернемся в день, и по сей день, Вы можете взаимодействовать с В базе с помощью командной строки, но это не особенно интересно использовать это окно черно-белый стиль и на самом деле выполнять команды и копаться в базу данных. Графический интерфейс пользователя, или GUI, гораздо предпочтительнее, пожалуй, и так инструмент, который мы рекомендуем и предустановлена ​​для вас на приборе называется PhpMyAdmin. Это общая случайно Название этой вещи есть PHP в нем, это просто означает, что люди, кто написал эту программу сами написал в PHP. Но это, в конечном счете о введении Сервер базы данных, как MySQL сервер что у вас может быть, как вам сделать, в CS50 прибора. Так это еще не все детали здесь, чем мы должны заботиться о сегодняшнем дне, но что ключ является то, что слева сторона список баз данных что у вас есть на вашем компьютере, на CS50 прибора, или прийти окончательные проекты, которые вы, возможно, есть на третьей стороне, компании сайт или веб-сервер, который Вы могли бы платить за место. Так на левой является базы данных, один из которых является pset7 которые я позаимствовал из следующего недели PSET, а затем на верхней там заметили, что есть куча вкладок, один из которых это базы данных, SQL, статус, пользователи, экспорт и так далее. Таким образом, вы можете пойти длинный способ просто понимая, что большая часть пользовательского интерфейса находится в верхней левой колонке и в верхней вплоть там. Так что мы можем на самом деле с этим делать? Ну, давайте начнем создавать бит информации следующим образом. Предположим следующее дело обстоит так, как будет в течение нескольких дней, Вы хотите, чтобы реализовать сайт, называется CS50 Финансы, и этот сайт позволяет купить цитировать конец цитаты и продавать акции. И он собирается выяснить Стоимость этих запасов, в конечном счете, как вы увидите, поговорив с Yahoo Finance. Какой, удивительно, имеет бесплатную услугу в котором вы можете пройти в биржевых сводок как GOOG для Google, и это будет вернуть вам текущий запас от Google Цена в прошлом Несколько минут, по крайней мере. Таким образом, вы будете использовать, что, в итоге, притворяться для пользователя покупать и продавать фактическая запасы, используя виртуальные деньги, но самое первое, что пользователь увидит это Войти экране, который просит их для их имя пользователя и пароль. И так, одним из первых вызовы для вас в pset7 будет осуществлять обратный конец базы данных, электронные таблицы, если хотите, что собирается хранить пользователи имена и пароли и, в конечном счете то, что запасы они владеют, и сколько, и сколько денег у них, так куча других вещей в другие таблицы или таблиц. Итак, давайте посмотрим, как это может показаться на первый взгляд. Я собираюсь вернуться к прибор и я собираюсь идти к этому URL здесь PhpMyAdmin локальный / PHPMyAdmin и вы увидите, что это берет меня к интерфейсу именно так, как мы видели на снимок экрана, и здесь я есть дополнительную базу данных называется лекция на сегодняшний день и позвольте мне идти вперед Первый и нажмите на pset7. Я, кажется, есть несколько вариантов, один для нового, для создания новой таблицы, и ссылку на пользователей, которые представляет собой таблицу, я уже создал. Так что стол? Так что, если вы использовали Excel до, и если у вас есть используемые номера или Google Электронные таблицы, вы откроете окно и вы получите целый букет из строк и столбцов, но тогда вы, как правило, имеют листы по дну, или отдельных вкладках. Вы можете думать о каждом лист в виде таблицы таким образом, чтобы база данных, в конечном счете, является комбинацию одного или нескольких таблиц, одна или более листов, в Мир нормальной таблицы. Итак, позвольте мне идти вперед и нажмите на эту таблицу что я Premade, называемые пользователи, также известное, Таблица базы данных. И если я прокрутите вниз здесь, дайте мне уменьшить немного, это то, что PhpMyAdmin говорит нам внутри этой таблицы прямо сейчас. Это немного запутанным на первый Взгляд из-за интерфейса не самая красивая вещь в мире, но что интересно, эта часть здесь. ID, имя пользователя и хеш. Заранее, и вы будете руками это в проблему установить семь, мы даем вам файл, содержащий супер небольшой таблицы базы данных, заимствованные на самом деле от хакерской издания из проблем установить два, внутри которого есть шесть рядов. Один для Белинды все в вплоть до одного для Zamyla, и заметить, слева от тех, имена пользователей уникальные идентификаторы, такие как один, два, три, четыре, пять, шесть, целые числа, а затем вправо хэши. И если, шансы, что вы не делаете проблема хакер издание установить два, но хэш, как зашифрованный пароль с некоторыми оговорками. И так, что вы видите здесь зашифрованные версии все шесть наши пароли от проблемы установить два в хакерской издание. Теперь слева находится лишь некоторые GUI вещи, редактирования эту строку, копируя эту строку, удаление эту строку. Но, что интересно Теперь заключается в следующем. Я могу на самом деле начать экспериментировать с этой таблицей. Так что, если я иду и нажмите SQL Вкладка, я получаю эту большую текстовое поле. И это не то, как мы собираемся сделать это, когда на самом деле написания кода. Чтобы было ясно, PhpMyAdmin это всего лишь инструмент, это собирается давайте копаться в базе данных и давайте экспериментировать с запросами. Так, например, предположим, Я выполнить именно это. Выбор, который является одним из тех, ключевые слова я упоминал ранее, звезда, который представляет все столбцы в таблице. Из того, что таблица? Ну, пользователи. И обратите внимание, есть в этом странно конвенции в SQL где вы на самом деле использовать назад клещей, как правило,, не одинарные кавычки и не двойные кавычки когда вы говорите о таблицах имен, так обратно цитата вещь на топ левая рука на клавиатуре наиболее скорее всего. Итак, позвольте мне идти вперед сейчас и просто оставить, что в одиночку и прокрутите вниз и нажмите кнопку Перейти, и мы на самом деле происходит, чтобы увидеть то же самое. Мы только что выполнили SQL запрос говоря выделить все звезды от стола называется пользователей, и то, что вы получаете обратно это. В конечном счете, мы сможем сделать что то же самое в коде, но сейчас все, что я хотел у было видеть его в своем браузере. Ну давайте что-то делать немного отличается. Позвольте мне вернуться к закладке SQL, и давайте просто скажем, что, что? Zamyla потерял все о ней деньги, и, следовательно, это Время для нас, чтобы удалить ее, как пользователь. не Она больше не войдя в. Так что я собираюсь сказать, удалять из-- хорошо, поддерживать капитализацию для консистенции, удаление из пользователей, где. И так, мы можем иметь эти предикаты, или это классификаторы, в конце своего выступления где и как я мог удалить Zamyla? По ее имя Zamyla, так колонка, один из столбцов был назван, так где имя = "Zamyla". И здесь я использую двойной котировки или одиночные кавычки, Вы используете только задняя клещей, когда говорить об именах, например, таблиц или полей. И позвольте мне нажмите Go здесь. А теперь, веб-страница будучи немного встревоженный. Или, вы действительно хотите, чтобы выполнить удаление из пользователей, где имя равнозначно Zamyla? Да. Так что теперь, если мы вернемся к моему столу щелкнув мышкой пользователей, обратите внимание, что Hm. Я попал впросак. И в самом деле, я как бы нажал прочь так быстро Вы даже не видели Сообщение красный ошибке, возможно. Что я сделал не так? АУДИТОРИЯ: Вы не должны капитализировать ее имя. Дэвид Дж Маланом: Да, я капитализируются ее имя, но ей username-- на самом деле я сделал пару ошибок, не так ли? Один из них, ее имя пользователя является zamyla, в нижнем регистре Z, и имя столбца имя пользователя, не назвать, так что давайте сделаем это снова. Позвольте мне идти вперед и удалить из пользователей, где Имя пользователя равен цитата конец цитаты "Zamyla". Хорошо? Так что это выглядит немного лучше, пусть мне идти прокрутите вниз и нажмите кнопку Перейти. Он по-прежнему собирается кричать на меня, чтобы быть уверенным. Я нажимаю Да, и сейчас мы видим, откровенно это произошло, на самом деле быстро, менее чем за один Второй, конечно, это именно запрос, который был выполнен. Чтобы подтвердить, позвольте мне нажмите пользователей и в самом деле теперь Zamyla ушел. Теперь давайте делать противоположное. Предположим, что Гейб хочет зарегистрироваться на сайте. Что SQL запросов, что Команда, которую я мог бы ввести, чтобы добавить Гейб? Ну, это довольно просто. Вставьте в пользователей, и теперь это становится немного загадочным. Мне нужно, чтобы указать, чтобы сервер, какие поля я хочу назначить. Я на самом деле не волнует, что Гейба ID число, так что я собираюсь пропустить это. Я вместо собирался сказать Имя пользователя, хэш, а затем значения я хочу поставить там будет Гейб. А потом его хэш, я не знаю. Так сейчас я собираюсь Оставим это большая делать. Мы вернемся к что в набор проблема спец, как вы на самом деле сделать это. Так заметить, опять же, синтаксис. Вставьте в имени таблицы, а затем скобки список полей, столбцы вы хотите добавить Значения в и затем просто точно такой же порядок слева Право значений, которые вы хотите добавить, и это просто упаковка, потому что текст немного долго. Так что теперь позвольте мне нажмите кнопку Перейти. Одна строка вставляется. И теперь, если я вернусь в пользователи, что интересно является то, что не только является Гейб сейчас в базы данных, что, по-видимому его ID? Ну, это семь. Почему это семь лет, когда я не добавить его? Так что это тоже является одним из особенности вы получаете в базе данных. Много построено в функциональности. Получается, что когда эта таблица создана, Я предварительно настроен это автоматически назначить идентификатор таким образом, что он увеличивает. Так что, если вы когда-либо заглядывал, и посмотрел на то, что ваш Facebook ID число, в эти дни, это не реально вещь сделать, но Facebook в качестве API, Интерфейс прикладного программирования, в котором вы можете вернуться целая куча данных о сами, о своих друзьях, и ваши соединения. И то, что раньше было вроде круто, еще в день, было смотреть на то, что ваш Facebook ID номер был. Марк Цукерберг, Например, это три так как он был автором сайта. И как гласит история, он создал два тестовых учетных записей, пользователи одной и двумя, который он затем удаляются. И так, Зак, как и его имя пользователя на Facebook, это ID номер три, и у всех нас есть цифры намного больше, чем три эти дни. В самом деле, в некоторой точке Facebook отошли от даже с помощью INT, который это 32-битное значение, чтобы с помощью следующий шаг, по существу долго долго так что они могли разместить даже больше пользователей при регистрации. Так весело небольшой исторический факт. Так что это просто Основной синтаксис, с которой мы можем выполнить несколько запросы, но мы можем на самом деле сделать кучу больше вещей с SQL. И вы увидите, в итоге, в задаче установить семь что вы должны сделать Ряд конструктивных решений, среди них будет какие типы данных, чтобы использовать. Так же, как в C, имеются данные типы в базе данных, как MySQL, и типы данных, вы должны выбрать от включают эти поля здесь. Чар, VARCHAR, Int, большой интервал, в десятичной и дата время, и многие другие. Так что давайте на самом деле сделать это. Давайте представим, что мы не сделали Рука вы стола участника и позвольте мне идти вперед и создавать, для я, в лекциях database-- на самом деле, дайте мне идти вперед и удалить таблица у меня здесь уже так что мы можем на самом деле создать этот. Упс. Я собираюсь отказаться от этого стол, и теперь я собираюсь идти снова к лекции базу данных здесь, Я собираюсь создать таблицу называемые пользователей и давайте просто сделать три колонки изначально и нажмите кнопку Перейти. Теперь, по большей части, опять же, это просто с помощью этого графического инструмента под названием PhpMyAdmin, и что мы делаем сейчас создает таблицу. Так что это как идти Файл, Новый, и создание нового файла Excel. Так что это задавать мне мало вопросы, слева направо, что имя первого столбца, а затем имя второго столбца, и имя третьего. Так что давайте воссоздать это. ID, а затем имя пользователя было одно, а затем хэш был другой. Так что следует тип данных быть сейчас на поле, как ID? Вот весь перечень типов данных доступны для вас в базе данных, и сейчас давайте просто пойти с междунар. 32-битное значение, я не думаю реально я будет иметь более 4 млрд пользователи в моем счете, в моей службе, так что я собираюсь продолжать двигаться к следующему вопросу. Я не собираюсь указывать Длина или значения, это не применимо здесь для междунар, как таковой. И теперь я могу указать, по-видимому, по умолчанию Значение, которое я не буду указывать. Сортировки, я не знаю, что это такое. Атрибут. Теперь мы на самом деле есть проектное решение. Таким образом, есть несколько полей здесь не все из которых применимы, но без знака просто означает, что? Это интервал должен быть? Просто неотрицательным. Поэтому он должен быть 0 на эксплуатацию. Нет, я не собираюсь проверить, потому что Я хочу, чтобы каждый пользователь имел идентификатор, она не может быть пустым. А потом, мы получаем еще немного интересные дизайнерские решения, как это. Мы вернемся к этому чуть позже, но то, что еще одной особенностью данных является, то, что вы можете сказать сервер баз данных идти вперед и оптимизировать себя, свою RAM и дискового пространства, так, что выбирает, и вставки, и удаляет и обновления очень быстро. Сравните это с pset5. Если вы хотели посмотреть что-то в хэш-таблице, которая Вы думаете о качестве базы данных, кто должен был сделать все работать для принятия ваш хэш-таблицы быстро. Это как, очевидно, вы. Не так ли? Вы должны были положить в все время штрафа настройка вещи, получая хэш-функцию Право, выясняя, как многие ведра иметь. Но то, что хорошо, снова, о база данных Вы просто Пунт все это с другими людьми кто думал, что это через вас, и то, что Я собираюсь сказать здесь под Индекс является то, что мой ID поля будет основным способом идентификации пользователей в этой базе данных. Я не собираюсь думать из Zamyla как Zamyla, Я собираюсь думать о ей, как число 6. Почему это, пожалуй, лучше интуитивно думать и модели каждый из ваших индивидуальных строк, используя число вместо чего-то как струна, как в Zamyla или Гейб или больше строк по-прежнему? Да? АУДИТОРИЯ: ID уникален? Дэвид Дж Маланом: снова сказать? АУДИТОРИЯ: ID уникален? Дэвид Дж Маланом: ID является уникальным, но suppose-- как в случае в целом с именами пользователей, предполагаю, Я также сказал, что может быть только один Zamyla в мире, и только один Гейб. Я мог наложить уникальность ограничение на строки, тоже, если я хотел. Так не плохая мысль. АУДИТОРИЯ: Более безопасный. Дэвид Дж Маланом: Более безопасный, почему? АУДИТОРИЯ: Вы не можете сказать, какие это который, как и в пользователем. Дэвид Дж Маланом: ОК, вы не могу сказать, какой пользователь есть что таким образом есть Конфиденциальность аспект к нему, особенно, если идентификаторы возможно появляясь в URL. Так, что, что мог, какую работу, тоже. Другие мысли? Да? АУДИТОРИЯ: Легче выполнять операции на междунар. Дэвид Дж Маланом: Это реальный футболист. Это просто более эффективным, или проще для компьютера, для выполнения операций на целое число. Не так ли? INT гарантированно быть 32-битным, в то время как Zamyla длинна несколько символов, Габриэль долго еще несколько персонажей, Дэвенпорт действительно долго, и поэтому не особенно эффективно использовать Строки для сравнения значений и смотреть для полей и обновления полей, если вы можете уйти с помощью только одного целого. Всего 32 бит. Так имена пользователей, тоже так, не должны быть уникальными, хотя они, вероятно, следует быть, и даже в этом случае тоже пользователь может быть разрешено изменить свое имя пользователя. Итак, давайте теперь оставить это как Основным средством идентификации пользователя. Это говорит базу данных идти вперед и оптимизировать себя так что взгляд поднимаю на ID супер быстро. AI, ужасно по имени, просто означает автоматическое приращение, и это проверка коробка нам нужно проверить указать, что поле ID, чтобы автоматически обновляться для меня, а затем я собираюсь прокрутки вправо здесь и, честно говоря, я не очень заинтересован в любой более из этих полей. Конечно, не сегодня. Так что я собираюсь вернуться сюда, в первую колонну, где Мне нужно указать имя пользователя и хэш, и давайте по крайней мере, внимания Второй сейчас. Int, вероятно, не правильный вызов, так что имеет смысл, возможно? АУДИТОРИЯ: Текст. Дэвид Дж Маланом: снова сказать? АУДИТОРИЯ: Текст. Дэвид Дж Маланом: Текст? ОК, я услышал текст. Что еще? Мы вроде есть куча вариантов которые являются текстовые в природе. Так что, когда, и почему, сделать Вы используете некоторые из них? Ну голец, вопреки тому, что вы могли бы думаю, не один символ. Это определенное количество символов. Так что, если мы знаем, что все имена пользователей должны быть, как восемь персонажей, как раньше часто встречается у пожилых компьютерные системы, я мог бы сказать символ и тогда я мог сказать 8 здесь. Вот когда третья колонка становится применимо при создании таблицы. Но это вид раздражает потому что некоторые люди могли бы хотите иметь более длительный имя пользователя чем из восьми символов, некоторые люди, возможно, захотите имеют более короткий логин, так почему обязуюсь на определенный номер? Почему бы не переменную количество символов и просто сказать, что максимальная длина имени это, я не знаю, вроде 64 символов. Я не могу думать ни о каких друзей, которые есть имена длиннее 64 символов, и даже если это слишком короткий, то вы могли бы конечно поднять его вверх произвольно. Так VARCHAR является переменной количество символов. Текст не плохой инстинкт, и откровенно, что-то делает то, что он говорит, но текстовое поле может быть как 65000 байт, по крайней мере. Это, вероятно, слишком для поле, а на самом деле, да, 65535. Это, вероятно, слишком для назвать, поэтому мы будем придерживаться, как правило,, с типа VARCHAR для текстовой поле и хэш тоже. Hash, оказывается, мы могли бы сделать VARCHAR а или что-то подобное, но мы не будем фокусироваться сегодня на криптография там и цифры что мы могли бы на самом деле хотите использовать для его длины. Но позвольте мне прокрутите вниз вправо. Вы можете иметь только один Основной индекс для таблицы, но я хочу, чтобы применить любой из них, Теперь, чтобы имя пользователя, вы скажете? Что следует имя пользователя основываться на неопределенное Понимание этих четырех вариантов? Просто своими именами? АУДИТОРИЯ: Уникальный. Дэвид Дж Маланом: Так уникальный, не так ли? Вот и получается, что не только мог Вы скажите базу данных, заранее, это является основным способом выявления полей. Вы также можете сказать, что это будет уникальная поле. Это не собирается быть вещь Я полагаюсь на, но я хотел бы базу данных в по существу есть что, если условие, так что если я когда-нибудь пытались зарегистрируйтесь два пользователя с тем же именем, база данных утончаются не собирается позволить мне. Я, возможно, дополнительный код в PHP, который предотвращает столько, но база данных тоже может обеспечить что это никогда не случится. Теперь, как в сторону, тем более, что Вы думаете о конечных проектов, иметь в виду индексацию и полный Текст на самом деле довольно полезно. Если у вас есть большие базы данных, а не с десятки, но с сотнями или тысячами или даже миллионы полей, вы можете Также скажу базу данных в заранее это поле я собираюсь чтобы быть поиск на много. Может быть, его имя пользователя, может быть, это био, если вы делая Facebook-как сайт, который есть пункты о том, что пользователь позволили чтобы сохранить, и если вы хотите, чтобы Честно базу данных заранее Я собираюсь быть поиск по этому полю много, но это не обязательно уникальные, Вы можете указать создать мне индекса. Или, можно сказать также позволяет мне сделать рода произвольных обысков, как Command или управления F, как и вы могли бы в текстовый процессор, так что вы могли бы выглядеть произвольные строки или подстроки в этой области. Другими словами, мы получаем до точки в семестре где вы не должны беспокоиться о как эффективно реализовать вещи. Вам просто нужно знать, о том, что проектные решения, чтобы сделать так, чтобы вы используя правильные инструменты для торговля, чтобы максимально задействовать возможности что другие люди строили для вас. Таким образом, чтобы резюмировать, первичная должны только есть один, вы можете иметь только один, и это-то и дело вы совершением используя для идентификации поля однозначно. Уникальным является просто близки по духу, но Вы могли бы только время от времени использовать его, но вы хотите база данных навязать его. Индекс просто означает, превентивно ускорить в будущем так что я могу искать вещи в этой области. А потом полный текст, как правило, для пункты, или эссе, или крупные тела текста, где вас Кроме того, можно есть дикие карты как эквивалент звезды. Право. Так что было отчасти много, чтобы все сразу. Давайте посмотрим, если мы не можем перегонять пару из этих функций а затем что-то построить довольно просто, но мощный. Так среди других проектные решения вы находитесь в конечном счете, будет иметь в вместе линии механизмов хранения. И позвольте мне упомянуть об этом в ожидании окончательных проектов, и предвкушение давайте say-- не давайте сделаем это. Давайте строить это мало Сначала приложение. Я собираюсь пойти в моем терминале окно, и здесь не только counter.php, которые мы сейчас собираемся чтобы избавиться от уже как не уместны, но у нас есть целый букет справочников и это будет очень близки по духу к тому, что вы увидите в проблеме установить семь. Таким образом, мы имеем три каталога включает в себя общественный и шаблоны, которые это точно, где мы остановились на Понедельник с нашей всей MVC парадигмы. И Напомним, на публике будет идти любой файл, который я хочу, чтобы пользователи на самом деле v смогут посетить в их браузер через URL. Шаблон. Что мы вкладываем в шаблонах? Какие вещи? Там было не так много, но пару Файлы по крайней мере, в понедельник. Да. АУДИТОРИЯ: Колонтитулы? Дэвид Дж Маланом: Колонтитулы. Поэтому у нас есть что-то подобное и сегодня. У нас есть еще несколько файлов, но Footer я вижу, заголовок, я вижу, а затем кучу других файлов. Так что это эквивалентно мнение о V MVC, который, снова, будет немного больше ясно в проблеме установить семь, но это всего лишь папка Я положить много моих эстетики. Много моих HTML, много моих форм. Между тем, включает в себя, является еще одним Каталог, который имеет эти три файла и давайте бросим быстрый взгляд на них. Я собираюсь идти вперед и открыть config.php. Как выясняется, много как ранее в перспективе, Вы резкое включены CS50 точка ч с pset7. В современном Например, вы идете сделать эквивалент, что с требующие заявления которые эффективно включает в себя эти несколько строк. Таким образом, чтобы было ясно, что это файл с именем config.php. И обратите внимание, что он делает. Это, по-видимому что-то делать загадочные, что включение сообщения об ошибках так что вы можете увидеть их в браузере. Это, то, по-видимому, требуя двух других файлов так что это как #include в C, и то это одно мы видим, и мы полагались на это включается что корзина как функциональность. Это означает, печенье волю направляется назад и вперед. Так почему это интересно? Ну, если мы вернемся к этому каталог и открыть, например, constance.php. Обратите внимание, что PHP делает поддержки константы, это не совсем так #define в C, Вместо этого, вы в буквальном смысле говорят определены, и уведомление что я сохранены заранее четыре константы в этом файле. Один для сегодняшней базе данных, для мой пароль, для своим именем, и для имени сервера. Так они на самом деле происходит, чтобы быть очень похожи на проблемы установите семь. И, наконец, и это то, где я нахожусь собирается получить некоторые интересные функции от персонала, в functions.php это куча кода мы написали, и я украл часть этого от проблем установить семь на сегодняшний день, что делает кучу вещей и давайте просто посмотрим на один из них в частности. Эта функция здесь, запрос, будет Функция PHP мы называем для выполнения SQL. Минуту назад мы были с помощью PhpMyAdmin, но это только для рода учебных целях и диагностических целях и забывая свой набор баз данных. Когда вы на самом деле использовать ваш базы данных, вы, человек, явно не собирается чтобы быть подтягивание паутину страница каждый раз кто-то регистрируется. Вы собираетесь писать код, который Вставки и удаляет пользователей по требованию, и мы собираемся это сделать путем функции запроса. Если я сейчас прокрутите вниз, есть будет еще несколько функций. Перенаправление собирается быть функцией, которую мы написали для вас, что позволяет отправить пользователя на другой URL, и оказывать является функцией, совсем как мы видели в понедельник, что на самом деле делает Шаблон, но больше на них в форма собственного ходьбы pset7 через. Сейчас, давайте идти вперед и делать это. Отпусти меня в моей лекции таблице и видеть, что нет в настоящее время ничего здесь прямо сейчас, и позвольте мне также пойти в моем общем каталоге, где есть только один файл, index.php. Этот файл, как представляется, супер просто на данный момент, это выглядит так же, как это. Очень нравится, как мы остановились в понедельник. Я требуя этот файл, config.php, который находится в включает в себя каталог, в котором в две точки, мои родители, а затем он просто оказание этот файл. Так что же такое этот файл? Откроем в моих шаблонов form.php, и мы увидим, это. Супер просто, по-видимому, эта форма собирается представить на $ _GET или $ _POST. Быстрая проверка здравомыслие. Буквально визуально искать файл. Метод равна пост. Так что не собирается использовать URL, как Google делает, он собирается разобраться в прятки Информация позади сцены и это собирается представить Файл называется register.php, и вот файл мы еще не написана но то, что это будет чтобы выглядеть это. Если я иду на отдельную страницу Это что локальный / index.php выглядит. И снова, сервера просто предполагая index.php. Enter. Так вот где мы на, и то, что я хочу сделать, будет иметь возможность ввести вещи как Давид, а затем мой номер телефона, который будет говорить, 617-555-1212 сейчас, зарегистрируйтесь и теперь register.php не был найден. Поэтому мне нужно, чтобы реализовать это. Так что давайте быстро взбить что-то вроде этого вверх. Отпусти меня в мой общий каталог и сделать Gedit из register.php, и теперь я собираюсь идти вперед и начать режим PHP, как мы это делали в понедельник, и тег близкого РНР, и давайте делать несколько вещей. Так что, мне известно, от написав эту форму, что я хочу, чтобы проверить на следующем. Если он пуст, то, что пользователь набрали в в поле имени, то Я собираюсь что-то сказать как извиниться отсутствует имя. Извиняюсь, тем временем, не встроенный в PHP вещи, это функция, которую мы написали в functions.php для pset7 так что у вас есть доступ к нему. Иначе, если другое поле пуст, номер, то я собирается извиняться перед Пользователь и сказать недостающее число. Сохраните этот файл. Теперь давайте вернемся к моему браузере вернуться на форум, попробуйте еще раз. Регистрация. Хорошо. Ничего не произошло, и это хорошо. Я не получите сообщение об ошибке. Но если вместо этого, давайте Перезагрузить страница, а не предоставлять ничего. Черт возьми. Сделайте это. Регистрация. Что я сделал не так? Если пусто, имя $ _POST. Снова сказать? О, конечно. Я забыл самую важную часть, которая это требует ("../ включает / config.php."). Мне нужно, чтобы иметь доступ к извиниться функцию, которая Поэтому ничего не происходит. Функция на самом деле не существует. Итак, давайте попробуем это снова. Давайте перезагрузите страницу, нажмите Регистрация. Хорошо. Там это. Так, на выходе мы находимся видя вот результат вызова извиниться Функция, супер просто, и это просто выводит все Я даю его в качестве аргумента. Ладно, так что давайте сотрудничать. Давайте обеспечить мое имя как Давид, зарегистрируйтесь, отсутствует номер ОК давайте предусматривают, что тоже. 617-555-1212. Регистрация. Хорошо. Так все хорошо сейчас, просто ничего Интересно, что происходит. Так что теперь давайте сделаем что-то более Интересно случиться, как это. Пусти в PhpMyAdmin, и давайте на самом деле создать таблицу с именем пользователей, Я собираюсь дать ему три колонны, и я буду быстро создать идентификатор, а затем назвать, а затем номер, и поле ID я собирается покидать качестве междунар. Поле имени я собираюсь оставить как VARCHAR, и мы скажем 64, несколько условно. Я собираюсь номер сделать, вы знаете, что? Мы собираемся в Поддержите нас цифры здесь, так что я собираюсь сделать что-то как гольца, а затем 10 символов макс для кода города а затем семь цифр. А потом сюда, я собираюсь указать автоматическое приращение этой области, сделать это первичный ключ, и Я собираюсь идти вперед и не проверить любой из этих других ящиков. Поэтому, когда я теперь, наконец, нажмите кнопку Сохранить, и я возвращаюсь к моему столу пользователей, это то, что он выглядит как если бы я Теперь нажмите структуру новой вкладке. Так что это, чтобы быть ясно, это просто способ PhpMyAdmin в сказать свое таблицу базы данных имеет идентификатор, имя и номер с этих конкретных конфигураций и мы будем игнорировать остальные поля есть на данный момент. Так что теперь я хочу сделать? Так что, если я иду сейчас в моей Исходный код, если все хорошо Я хочу, чтобы выполнить следующий запрос. Вставьте в, и я могу только говорят пользователи я не строго нужны те обратно клещей, если это не опасное слово как пользователей. Я собираюсь сказать имя, число, а затем здесь я не собирается жесткий код цифра значений еще. Я собираюсь поставить два знака вопроса. И это соглашение на многих языках в результате чего, если вы хотите иметь заполнитель для строки Вы собираетесь использовать вопрос знаки, по причинам, мы будем вернуться, чтобы поговорить о безопасности, и здесь Я собираюсь пройти в те два поля прикреплять имя, а затем разместить ряд, и сейчас сохранить файл. А теперь я собираюсь спуститься здесь супер просто сказать rendersuccess.php, который будет еще один шаблон. Я собираюсь создать очень быстро. Geditsuccess.php и я просто хочу, сказать H1 успеха в этом файле. Хорошо. Так что теперь, давайте вернемся к Браузер, где я побывал раньше. Давайте пойдем дальше и подтвердить я написал Давида, я написал в номер телефона, зарегистрируйтесь. Черт возьми. Что я сделал не так? Так я вижу ошибку здесь, вам есть ошибка в вашем синтаксисе SQL. Позвольте мне перейти к Gedit, пусть мне вернуться к register.php, и что же я пропустить что было важно в последний раз? Мне нужно это. Вы хотите знать, что кроме от заметив раньше, но мне нужно это. Так что теперь давайте вернемся, и это было полезно увидеть в браузере и вот почему в config.php мы плевать на ошибки. Давайте пойдем дальше и перезагрузите, нажмите кнопку Продолжить, успех. Так что теперь позвольте мне перейти к моим В базе здесь и нажмите на пользователей, и просматривать, и обратите внимание, я сейчас есть Давида в моей базе данных здесь. Теперь технически этот сайт еще не в общественном Интернете, так что я не могу иметь друга люди в положить здесь, но если я сейчас хотел, для Экземпляр, отправить себе текстовое сообщение. Давайте выходить на конечности здесь и посмотреть, если это на самом деле работает. Я собираюсь идти вперед и удалить эту строку и мы будем размывать этот в видео позже таким образом, мы не должны Весь Интернет текстовых меня, и мы теперь будем идти до Браузер и мы будем переходить на лекции и мы будем вводить в разные Количество здесь, зарегистрируйтесь, успех. Так что теперь, мой собственный номер это предположительно в база данных, и теперь самое интересное. Давайте реально использовать PHP, чтобы сделать что-то программно, либо с помощью команды линия или откуда-то еще, и на данный момент я просто собираюсь держать его просто и я собираюсь идти в мой каталог здесь и сделать следующее. Gedit скрипт скажем, мы будем называют его текст, #! / пользователь / бен / ENV PHP, как мы видели в последний раз. PHP. Теперь я собираюсь требуют включает config.php, хотя это может вызвать небольшую ошибку. А теперь я собираюсь идти вперед и сказать, Строки, запрос, выберите звезда от пользователей, а теперь вот я собираюсь сделать технику с прошлого раза на каждые строк как подряд. И я собираюсь сделать что-то простое. PRINTF скажем зовут это, и число это, обратный слеш н. А теперь я собираюсь пройти в строке цитировать конец цитаты имя, и номер строки цитата конец цитаты, а теперь давайте идти вперед и моя окно терминала CHMOD это + х, чтобы сделать этот сценарий называется текст исполняемый. А теперь давайте запустим текст. Итак, прогресс. Так что я теперь написано Сценарий командной строки, на языке, называемом PHP, что, из-за этого требуют линии, имеет доступ ко всем этим конфигурации константы, которые я оговариваются. Имя базы данных и так далее. В самом деле, лишь бы быть ясно, что это не случайность, позвольте мне идти вперед и зарегистрироваться, очень быстро, кто-то еще, как Роб и даст ему номер 555-1212. И теперь, если я запустить скрипт снова, обратите внимание на питание о том, что мы делаем с базой данных. Теперь я сразу видно, что Два других строк в моей базе данных. Так что теперь давайте попробуем что-то сделать даже любитель внутри, и это часть мы в не проверял заранее, так в последний раз я сделал это дела пошли ужасно криво, у нас есть видео с этой целью. На самом деле, да, смешно сторону. Так в последний раз, в лекции, как два года назад, мы решили, я решил, чтобы быть Все это было бы прекрасной идеей динамически генерировать сообщения в Класс, используя весь CS50 базы данных Студенты, которые дали нам их номера и их носители для мобильников, которые вам может вспомнить из pset0, как рассуждать, то получается, У меня был недочет в моей программе и сделал пару ошибок в 2012 году, я думаю. Причем, один у меня был цикл, что сделал именно такого рода вещи, итерации по базе данных, получать имя из базы данных, назвать из базы данных, а затем на каждый итерация этого цикла я послал электронное письмо. Но вместо того чтобы отправить одну электронную почту, я отправлено одну электронную почту первой итерации, и два письма вторая итерация, послал три письма вторая итерация, которая как вы, возможно, помните из нашего обсуждение асимптотической записи это большой вывода плохо, как п в квадрате это сколько сообщений я послал, но это не было даже письма это было текстовые сообщения. И, как вы знаете, посещаемость не супер высокой к концу семестра и поэтому я думал, что это было бы мило на Пора сказать, "Почему ты не класс?" В текстовом сообщении I отправлено на весь класс, и это было забавно, нравится 50% класс, но остальные 50%, некоторые из которых волновался, я послал невероятно апологетические сладкие ноты чтобы сотрудники извиняясь за пропустив лекцию просто в этот раз, не так ли? Так что бы ужасно криво. Так что в этом духе, давайте попробуем это снова, но только с моим номером. Заранее, в functions.php, Я написал эту функцию здесь. Это называется текст, и это принимает три аргумента. Ряд, перевозчик, и сообщение. Я использую переключателя заявление, в котором чудесно PHP принять строк, а не только целые числа, и я не реализовали вся поддержка для этого еще, Я только что сделал AT & T и Verizon. Потому что получается, что с этих носителей у них есть письмо, в SMS-шлюзов, в котором вы можете на самом деле Отправить по электронной почте на адрес как номер телефона в vtext.com и если пользователь не заблокирован сообщения, он будет идти через является текстовым сообщением. Теперь, чтобы сделать это, я буду иметь, чтобы добавить одно поле очень быстро в свою базу данных. Я собираюсь пойти в моя структура, и я собираюсь идти вперед и добавить поле в конце таблицы. Давайте нажмите Go, и я буду называть эту носитель и на данный момент я собираюсь оставить это как бар текста, но мы можем быть необычным в будущем. Я собираюсь идти быстро в моем столе, и я собирается избавиться от Роба, потому что это подделка номер, Я собираюсь пойти в режим редактирования здесь, и я собираюсь менять свой носитель вручную быть Verizon, который его есть, и сейчас здесь. Давайте делать быструю проверку вменяемости. Давайте откроем наш текстовый сценарий, который выглядит следующим образом, перевозчик% с. Мы делаем гораздо больше ошибке проверки, чем я сделал в 2012 году, носитель. А теперь, я собираюсь пойти вперед и повторно запустить скрипт. Хорошо. Перевозчик Verizon, а это значит, Теперь, надеюсь, что я могу сделать только это. Правильно в этом году, будем надеяться, здесь мы идем. Так внутри этого цикл, я собирается не только иметь эту Printf, Я также буду называть текст и Использование этой функции вызова был он принимает ряд, Носитель, и сообщение. Итак, давайте посмотрим, количество собирается быть строки сметы конец цитаты "номер" ряд цитата конец цитаты "Перевозчик", и последний был сообщений. Не испортить в этом году, точку с запятой. Хорошо. Пальцы скрещены. Давайте посмотрим, если это работает. Ладно, так. Здесь мы идем. Давайте разблокировать телефон, скрестите пальцы, черт побери. Неопределенная переменная may-- о ждать, ждать, ждать, очень быстро. Очень быстро, очень быстро. Это полностью стоит. Позвольте мне взять, позвольте мне захватить, э-э-о. Спасибо, тексты есть начал с кем-то еще. Позвольте мне идти вперед и открыть реальный быстро, dropbox.php / почты здесь. В режиме ожидания. Стоит того. Загрузки. ОК, источник src8m. Хорошо. Вам нужно больше одной строки здесь. О вот она, это в Фрош Чаты, это в реестре в три. О, привет, Марго, спасибо Вам большое. ОК, и я пропускал эту линию. Итак, позвольте мне быстро захватить эта строка кода, который включает в почту или библиотеку что я на самом деле хочу использовать, Я быстро собирается вернуться в функции, Я собираюсь поехать в верхней части этого подать и требуют этот файл, а, и теперь я собираюсь действительно пересечь мой пальцы, когда я вернусь в команду Линия скрипт, который находится внутри сегодня локальный каталог хозяин. Запустите текст. Enter. Почта. В режиме ожидания. В режиме ожидания. Почта. О, хорошо. Здесь мы идем. Почта получает новый PHP почтовой программы. Я сделал это право? Черт возьми. To-- ой, подождите, подождите, подождите. Ожидание. Я обещаю, что это будет так стоит. Адрес. Вот почему я не делаю примеры прямо перед классом. Тьфу. Следующие получатели не удалось. Давайте попробуем одну вещь. SMTP установлен с, добавить адрес, адрес, который на самом деле. Давайте попробуем эту последнюю часть в адресе. Ой, я действительно грустно сейчас. Спасибо. Но я очень ценю все тексты вы посылали. У вас есть этот Давида. Ты взорвать его. Оставим его там и мы исправим в понедельник. Увидимся. Daven Фарнхем: А теперь Deep Мысли по Daven Фарнэме. Если бинарное дерево падает в лесу и никто не вокруг, чтобы C it-- [посмеиваясь].