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