[Музика, яка грає] Девід Дж Маланій: Гаразд. З поверненням. Це 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-- [посміюючись].