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