[Powered by Google Translate] [Тыдзень 8, працяг]
[David J. малая] [Harvard University]
[Гэта CS50.] [CS50.TV]
>> Гэта CS50, так гэта да канца тыдня 8 тут.
Мы, вядома, было трохі урагану раней на гэтым тыдні,
таму зараз гэта сапраўды толькі ты і я ў гэтым лекцыйны зала,
Але сёння мы працягваем наш размова аб PHP
і аб вэб-праграмаванні ў цэлым, і мы таксама ўвесці паняцце
базы дадзеных, у прыватнасці, адна называецца MySQL, якая з'яўляецца даволі папулярным у гэтыя дні,
У значнай меры дзякуючы яе маштабаванасці, а таксама таму, што яго быць свабодным і адкрытым зыходным кодам.
>> Але спачатку паглядзім на якім мы спыніліся ў мінулы раз.
Нагадаем, што мы шукалі ў некалькіх Frosh прыклады імгненныя паведамленні,
і гэта была агідная форма, якая мне прыйшла ў галаву яшчэ 15 гадоў таму +
для таго, каб мець студэнтаў на тэрыторыі кампуса рэгістр для першакурснікаў вочнай спартыўных
, Фактычна не маючы да паходу больш праз двор да Wigglesworth
слізгаць фізічнай паперу пад дзверы некаторых Проктор.
Замест гэтага мы пераехалі ўсё ў Інтэрнэце, але для гэтага мы павінны выкарыстоўваць
некалькі тэхналогій, так што, нам трэба HTML, мова гіпертэкставай разметкі,
што зноў жа гэта мова разметкі, з якой вы робіце вэб-старонак структурна.
>> Выкарыстоўваючы трохі CSS у гэтыя дні, каскадныя табліцы стыляў,
якім мы карыстаемся стылізацыі вэб-старонкі, выкарыстоўваючы некалькі іншы сінтаксіс,
у той час як HTML было ўсё, пра структуру іх.
Нам таксама неабходна ўвесці мовы вэб-праграмавання.
У гэтым выпадку, мы будзем выкарыстоўваць PHP, і PHP будзе дазволіць нам
для дынамічнага высновы кантэнту, а таксама рабіць праграмныя рэчы, як
адпраўка электроннай пошты, як гэта было на ноце мы з'ехалі на мінулым тыдні.
>> Нагадаем, што код гэтага была ў 2-х частках.
Адзін з іх, мы павінны былі froshims3.php,
і гэта было ў значнай ступені разметкі HTML з формай ўнутры яго,
ледзь-ледзь CSS тут, у атрыбуты стылю
так што сама форма будзе па цэнтры старонкі, але акрамя гэтага
у нас былі некаторыя прадстаўніком ўваходу форме, у тэкставае поле, сцяжок,
некаторыя радыё-кнопкі, абярыце меню, і кнопка адпраўкі.
І праз гэтую форму, мы прадставілі ў файл, які быў па-відаць называлі register3.php,
што само па сабе выглядала крыху нешта накшталт гэтага.
Цяпер, вялікая частка кода ў register3.php, нагадаем, было ўсё аб электроннай пошце.
Ён зрабіў трохі праверку выглядзе, які быў прадстаўлены, каб пераканацца,
, Што поля былі на самай справе пры ўмове, што чакалася.
Тады мы называлі некаторыя функцыі з выкарыстаннем PHP трохі новага сінтаксісу,
нават калі ён запазычаны з C.
>> Гэтая стрэлка аператара дазваляе нам выкарыстоўваць тое, што называецца аб'ектна-арыентаванага праграмавання.
Мы не будзем удавацца ў тым, што ў любы дэталі, але ведаю цяпер
гэта спосаб мець функцыі, звязаныя з аб'ектамі,
якія ўяўляюць сабой асаблівы тып будынка, як мы бачылі ў C.
Але цяпер, проста прыняць на веру, што гэта правільны сінтаксіс для выкарыстання
Пры выкарыстанні бібліятэкі як гэтая бібліятэка PHPMailer.
І тады да канца гэтага файла мы дынамічна генераваных электроннай пошце
, Што паслалі на мой кошт jharvard@cs50.net
ад майго jharvard@cs50.net рахунку,
і мы праінфармавалі карыстальнікаў адпаведна, што яны былі зарэгістраваныя для гэтага віду спорту.
Гэта ў значнай ступені тое, што сайт Frosh чаты зрабіў шмат гадоў назад
Калі я рэалізаваў яе, праўда, на іншай мове,
але ён паказвае вам, магчыма, улада, якая ў вас ёсць
Зараз, калі вы можаце выказаць сябе не толькі праграмнымі
на нізкім узроўні ў мове, як C, але на значна больш высокім узроўні
з гэтым вельмі рэальны свет прыкладанняў, як электронная пошта на самай справе вырашыць
некаторыя рэальныя праблемы свету.
>> Цяпер, вядома, хоць я выкарыстоўваю гэты скрыпт для стварэння некаторых
паведамленні электроннай пошты дынамічна з jharvard@cs50.net, якая сапраўды рахунку
што ў мяне ёсць доступ да, не быць дастаткова асцярожным, каб адправіць
пошты толькі з рахункаў, што на самой справе свой уласны,
каб рэчы вам у невялікай колькасці гарачай вады ў жыцці.
З улікам сказанага, давайце цяпер пераход да вырашэння іншай праблемы ў цэлым,
што захавання дзяржавы.
Такім чынам, што ж гэта на самай справе азначае?
HTTP, гэты пратакол перадачы гіпертэксту,
на самай справе без пратаколу, і што гэта азначае, што
калі вы цягнеце нешта накшталт Google.com а затым націсніце ўвод
Звычайна ваш браўзэр мае нейкі верціцца значок, які затым
Вынікі ў некаторых вэб-старонкі загружаюцца,
а затым, што маленькі значок спыняе круціцца, і што на самой справе прапануе
, Што HTTP завяршыў нейкі злучэнне з серверам, вось і ўсё.
HTTP з'яўляецца асобай без грамадзянства, у тым сэнсе, што яно не падтрымліваюць
пастаяннае падлучэнне да сервера ў тым жа Skype разе не
або Gchat робіць, таму што з HTTP
Мяркуецца, што, як толькі вы ўзялі вэб-старонку, вось і ўсё.
>> Зараз, на самай справе ў гэтыя дні на такіх сайтах, як Facebook і Google Maps
і Twitter, і як там шмат большы дынамізм якой
нават пасля гэтага значка спыняе кручэнне, можа на самай справе атрымаць больш абнаўленняў
ад сервера, больш твітаў, больш абнаўленняў статусаў на Facebook і да таго падобнае.
Але нават гэта, выкарыстоўваючы тэхніку, што мы будзем гаварыць у тыдзень ці два
вядомы як Ajax з выкарыстаннем мовы JavaScript называецца,
але ў канцы дня, HTTP-ранейшаму без грамадзянства.
І ўсё ж, калі вы хочаце, каб неяк памятаю рэчы пра карыстальніку
нават пасля таго як яны адключаныя ад сервера
PHP робіць дазволіць вам сродак гэтым
паколькі, як мы бачылі ў апошні раз, PHP мае шэраг суперглобальных,
і суперглобальная, зноў жа, спецыяльныя глабальныя зменныя
які перадаў вам вэб-серверам і PHP сябе.
>> Вы не павінны нічога рабіць, каб пакласці значэння ў ім,
і сярод суперглобальных мы бачылі да гэтага часу, атрымліваць і адпраўляць,
які з'яўляецца, дзе палі формы ставяцца аўтаматычна для вас,
, А таксама некалькі іншых, якія мы яшчэ не бачылі.
Усярэдзіне $ _SERVER некаторыя спецыяльныя зменныя, звязаныя з самім серверам.
Што такое IP-адрас, што пратакол, HTTP ці HTTPS вы выкарыстоўваеце,
што метад запыту вы выкарыстоўваеце і да т.п., так што некаторыя цікавыя,
пікантныя падрабязнасці аб серверы, а на самай справе, карыстач у там жа.
Там у $ _COOKIE, які з'яўляецца, дзе гэтыя рэчы называюцца куки захоўваюцца.
Мы не будзем марнаваць час на печыва сябе сёння,
але ведаю цяпер, што печыва з'яўляецца толькі невялікі фрагмент інфармацыі
, Што вэб-сервер могуць пасадзіць на вэб-браўзэры
і ў сваю чаргу яе памяць або жорсткі дыск свайго кампутара
для захоўвання інфармацыі аб карыстальніку, напрыклад, сваё імя карыстальніка
так, каб яны не прыйдзецца ўводзіць яго кожны раз, калі яны увайсці ў сістэму або некаторых
Унікальны нумар або ідэнтыфікатар для гэтага карыстальніка
так што вам не прыйдзецца прыставаць да іх з тым жа віды пытанняў аб
перавагі ў будучыні, але большасць з цікавасці
Прама цяпер складае $ _SESSION.
>> Гэта суперглобальная, які, як і іншыя, перадаюць вам аўтаматычна PHP
калі вы пішаце PHP-сайтаў на аснове
можна захоўваць усё, што заўгодна, радкі, ліку,
якая плавае кропкай, значэння, масівы, аб'екты,
на самай справе ўсё, што вы хочаце, і гэта дазваляе захаваць яго такім чынам,
што нават калі карыстальнік наведвае вас раз-пораз
вяртаецца хвілінах ад зараз і ў 5 хвілінах ад зараз, таму што
яны прымаюць іх час, перш чым націснуць некаторыя іншыя спасылкі
PHP будзе гарантаваць, што ўсё, што вы пакладзеце ў гэтай сесіі суперглобальная
хвіліны або 5 хвілін таму назад усё яшчэ будзе там, калі вяртаецца карыстальніку.
А пад капотам гэтага суперглобальная ажыццяўляецца шляхам
тыя рэчы, званыя куки, але цяпер гэта проста абстракцыя
якім гэта свайго роду праграмны эквівалент кошыку.
Што б вы, праграміст, пакласці ў тым, што
суперглобальная асацыятыўны масіў будзе там некаторы колькасць хвілін пазней
да таго часу, пакуль вы яго не выдаліце ​​або пакуль карыстач не выйдзе свайго браўзэра ў цэлым.
>> Давайце паглядзім на прыкладзе, як гэтая рэч сапраўды выкарыстоўваюцца.
У counter.php сярод часткі сённяшняга код
мы маем наступную радок.
У пачатку гэтага файла ў нас ёсць куча сініх каментары, якія нецікавыя цяпер.
Але ў радку 13 у нас ёсць новая лінія,
session_start, і што на самой справе робіць менавіта тое, што ён кажа.
Яна пачынаецца сесій.
Гэта дазваляе выкарыстоўваць гэта вялікая суперглобальная $ _SESSION, і гэта так проста.
Цяпер, калі мы зыходзім, каб паглядзець на лінію 16, давайце паспрабуем высветліць, што гэтая вэб-старонка будзе рабіць.
Калі (Исеть ($ _SESSION ["лічыльнік"]), а затым пайсці далей
і захоўваць ў зменнай лічыльніка, малыя лічыльніка,
$ _SESSION ["Лічыльнік"].
Гэта, здаецца, аб'явы лакальных зменных называецца лічыльнікам
усярэдзіне якіх ён апранае копію таго, што знаходзіцца ўнутры суперглобальная
называецца сесіі ў становішча "лічыльнік".
У адваротным выпадку, па-відаць, гэтая маленькая лакальная пераменная лічыльніка, усталёўваецца на 0.
>> Але потым праз некалькі радкоў у 26 Звярніце ўвагу, што копія сесіі лічыльніка,
яе ключом, мае новы прысвоена значэнне, які з'яўляецца яго бягучае значэнне плюс 1.
Карацей кажучы, гэты файл выглядае як абнаўленне
Лічыльнік, які захоўваецца ўнутры сесіі суперглобальная
, Павялічваючы яго на 1, але ён спачатку захоўвае копію папярэдняга значэння
, Захоўваючы яго ў лакальнай зменнай з імем $ лічыльніка,
, А затым сюды давайце паглядзім, што засталося.
Аказваецца, гэта ў значнай ступені толькі HTML.
У ніжняй частцы гэтай старонкі мы бачым у радку 37, якія я наведаў гэты сайт
Лічыльнік колькасць разоў, так што ёсць некалькі цікавых асаблівасцяў тут.
Адзін з іх, гэта відавочна зменнай, але гэта не дастаткова проста пакласці
$ Лічыльнікі ў целе вашага HTML, таму што, вядома,
калі гэта толькі там, сярод вашых PHP HTML будзе лічыць, што гэта проста HTML.
Вы літаральна хочуць $ лічыльнікаў, якія будуць надрукаваны на экране.
>> Але замест гэтага падзення ў рэжыме PHP
з гэтай часткай сінтаксісу мы можам дынамічна ўставіць значэнне тут
Вельмі блізкія па духу да таго, што мы зрабілі ў мінулы раз з
ўстаўка значэння ў радкі.
На самай справе, гэта проста скарочанае пазначэнне для сказаўшы нешта накшталт гэтага літаральна,
Друк ($ лічыльніка) або нават нешта накшталт Е (% S, лічыльнік),
або нават, як вы, магчыма, бачылі ў Інтэрнэце або ў падручніках,
ёсць функцыя ў PHP называецца рэха
якая робіць тое ж самае, і ўсё гэта толькі больш намотваецца спосабамі
сказаць <? =.
У гэтым выпадку вам не трэба ставіць
Слова PHP пасля знака пытання.
Гэта скарочаная пазначэнне для, зноў жа, тое, што мы толькі што бачылі хвіліну назад
які рэхам некаторы значэнне.
>> Давайце паглядзім, што канчатковым вынікам гэтага на самай справе.
Дазвольце мне перайсці ў наш файл counter.php,
і мы ўбачым, што Дэвід проста памыліўся, гуляючы з код.
Давайце выпраўленне тое, што ён аблажаўся,
і памылка накшталт бы ёсць, няма, у радку 37.
Па пачатку старонкі я наведаў гэты сайт 0 раз.
Ну, давайце ісці наперад зараз, і ў верхняй частцы акна браўзэра націсніце на
перазагрузіць значок, і я націскаю кнопку перазагрузкі,
і зараз я наведаў сайт 1 раз, 2, 3, 4, 5, 6, 7, 8.
І сапраўды, калі мы паглядзім на зыходны код гэтай старонкі рэальны зыходны код мяняецца,
і звярніце ўвагу на поўнае адсутнасць якіх-небудзь PHP, і гэта таму, што
PHP код ацэньваюцца або інтэрпрэтаваць боку сервера,
і так, што азначае, што выхад з сцэнарыяў PHP з'яўляецца тое, што ў канчатковым выніку накіроўваецца ў браўзэр,
які ў дадзеным выпадку з'яўляецца некаторых сыравіны HTML і некаторых сырой тэкст.
Што тут адбываецца?
>> Ну, з адносна невялікай колькасцю радкоў кода, я магу захоўваць
пастаянна на працягу некалькіх секунд, або калі мы даволі доўга чакалі,
хвілін, нават гадзін, некаторыя значэння такім чынам, што робіць HTTP
здаецца станам, як калі б мы захавалі
гэта злучэнне з серверам, і гэта проста памятаю, што я казаў у мінулы раз,
але на самой справе ёсць цэлая куча складанасці адбываецца пад капотам
з удзелам печыва якая дазваляе PHP, каб даць мне гэтую ілюзію
гэтай кошыка падобныя функцыі.
На дадзены момант трывіяльны прыклад, дзе мы проста захоўваць цэлы лік,
але гэтая функцыя вернецца да мець вялікае значэнне
Калі мы пачынаем казаць пра больш складаных праектаў,
Сярод іх задачу, пастаўленую 7.
Гэта ваш самы апошні пытанне, пастаўлены ў CS50.
Я ведаю, гэта так сумна, але тое, што вы знойдзеце тое, што мы збіраемся заключыць
гэтая частка семестра на самай справе пераход
З кантэксту C, вядома, у кантэксце PHP
але пры выкарыстанні некаторых з той жа асновы
Мы казалі на працягу некаторага часу.
>> Мэта з PSET 7 з'яўляецца ажыццяўленне CS50 фінансаў,
які з'яўляецца вашай ўласнай версіі Yahoo Finance і Google Finance
ці нават Etrade.com, у якім вы маеце магчымасць
паглядзець цэны на акцыі для дадзенага сімвала, але нават больш за тое
у вас ёсць магчымасць "купіць" і "прадаць" акцыі
, Якія гандлююцца на розных біржах, таму як гэта галоўная старонка
Тут прапановы, якія сапраўды, у якой ступені мы пачалі
Праблема набору для вас, вы павінны ўвайсці формы, якая пытаецца імя карыстальніка і пароль.
Яна мае кнопку адпраўкі, але пасля таго, як мы ў канчатковым рахунку бачыць,
нічога не адбываецца на самай справе пад капотам яшчэ і таму, што
застаецца для вас, каб рэалізаваць магчымасць рэгістраваць новых карыстальнікаў,
Магчымасць купіць акцыі, прадаць акцыі,
на самай справе паглядзець бягучыя цэны на акцыі.
>> І сапраўды, гэта будзе як рэальны свет, як магчыма таму, што мы зрабілі
ёсць кавалак кода, які дазволіць вам з адной функцыяй
для запытаў Yahoo Finance, якая цудоўна робіць даступным бясплатнае дадзеных
для пошуку коштаў на акцыі на аснове сімвала акцыі або Біржавы сімвал,
і вы атрымаеце назад бягучыя цэны на акцыі ў дзень.
Дадзеныя на самай справе вы бачыце ў дадзеным PSET будзе
О, як рэальны свет, як ён можа атрымаць, так што вы на самай справе ўзаемадзеянне
з рэальнымі запасамі свет, рэальныя сусветныя цэны,
і мы будзем бачыць, колькі грошай вы можаце зрабіць, магчыма,
на працягу наступных некалькіх дзён, гуляючы з вашым уласным наборам праблем.
>> Але давайце спачатку падрыхтаваць глебу для, як праектаваць тое, што, вядома, больш складаная
чым counter.php, гэта складаней, чым любы з Frosh прыклады чаты да гэтага часу,
і давайце паспрабуем ўвесці некалькі парадыгмаў тут, якія дазваляюць нам
як для PSET 7 і, можа быць, для вашага праекта, калі вы робіце нешта вэб-аснове
каб захаваць ваш код добра арганізаваныя, каб трымаць сябе ў разумным розуме,
і зрабіць крок у бок супрацоўніцтва, будзь то ў канчатковым праекце CS50 ў
ці за яе межамі, калі вы будзеце працягваць праграмаваць нешта ў будучыні.
Там у гэтую агульную парадыгму дызайну
у галіне інфарматыкі і ў распрацоўцы праграмнага забеспячэння ў цэлым
вядомы як MVC, Model View Controller,
і гэта па-дурному акронім, які апісвае вельмі добрая ідэя,
якая з'яўляецца падзел розных аспектаў праграмы,
спецыяльна вядзення асобных логікі або бізнес-логіку сайта
так што ўсё, што ўключае ў сябе такія рэчы, як
Выклік функцый і запытаў да баз дадзеных і да т.п.
адбываецца не сярод вашых HTML
а ў асобных файлах, і, сапраўды, ёсць такі адзін файл
Звычайна, што вы назвалі кантролер
што на самой справе мазгі за аперацыю, і мы ўбачым, напрыклад,
гэта ў адзін момант.
>> Там ёсць мадэль, якая праграмнага кода
, Што робіць размаўляў з базамі дадзеных, які размаўляе з Yahoo Finance і да т.п.,
а там V у MVC, віды,
Усе рэчы, якія звязаны з эстэтыкай, файлы, якія на самай справе ўтрымліваюць
вашы HTML, CSS, можа быць, ваша і да таго падобнае.
Ідэя тут у тым, як гэтая карціна мяркуе, што кантролер
гэта файл, як мы хутка ўбачым, і як вы будзеце асабліва бачыць у PSET 7,
што свет гаворыць з дапамогай сваіх вэб-браўзэраў.
Гэта файл, які будзе пабываў на інтэрнэт-грамадскасці,
але кантролер мае зносіны з патэнцыйна мадэлі,
якая з'яўляецца адным ці некалькімі іншымі файламі, якія змяшчаюць код, звязаны з дадзенымі,
Код, звязаных з базамі дадзеных і да т.п., а потым размаўляе з
Кантролер адзін або некалькі іншых файлаў, вядомых як погляды,
якія з'яўляюцца эстэтыка вэб-старонкі, шаблоны ў духу,
, Што можа заняць некаторы дадзеных у якасці ўваходных дадзеных, але ў канцы дня
Толькі логіка ўнутры мэтай павінна быць аказанне гэтых дадзеных,
ітэрацыі цыкла і на самай справе пляваць на некаторыя
HTML на аснове іх выкананнем або нават нешта накшталт PDF.
>> Што прыемна аб MVC з'яўляецца тое, што вы можаце мець розныя погляды
у залежнасці ад тыпу прылады, у залежнасці ад тыпу файла фармату, які вы на самой справе
хочаце паказаць карыстальніку.
Давайце паглядзім на некалькі больш і больш складаныя і добра прадуманыя прыклады
, Пачынаючы з першай версіі 0 тут.
Дазвольце мне ісці наперад і адкрываць у нашым каталогу MVC сёння
файл з імем index.php ў каталогу: 0.
Звярніце ўвагу, гэта супер просты і вельмі захапленне сайта
гэта свайго роду версія 0 з хатняй старонкі для CS50,
і заўважыў, як у нас ёсць спасылка на лекцыі, у нас ёсць спасылка на навучальны план,
і калі я перайдзіце па спасылцы на сайце не лекцыі аб тым, што URL
наверсе будзе мяняцца ў lectures.php.
Калі б я тады прытрымлівайцеся па спасылцы тыдзень 1 Звярніце ўвагу, што URL змяненняў у week1.php.
Там, здаецца, даволі просты іерархічнай структуры тут.
>> Давайце кінем хуткі погляд пад капотам, як гэта выклаў,
І сапраўды, калі паглядзець на index.php гэта даволі проста.
На самай справе, хоць я і назваў гэтую файле PHP няма ніякіх фактычных праграмны код.
Там у каментары, што я напісаў тут, у PHP проста, так што карыстачу не да канца бачачы яго.
Вядома, як і раней, нічога, што паміж PHP тэгі
інтэрпрэтуецца, нават калі гэта каментары, і інтэрпрэтаваць каментар
азначае проста выкінуць яго ў канцы дня, і на самай справе не
адправіць яго ў браўзэр, так што ўсё тут проста эстэтыка.
Калі я адкрываю аналагічным lectures.php гэта таксама проста жорстка кадаваных файлаў.
Гэта адбываецца называць нешта. PHP,
але гэта сапраўды проста. HTML, і week1.php, week2.php
Сапраўды гэтак жа толькі разметка, так што куча недахопаў гэтай канструкцыі.
Адзін з іх, гэта велізарная колькасць капіяваць / ўставіць.
Нават нягледзячы на ​​тое адзінае, што змяняецца Сярод гэтых файлаў у выпадку маркіраванага спісу,
Ці тэгі, я, тым не менш ёсць док тыпу, HTML, галавы,
назвы, блізкія цела, блізкія HTML і многае іншае
У кожны файл, які азначае, што калі я калі-небудзь хочаце рэструктурызацыю
гэтая вэб-старонка або restylize гэта я павінен пайсці і змяніць
Усе гэтыя файлы ўручную або з некаторым масіўным знайсці і замяніць.
>> Давайце зробім крок у бок разумнейшы, больш думаць дызайну ў версіі 1 тут
якім у адпаведнасці чытаць мне, што мы ўключылі, так што вы можаце гуляць разам з
гэтыя больш спакойныя дома, звярніце ўвагу, што мы маем тут
Рэзюмэ файлы ў версіі 1 гэтага сайта,
і здаецца, што я ўзяў на сябе смеласць вынесці за дужкі
агульны код, header.php і footer.php.
Ну, давайце зірнем на тое, што ўнутры першай з іх.
Header.php выглядае знаёма,
але зьвярніце ўвагу, дзе гэта адрэзаць?
Адразу пасля радка 19, так што гэта ўсё, што было агульным
з файла index.php, lectures.php,
Неделя1 і week2.php з папярэдняга прыкладу.
Што я зрабіў копію і выразаць усё, што было агульным для ўсіх гэтых файлаў,
пакласці яго ў асобны файл загалоўка, а гэтак жа ў footer.php
я ўжыць той жа прынцып, паводле якога толькі цікавыя лініі
У footer.php гэтыя два, недалёка цела і блізкіх HTML.
>> Але што гэта азначае зараз, што ў новай версіі
з index.php звернеце ўвагу, як шмат прасцей ён можа атрымаць.
Вядома, трохі больш загадкавым выглядае, крыху менш, інтуітыўна
прытрымлівацца зверху ўніз, але божа мой, усё, што надмернасць ў цяперашні час няма.
Мы патрабуем выкарыстаннем PHP функцыя называецца літаральна патрабуюць наверсе,
якая вельмі нагадвае, нагадаем, З # ўключыць у механізм.
Мы патрабуем header.php на самым версе.
Мы патрабуем footer.php на дне, і адзінае, што розныя
або асаблівага ў гэтым файле змест, якое павінна быць унікальным для гэтага.
Калі б я тады ідуць, скажам, lectures.php, той жа прынцып прымяняецца.
Зноў жа, некаторыя каментары наверсе, але потым патрабуюць загалоўку, патрабуюць ніжні калянтытулы,
і паміж імі, гэта толькі змест, што на самой справе змянілася.
І калі б мы глядзелі ў тыдзень 1 і 2-я тыдзень мы будзем бачыць
што гэты ж прынцып быў ужыты там.
Ну, мы не зусім зроблена там.
>> Давайце зірнем на версіі 2, які мае аналагічную структуру,
не заўважыць, што цяпер я ўвёў нешта іншае.
У радку 10 я прадставіў helpers.php,
які відавочна ўтрымлівае дапаможныя функцыі.
Дапаможныя функцыі, як правіла, адносна кароткімі функцыі
што вы пішаце, каб дапамагчы вам у розных месцах,
і давайце паглядзім, што ўнутры helpers.php.
У гэтым выпадку, падобна, што яна мае 2 функцыі.
Нагадаем, з другога дзень з кубам прыклад
Вы можаце вызначыць свае ўласныя функцыі ў PHP, і тое, што я зрабіў, цяпер у мяне
функцый называецца аказваюць склеп і зрабіць загаловак,
першы з якіх прымае параметр называецца дадзенымі,
якога па змаўчанні з'яўляецца пустым масіў, як гэта было прапанавана там,
і мы сапраўды можам напісаць гэта яшчэ больш коратка ў апошняй версіі PHP
, Сказаўшы, адкрытыя квадратныя дужкі, зачыненыя квадратныя дужкі.
Гэта азначае, што пусты масіў памерам 0, але, тым не менш масіва.
>> Гэты экстракт функцыя трохі спецыфічны тым, што
што ён робіць гэта ў якасці аргументу асацыятыўны масіў
, Які мае 0 або больш пар ключ-значэнне, і калі ў вас ёсць ключ Foo
а значэнне бара экстракт функцыі
стварае сітуацыю, у якой зараз, як лініі 11,
ў вас ёсць лакальная зменная $ FOO, значэннем якога з'яўляецца бар.
І калі б у вас было больш ключоў і значэнняў у масіве дадзеных,
Аналагічным б яны здабываюцца ў лакальную вобласць
або прасторы імёнаў, так што і footer.php
тая ж ідэя тут, каб header.php
маюць доступ да гэтых пераменным.
На самай справе, дазвольце мне адкрыць зноў header.php
і звярнуць увагу на тое, што цяпер ён выглядае ў гэтай версіі.
>> Замест жорсткага кадавання CS50 у якасці назвы для кожнай старонкі
заўважыць дынамізм, што гэта магчыма цяпер.
У радку 5 я рэхам назва зменнай,
але спачатку я перадаю, што назва зменнай функцыю пад назвай HTMLSpecialChars.
Дурное імя для функцыі, калі яна ёсць, але яна сапраўды робіць тое, што ён кажа.
Гэта гарантуе, што любыя спецыяльныя сімвалы
у радку, які быў прыняты ў правільна бег HTML.
На самай справе гэта спосаб пазбегнуць так званых Cross Site Scripting атакі
якой хтосьці можа зламысна ці выпадкова
ўводзіць свае ўласныя HTML на свой сайт
шляхам ўстаўкі ў той ці іншай форме, напрыклад,
тое, што вы былі не зусім чакаў, у прыватнасці, наяўнасць кода,
як мы будзем казаць у тыдзень ці два часу.
>> Гэта цяпер header.php, гэта выгляд
У тым сэнсе, што яно дазваляе праглядаць эстэтычнае змест некаторых набораў дадзеных.
Але больш канкрэтна, гэта шаблон.
Гэта свайго роду план цяпер, што мы хочам загалоўку кожнай старонкі, каб выглядаць,
але ёсць некаторая дынаміка ў тым, што мы хочам, каб назва будзе дынамічна ўстаўляюцца
Мяркуючы па назве зменнай
, Якое было вынята, калі мы тэлефанавалі, зноў жа,
Функцыя візуалізацыі загалоўка.
Цяпер, калі мы паглядзелі на рэндэру склеп, там на самай справе не так шмат выкарыстання, што прама цяпер
таму што ў footer.php няма дынамізму бы там ні было.
Там могуць быць, але на дадзены момант гэта жорстка запраграмаваны спіс з 2 тэгамі,
але тая ж ідэя дастасоўная, так што фактычна прапануе чаму
Ці мы марнаваць час мае загаловак візуалізацыі і рэндэрынгу калантытул функцыю?
Адпусці мяне, а цяпер у версіі 3,
і ў версіі 3 у памочнікі я вырашыў спрасціць яе яшчэ больш.
>> Дазвольце мне адзін візуалізацыі функцый.
Дайце мне яго ўзяць яшчэ адзін аргумент, на гэты раз завецца шаблонам,
, Які прызначаны, каб быць імя шаблону,
і тады я буду аб'яднання дзёрзка. PHP, каб значэнне гэтай зменнай,
, А затым, калі ён існуе foo.php, bar.php або header.php і footer.php,
Затым я збіраюся ісці наперад і атрымаць зменных дадзеных
, А затым патрабуюць, каб шлях.
Іншымі словамі, выкарыстанне гэтага цяпер, калі я адкрываю index.php
заўважыць, што я не называю візуалізацыі загалоўка больш.
Я проста называю зрабіць, але я прайсці ў двукоссях значэнне загалоўка
ясна даць зразумець, які шаблон я на самой справе хачу, каб загрузіць.
>> Тады тут заўважыць, што я раблю.
Я перадаю ў дынамічна ключ назва,
Значэнне CS50, і гэта таксама, як мы бачылі раней,
мог бы быць больш кароткімі ў апошняй версіі PHP
дзе я магу замяніць функцыю масіва ў квадратных дужках,
які я прапаную яшчэ больш чытэльным і, вядома,
крыху лягчэй набіраць.
І, вядома, з вынесці калантытул выкліку ў ніжняй часткі,
Мы не турбуюць праходзяць ў другой аргумент наогул, не асацыятыўны масіў,
таму што няма нічога дынамічнага ўнутры гэтага калантытула.
Гэта ўсяго толькі некаторыя блізкія тэгаў для HTML.
Добра, мы робім захады па ачыстцы рэчы сапраўды тут,
але дазвольце мне адкрыць 2 фіналу прыкладаў.
Гэта адзін, нумар 4, звярніце ўвагу, што я прыняў свядомае рашэнне зараз
каб палепшыць папярэдні прыклад, нарэшце, выкарыстоўваючы некаторыя іерархіі мае файлы.
>> Звярніце ўвагу, што ў дадзеным рэзюмэ, у гэтым чытаў мне, я прадставіў
ўключае ў сябе каталог і каталог шаблонаў
, Змесціва якіх будзе тое, што я хачу, каб уключыць
і шаблоны, якія я хачу зрабіць, адпаведна.
Гэта сапраўды я, будучы анальны і спрабуе трымаць рэчы ахайнымі,
захаваць файлы, звязаныя разам, але канчатковы вынік
з'яўляецца тое, што ў нас цяпер ёсць трохі ахайней ўстаноўкі, але мы павінны памятаць, цяпер
у, напрыклад, index.php
калі мы патрабуем файл helpers.php
мы павінны зараз патрабуюць яго праз уключае / helpers.php
, А не проста гаварыць helpers.php, таму што цяпер гэта на самай справе ў падкаталог.
Цяпер, як і ў бок, вы ўбачыце ў гэтых прыкладах і некаторыя іншыя
функцыі, як патрабуецца, патрабуецца адзін раз.
Там на самай справе сама функцыя называецца ўключаць, і ўсе яны маюць некалькі іншае паводзіны.
Тут я кажу патрабуецца адзін раз, каб зрабіць супер ясна, што я толькі хачу, каб гэтыя
Памагатыя, уключаных у маім праекце разы.
Але калі я асцярожна, і калі я на самай справе думаю праз маю логіку правільна
гэтага павінна хапіць занадта проста сказаць, патрабуюць наверсе
Пакуль я сам не выпадкова патрабуе, каб і той жа файл у іншым месцы.
На самай справе, гэта крыху больш эфектыўны спосаб рабіць рэчы, затым з дапамогай
патрабуецца адзін раз, так што я буду зрэзаць яго да проста патрабуюць.
>> Давайце возьмем яшчэ адзін крок наперад.
Гэты апошні прыклад зараз, версіі 5, мае яшчэ чысцей іерархіі тэчак.
Звярніце ўвагу на тое, што я зрабіў тут за чытала мне ў гэтай апошняй версіі
Цяпер у мяне ёсць HTML каталог, які ў мяне быў увесь гэты час,
але ўнутры там цяпер толькі index.php, lectures.php,
week1.php і week2.php.
Каталог уключае ў сябе ў цяперашні час жыве побач з HTML каталога,
так на тым жа ўзроўні, як родны брат, так бы мовіць.
Гэтак жа як і шаблоны тэчкі.
Ключавым вынас тут я прадставіў крыху больш структуры,
але ключавой асаблівасцю з'яўляецца тое, што зараз толькі файлы
, Якія павінны быць даступныя вэб публічна адрасаваных
па URL на інтэрнэт-грамадскасці ў маім HTML каталога.
>> Між тым, іншыя файлы, helpers.php, footer.php,
header.php, якія, магчыма, з'яўляюцца, магчыма, больш адчувальныя,
Можа быць, памочнікі на самай справе мае некаторыя імёны карыстальнікаў і паролі ці некаторыя інтэлектуальныя
ўласцівасць маё, функцыі, я сапраўды не хачу, каб свет бачыў, нават калі выпадкова.
Гэта добрая практыка, каб трымацца далей ад грамадскіх каталога HTML
любыя файлы, якія не трэба сябе публіцы.
Усё, што трэба зрабіць у гэтым выпадку, калі гляджу, напрыклад,
index.php каталога ў HTML файл,
Заўважце, што мы проста павінны быць трохі больш асцярожныя, калі патрабуецца
ці патрабуецца толькі файл.
Мне трэба спачатку зрабіць .. для пераходу ў бацькоўскі каталог,
той жа / уваходзіць / helpers.php
ныраць уніз, каб атрымаць файл, які мяне хвалюе.
>> Любыя пытанні, то на MVC
ці гэта адносна простае ўвасабленне яго?
І дазвольце мне патлумачыць, што мы засяродзіліся зусім крыху на
V тут, думкі і факторынгавыя з гэтых шаблонаў.
Мы на самай справе не адрозніваецца ад M C толькі пакуль.
На самай справе, там сапраўды няма M тут, і нават наш C,
кантролера, на самай справе не робяць усё, што шмат, але вы атрымаеце нашмат больш
знаёмы з абодвума гэтымі 2 лісты ад MVC,
ці, дакладней, вы атрымаеце значна больш знаёмыя з C
У MVC для задачы набору 7, таму ёсць больш, што на гарызонце.
Пытанні?
Там на самай справе нікога няма.
>> Добра, давайце зараз пяройдзем да другой і апошні тэма на сённяшні дзень.
Гэта значыць ўвядзенне базы дадзеных.
Да гэтага моманту мы мелі некалькі спосабаў захоўвання дадзеных.
Мы выкарыстоўвалі зменныя.
Вярнуцца ў нашым файле C, I / O абмеркавання мы пачалі выкарыстоўваць тэкставыя файлы
і выкарыстанне файлаў, такіх як Fprintf, і тады мы нават пачалі
казаць пра CSV-файлаў трохі, значэнні, падзеленыя коскамі,
так што ўсё гэта дазволіла нам мець дадзеныя, якія захоўваюцца
альбо не пастаянна, або настойліва.
Але нават CSVs на самай справе не спрыяе пошуку
і ўстаўкі і выдаленні.
Гэта сапраўды проста дурное тэкставых файлаў, падзеленых коскамі
радок за радком шляхам радок за радком, таму калі вы хочаце, каб
пошук файлаў, што лепшае, што вы можаце зрабіць сапраўды лінейны пошук.
Вы павінны пачаць у верхняй часткі файла, чытаць усё гэта ў,
і шукаць некаторы значэнне цікавасці.
Калі Вы хочаце ўставіць у яе вы павінны зрабіць тое ж самае,
ітэрацыі ён і ўстаўкі ў пэўным месцы,
і ў тым, што Вы павінны зрабіць усё пошукі логікі сабе.
>> Вы не можаце зрабіць разумнае шаблоне на файл CSV, калі вы самі напісаць код.
Вы не можаце зрабіць фільтраванне файлаў CSV
калі вы самі напісаць код.
Хіба не было б выдатна, калі б хтосьці іншы паклаў ва ўсіх намаганняў
на самай справе зрабіць пошук простым і лёгкім ўстаўкі
і выдаленні і абнаўлення і гэтак далей?
Гэта менавіта тое, што база дадзеных.
SQL, мова структураваных запытаў, з'яўляецца яшчэ адным мовай
што мы ўяўляем тут сёння, але гэта таксама даволі даступнай,
і тое, што мы сапраўды збіраемся зрабіць, гэта проста вырваць з яго некаторыя з найбольш характэрных
характарыстык, так што для PSET 7, і калі вы робіце нешта вэб-аснове,
ваш канчатковы праект, у вас ёсць магчымасць выказаць сябе
па дадзеных запытам.
У Вас ёсць магчымасць захоўваць мала або шмат дадзеных
ў больш структураваным выглядзе, што будзе ў канцы дня
зрабіць вашу жыццё прасцей, таму што з SQL вы можаце выказаць сябе
значна дакладней, значна больш метадычна, з тым каб
вярнуць некаторыя падмноства дадзеных з вялікага корпуса дадзеных.
>> Вы можаце думаць аб базе дадзеных, у гэтым выпадку база дадзеных SQL, сапраўды, як Excel
або лікаў, дзе гэта электронная табліца,
ці, можа быць, некалькіх электронных табліц і табліц, вядома,
ёсць радкі і слупкі, і гэта таму, што
SQL базы дадзеных рэляцыйную, рэляцыйную у тым сэнсе,
што яны захоўваюць дадзеныя ў тэрмінах гэтых табліцах,
радкоў і слупкоў.
Яны больш высокай прадукцыйнасцю, чым нешта накшталт табліцы,
і табліца прызначана для выкарыстання чалавекам.
База дадзеных прызначана для выкарыстання праграмістам
напісанне кода супраць гэтага, таму ўвасабленне базы дадзеных
будзе альбо каманднага радка.
>> Адзін з самых папулярных рэляцыйных баз дадзеных там, зноў жа, MySQL,
якая цудоўна бясплатна, вельмі высокапрадукцыйныя, і гэта тое, што
Facebook выкарыстоўваць вельмі рана і да некаторай ступені яшчэ і сёння
захоўваць шмат сваіх дадзеных, і мы ўбачым у момант
што з дапамогай адносна простых каманд
мы можам выбраць дадзеныя, устаўкі дадзеных, абнаўленне дадзеных,
выдаленне дадзеных і да таго падобнае, але, на шчасце, ёсць больш зручны інтэрфейс
чым проста увёўшы ў чорна-белай радкі тут.
Мы будзем выкарыстоўваць для PSET 7 і за бясплатны інструмент пад назвай PHPMyAdmin.
Назва з'яўляецца выпадковым.
Інструмент здараецца быць рэалізаваны ў PHP,
але гэта прынцыпова не мае значэння.
Што карыснага аб PHPMyAdmin тым, што гэта вэб-утыліты.
Мы папярэдне ўстанавілі яго ў прыбор для вас,
і з яго дапамогай вы можаце ствараць табліцы ў базе дадзеных,
Вы можаце ўставіць дадзеныя, выдаляць дадзеныя, і наогул см.
Вашы дадзеныя ў досыць зручнай асяроддзем.
Вашы карыстальнікі не збіраецца выкарыстоўваць PHPMyAdmin.
>> Гэта сапраўды толькі адміністрацыйныя або распрацоўшчык інструментаў
, З якой, каб убачыць і капацца вашы дадзеныя і высветліць, як структураваць яе,
гэтак жа, як вы самі можаце выкарыстоўваць Excel або Numbers,
але гэта будзе выдатны спосаб візуалізацыі, што адбываецца пад капотам
так што вы можаце засяродзіцца на вырашэнні праблем цікавым і не столькі
на таемныя каманды.
Давайце паглядзім на прыклад дадзеных, якія могуць захоўвацца таблічнага
У рэляцыйнай базе дадзеных.
Вось адзін з такіх прыкладаў.
Зараз, на жаль, PHPMyAdmin памылку на баку кідаць занадта шмат слоў
і графікі на вас, але калі вы адточваюць толькі на
ID калонкі, калонкі імя карыстальніка і хэш-слупка
гэта эфектыўна табліцы, але гэта здараецца, фрагмент
табліцы ўнутры прыбора
выкарыстанне файлаў, мы прадстаўляем вам ў праблеме набор 7.
>> У прыватнасці, мы даем вам файл, які ўяўляе
карыстальнікам табліцы, таму табліцу, якая змяшчае карыстальнікаў з 3 калонкамі,
адным з якіх з'яўляецца унікальны ідэнтыфікатар, пачынаючы з 1 і павялічваецца час пасля гэтага.
У другім слупку імя карыстальніка, і тыя з вас, хто зрабіў хакер,
Хакер выданне для PSET 2, маглі б прызнаць некаторыя з гэтых імёнаў карыстальнікаў па крайняй меры.
На правай баку знаходзяцца паролі, але яны не літаральнае паролі.
Яны хэшы іх, так атрымліваецца
, Што захоўваць паролі ў базе дадзеных, гэта сапраўды дрэнная ідэя.
Вы ўсё, напэўна, чыталі ў нейкі момант некаторыя вэб-сайт
або базы дадзеных, некаторыя кампаніі кампраметацыі, а затым вы павінны
змяніць пароль, вам трэба атрымаць вяртанне на рэчы
таму што некаторыя дрэнны хлопец на самай справе ўварваліся ў сваім акаўнце ў якасці выніку.
>> Захоўванне пароляў у незашыфраваным выглядзе, у адкрытым выглядзе ў базе дадзеных
зусім дурны, і ўсё ж гэта вельмі пацешна
Затым, каб прачытаць аб некаторых вельмі вядомых кампаній
Часам у прэсе, базы дадзеных якіх аказваюцца пад пагрозай,
і гэтая частка не смешна, але факт, што базы дадзеных ўтрымліваюць незашыфраваныя
Паролі смешна, таму што літаральна з аднаго радка кода
Вы можаце абараніцца ад гэтай канкрэтнай пагрозай, і гэта тое, што мы зрабілі тут.
Нават для нашых падробленых трохі CS50 фінансаў версіі
Мы шыфравання пароляў толькі для добрай мерай, і той факт, што
Усе гэтыя паролі пачынаюцца з $ 1 $ гэта проста канвенцыі.
Гэта проста азначае, што яны зашыфраваныя ці сапраўды хэшируется
якая, як аднабаковая функцыя шыфравання
якіх вы не можаце ліквідаваць яе наступствы з так званай MD5.
>> Той факт, што 50 гэта пасля таго, што азначае, што значэнні солі
з 50 былі выкарыстаны для мяшання ўсе гэтыя паролі, за выключэннем аднаго.
Шахта, вядома, як вы бачыце, ёсць, HA,
было выкарыстанне розных соляў, так што тыя з вас, хто атрымаў злёгку спатыкнуўся
Можа быць, у Hacker 2, што, магчыма, было вынікам нашай выкарыстаўшы
розных хэш, чым іншыя, таму што мой пароль фактычна тое ж самае
як і некаторыя іншыя Карыстальнік там.
На самай справе, калі вы чакалі ўсе гэтыя тыдні, каб даведацца
што гэтыя паролі былі тут былі паролі, якія вы былі аспрэчаныя
ўзламаць ў Hacker выданне праблемай набору 2, так што не занадта складана.
На самай справе, малая быў такім жа, як jharvard,
Але калі мы вернемся яны глядзелі розныя.
>> Засяродзьцеся на jharvard ў малінавы, таму што яны былі салёныя па-рознаму.
Алгарытм быў абураны такім чынам, што
хэш-значэнне, зашыфраванае значэнне выглядае крыху інакш
таму што ўваходы былі крыху іншымі, але пароль пад капотам
па-ранейшаму ў канчатковым рахунку, малінавы.
Зараз, хто клапоціцца пра гэта?
Ну, мы прадстаўляем вам з узорамі карыстальнікаў, імёны узораў карыстальнікаў
і хэшы пароляў, так што ў вас сапраўды ёсць некаторы
кліенты для CS50 фінансаў, калі вы ўпершыню адарвацца ад зямлі з вашым кодам.
Вам прыйдзецца выконваць некалькі табліц ўнутры MySQL, усярэдзіне базы дадзеных.
Вы будзеце мець, каб стварыць больш табліц, эфектыўна, але мы вырашылі даць вам гэтую
, Каб вы пачалі, і вы ўбачыце, што праблема набору спецыфікацый
правядзе вас праз працэс імпарту гэтай табліцы
а таксама растлумачыць, што некаторыя з характарыстык,
і вы таксама ўбачыце, што мы прапануем Вам код
для апрацоўкі хэшавання або шыфравання дадзеных пароляў,
так што вам не трэба занадта турбавацца аб тым, што MD5 або як на самой справе ўсё.
>> Такім чынам, SQL, мова структураваных запытаў.
Гэта, папросту кажучы, мова, які мы збіраемся пачаць выкарыстоўваць у PSET 7
і, магчыма, за межамі запытаць дадзеныя з некаторых баз дадзеных.
Дадзеныя, зноў жа, захоўваецца таблічнага ў гэтых рэляцыйных табліц, слупкоў і радкоў,
але з выкарыстаннем некаторых адносна просты сінтаксіс, як выдаленне,
ўстаўкі, абнаўлення і выбару мы можам зрабіць менавіта гэта.
Мы можам выдаліць з базы дадзеных, ўстаўкі,
абнаўляць дадзеныя, а таксама выбраць, гэта значыць вымання дадзеных з базы дадзеных.
Як мы можам ісці пра гэта?
Дазвольце мне ісці наперад у прыладу.
Дазвольце мне падцягнуць http://localhost,
які, зноў жа, мясцовыя сам прыбор.
Гэта па змаўчанні мянушку.
І дазвольце мне перайсці да / PHPMyAdmin.
Гэта здараецца, спецыяльны URL, што прыбор папярэдне зразумець,
, Што адразу падказвае мне імя карыстальніка і пароль.
>> Як звычайна, я збіраюся ўвесці jharvard і малінавы,
але разумею, што гэта уліковы запіс адміністратара на кампутары.
Гэта проста супадзенне, што ёсць таксама jharvard зарэгістраваныя для CS50 фінансаў.
Jharvard, малінавы, увядзіце дае мне карыстацкі інтэрфейс, які мы бачылі
пробліск хвіліну назад, і гэта трохі пераважнай спачатку,
але будзьце ўпэўненыя, вы ніколі не будзеце мець, каб націсніце большасць спасылак у гэтым інструменце.
Вы будзеце ў канчатковым выніку з дапамогай невялікай групы, якія з'яўляюцца супер карысна,
першы з якіх баз дадзеных тут.
Калі я падыходжу да баз дадзеных, заўважылі, што я прапанавана стварыць базу дадзеных.
Гэта як стварэнне новага файла Excel, эфектыўна.
Я збіраюся пайсці далей і называюць гэтую лекцыю, і я проста не звяртаць увагі на поле там, сартавання.
Гэта звязана з прадстаўленнем дадзеных у ім,
і я збіраюся націснуць кнопку стварыць, а зараз заўважыла, як я адпусціў стварыць
на левай баку, дзе ён кажа, што няма базы дадзеных
Я хутка гл. лекцыю базы дадзеных.
>> Калі я зараз націсніце на левы бок, лекцыі базе дадзеных,
заўважыць мае ўкладкі зменіцца няшмат.
У мяне ёсць структуры, SQL, экспарт, імпарт і некаторыя іншыя рэчы.
Структура з'яўляецца ў значнай ступені пустым.
Ніякіх табліц у базе дадзеных, як сказана тут,
таму давайце створым табліцу, і давайце ісці наперад і ствараць табліцы
як студэнты, і колькі калон мы хочам?
Давайце трымаць гэта просты, і давайце запісу для кожнага студэнта
ID нумар, імя і адрас электроннай пошты.
>> Мы будзем трымаць гэта простым, як, што, такім чынам, 3 калонкі, ідзі.
Форма, якую вы тут бачыце, зараз трохі брудны і пераважнай,
але мы проста павінны прайсці праз гэта радок за радком, таму вельмі хутка давай
Першы слупок у гэтай базе даных імя ID для унікальнага ідэнтыфікатара.
Гэта будзе цэлы лік. Я магу фактычна ігнаруюць даўжыні і значэння.
Int будзе 32 біт незалежна ад таго, што вы друкуеце там, так што давайце пакінем гэта поле пустым.
Значэнне па змаўчанні, я мог бы зрабіць яго нулявым, як яны вызначаны.
Я збіраюся пакінуць гэта ў спакоі. Давайце не будзем клапаціцца аб значэннях па змаўчанні.
Давайце пракруткі тут направа, атрыбуты.
Гэта цікава.
Давайце ісці наперад і некалькі ўмоўна сказаць, што ідэнтыфікатары павінны быць падпісаныя.
Давайце не будзем губляць ні адмоўных лікаў.
>> Пойдзем ад 0 да 4 млрд, плюс-мінус,
і давайце не будзем дакранацца любога з гэтых палёў проста яшчэ там,
але тады дазвольце мне ўвесці імя тут,
, А затым іншая электроннай пошты, таму ўлоў электроннай пошце
і імя, відавочна, не цэлыя лікі, так што давайце мяняць іх на іншае поле.
Аказваецца, VARCHAR, зменнай даўжыні знакаў,
, Як радок у базе дадзеных SQL
але зменнай даўжыні, і вы на самой справе трэба сказаць, што гэта загадзя
Максімальная даўжыня радка, так што я збіраюся некалькі ўмоўна
па пагадненні тыпу 255 знакаў.
Я магу сказаць цалкам 32. Я мог бы сказаць 1.000.
Вы, здаецца, неабходнасці вырашыць для сябе, на аснове вашых дэмаграфічных што
самы доўгі студэнта імя і ісці з гэтым нумарам або трохі больш,
але тое, што добра пра VARCHAR ён не збіраецца марнаваць
255 байт на імя кожнага студэнта.
Калі гэта DAVID ён не збіраецца выкарыстоўваць усе 255 байт,
але гэта верхняя мяжа, так што я пайду з 255 толькі па пагадненні,
але мы маглі б абмеркаваць, што будзе некалькі ніжэй кошту, так і для электроннай пошты
проста быць паслядоўным 255, але зноў жа, мы маглі б мець такую ​​ж дыскусію.
Але я збіраюся зрабіць яшчэ адну рэч тут на правай баку.
>> Што магутных аб базе дадзеных з'яўляецца тое, што яна можа рабіць шмат цяжкай працы
або складаная праца для вас.
У прыватнасці, я сапраўды не хвалюе, што ID майго студэнта ліку.
Гэта проста павінна быць унікальным ідэнтыфікатарам ў базе дадзеных
так што ў мяне ёсць 32-разрадныя кароткім прадстаўленнем, што студэнт
так што ў мяне ёсць нейкі спосаб унікальнай ідэнтыфікацыі іх
каб не быць 2 Давидс, напрыклад, у класе.
На самай справе, я збіраюся гэты сцяжок А.І., аўтаматычнае прырашчэнне,
так што база дадзеных, MySQL, высвятляе,
што ID кожнага зноў устаўленай студэнта будзе.
Я нават не прыйдзецца клапаціцца аб тым, што ў маім кодзе,
і я таксама буду выбіраць нешта пад індэксам меню.
Індэкс выпадаючыя тут першасныя, унікальныя,
індэкс і поўны тэкст.
Можна здагадацца, што, можа быць, пару такіх рэчаў,
але аказваецца, што ў рэляцыйных базах дадзеных
Вы праграміст або адміністратар базы дадзеных, каб атрымаць прэвентыўна
даваць падказкі да базе дадзеных як да таго, што поля
У табліцы трохі асаблівым.
>> Напрыклад, у дадзеным выпадку я хачу сказаць, што ID
будзе першасны індэкс, інакш вядомы як першасны ключ.
Што гэта азначае, па вызначэнні, з'яўляецца тое, што з гэтага часу ID
адназначна ідэнтыфікаваць студэнтаў у гэтай табліцы.
Ні адзін студэнт не будзе мець той жа ID, таму што я ўвядзення гэтага абмежавання ці гэты індэкс.
Акрамя таго, што гэта збіраецца зрабіць для мяне гэта раскажа
MySQL, што ID з'яўляецца спецыяльным.
Я клапачуся асабліва пра ID, так што ісці наперад і рабіць магію вашай фантазіі структура дадзеных, у
стварыць свайго роду дрэва.
Звычайна гэта тое, што называецца B-дрэва, якія мы не глядзім на тыдні таму,
але гэта іншая такая структура дадзеных, блізкага па духу да бінарныя дрэвы
і спрабуе, што мы глядзелі, але яна скажа
ў базе дадзеных гэтага поля з'яўляецца настолькі важным, што я, верагодна,
хачу быць у стане шукаць на гэта, ісці наперад і будаваць некаторыя фантазіі
Структура дадзеных у памяці, каб паскорыць пошукі, так што ідэальна
яны пастаянныя часу ці, па крайняй меры блізка да таго, як магчыма
так, што яна не ператворыцца ў лінейны пошук, які не будзе
Самы высокапрадукцыйны падыход.
У адрозненне ад гэтага, адрас электроннай пошты, магчыма, быў першасным ключом.
>> У тэорыі, адрас электроннай пошты кожнага чалавека унікальным, калі вы не падзяляючы некаторыя рахунку,
але гэта як правіла не добра выкарыстоўваць нешта накшталт радкі
ў якасці першаснага ключа, таму што, калі яго мэта ў жыцці, каб адназначна ідэнтыфікаваць
радкоў у табліцы няма ніякіх прычын выкарыстоўваць 255 байт максімальна
адназначна ідэнтыфікаваць кагосьці, калі вы можаце абысціся толькі 4 байта
або 32-разрадны Int.
Увогуле, першасны ключ павінен быць кароткім і кароткія
а ў ідэале нешта накшталт цэлае ці вялікі INT, які бывае 64 біт.
Але адрас электроннай пошты павінен быць унікальным, і адна з асаблівасцяў базы дадзеных занадта
, Каб забяспечыць унікальнасць для мяне.
Пры выбары унікальных тут побач з электроннай поштай, хоць само па электроннай пошце
пракручваецца з экрана, я кажу ў базу дадзеных
мне не давяраеш.
Не дай мне ўстаўляць у базу дадзеных
жа адрас электроннай пошты два разы, нават калі я ідыёт, і я не
вельмі добра з маёй IFS і IFS яшчэ і фактычны код PHP
і я выпадкова дазволіць карыстачу зарэгістравацца ў існуючы адрас электроннай пошты
База даных з'яўляецца яшчэ адным узроўнем абароны для карэктнасці
для забеспячэння таго, каб дублюецца адрасы электроннай пошты не да канца ў табліцы.
>> Зараз, наадварот, для назвы вы, верагодна, не хочуць, каб гэта ўнікальнае
таму што тады ніколі не можа быць 2 ці 2 Davids Майк Сміт, напрыклад,
ў базе дадзеных, так што мы проста пакінуць у спакоі.
Я збіраюся ісці наперад і націсніце кнопку Захаваць ў правым ніжнім куце,
і ўсё выглядае добра, але заўважыў тут
гэта частка, якая на дадзены момант мы не будзем марнаваць занадта шмат часу на
таму што сінтаксіс трохі складаным, і мы не павінны ствараць табліцы
Усё, што часта, але SQL сам па сабе з'яўляецца мовай,
сінтаксісу, для якіх гэта прама тут, што я вылучыў.
Што PHPMyAdmin сапраўды гэта стварае вэб-інтэрфейс для вас
, З якой вы можаце зэканоміць час і не давядзецца ўручную ўводзіць з
даволі доўгі SQL запытаў накшталт гэтага.
>> Іншымі словамі, калі вы хочаце, каб ўручную стварыць гэтую табліцу,
альбо на гэтай чорна-белай радкі або нават у PHPMyAdmin
З дапамогай гэтай ўкладкі іншы, на гэтай ўкладцы SQL, дзе вы можаце набраць у любым запытаў SQL
Вы хочаце, шчыра кажучы, гэта заняло б мне хвіліну
на самай справе памятае ўвесь сінтаксіс, і нават тады я б, напэўна,
зробленыя некаторыя памылкі друку, таму гэты інструмент з'яўляецца карыснай рэчы, як, што, і гэта таксама павучальна.
Вы можаце пачаць рабіць выснову, што сінтаксіс
проста добрае каляровае кадаваньне, што PHPMyAdmin дадае
для нашага візуальнага выгоды.
А цяпер давайце зробім гэта замест гэтага.
Дазвольце мне перайсці на ўкладку Устаўка на вяршыні, і дазвольце мне ісці наперад і ўставіць, напрыклад,
Ідэнтыфікатар скажам, на самай справе мяне не хвалюе.
Гэта будзе аўтаматычнае прырашчэнне. Я хачу, каб база дадзеных справіцца з гэтым.
Але я буду Давід, і мая электронная пошта павінна быць malan@harvard.edu.
>> Давайце пойдзем далей тут і пакласці ў Майк Сміт іншы.
Я дам сабе прозвішча, а таксама,
і мы павінны быць яму smith@example.com,
і тады, дзе я магу ісці далей?
Ну, гэта выглядае як пайсці, кнопку націснуць, і вуаля.
Звярніце ўвагу, у верхнім 2 радкі устаўленыя.
Гэта рэальны запыт SQL.
Гэта PhpMyAdmin інструмент выкананы для мяне,
але ў канчатковым выніку, заўважце, калі я зараз перайдзіце на ўкладку Агляд,
, Каб убачыць 2 радкі ў гэтай табліцы, вельмі нагадваюць эстэтычна
у табліцы мы бачылі раней для нашых карыстальнікаў ад PSET 7,
адзін з якіх з'яўляецца Дэвід малая, адзін з якіх у цяперашні час з'яўляецца Майк Сміт.
Але толькі, каб быць яснай, мне не трэба выкарыстоўваць PHPMyAdmin,
І сапраўды, вы збіраецеся ў бліжэйшы час пісаць код для PSET 7
, Якая аўтаматызуе працэс дадання радкоў, выдаленне радкоў, абнаўленне радкоў і да т.п.,
так што дазвольце мне замест гэтага перайсці да ўкладцы SQL тут
і тыпу SELECT * FROM студэнтаў, дзе
электронную пошту = "malan@harvard.edu".
>> Іншымі словамі, выкажам здагадку, зараз у вас ёсць
некаторыя HTML форме, і карыстач уводзіць свой адрас электроннай пошты, сярод іншых галінах,
і мэта зараз знаходзіцца ў PHP на заднім канцы кода
на самай справе шукаць іншыя дэталі гэтага карыстальніка.
Якое ваша поўнае імя? Які ваш ID нумар?
Вы маглі б напісаць SQL запыт, як гэта, абярыце * ад студэнтаў
дзе ліст = "malan@harvard.edu".
І калі я затым націсніце кнопку Перайсці, заўважылі, што я павінна, і сапраўды я, вярнуць толькі адзін радок.
Майк выключаны з гэтага набору вынікаў, так як калекцыі радкоў
звычайна называюць, таму што ён не мае той жа адрас электроннай пошты, як я.
>> Цяпер, зноў жа, тут PSET 7 вы зможаце выкарыстоўваць PHPMyAdmin як адміністрацыйны інструмент
і педагагічнай інструмент, каб даведацца пра свой шлях
па ўсім свеце SQL, але ў канцы дня
Вы збіраецеся пісаць гэтыя запыты ўнутры фактычны код PHP,
і таму сочыце за абнаўленнямі ў кіраўніцтве Zamyla у прыватнасці
дзе вы атрымаеце тур па размеркаванні код для гэтай праблемай набору
дзе мы далі вам не толькі эстэтыка для старонкі ўваходу
і добры сэксуальны лагатып, які кажа CS50 фінансаў, але мы таксама далі вам
кучай функцый, якія зробяць вашу жыццё крыху лягчэй.
Мы таксама напісаў частка PSET для вас,
Уваход частка яго, у прыватнасці, каб даць вам адчуванне прадстаўнік дызайн
што на самай справе выкарыстоўвае кантролер, напрыклад, index.php,
login.php і да таго падобнае, і тады вы ўбачыце PSET таксама маецца каталог шаблонаў
, Якая мае ўсе свае погляды, усё эстэтыкі.
І таму агульны працоўны працэс у PSET 7 будзе ў тым, што
Вашы карыстальнікі наведаць кантролер праз URL у браўзэры.
Гэта Кантролер змяшчае PHP код, які вы напісалі, так і ўнутры вашага кода PHP
можа быць некалькі радкоў SQL укладзеныя ў падвойныя двукоссі
і перадаецца ў функцыю мы напісалі называецца запытам
, Якія дапамогуць вам мець зносіны з базай дадзеных без выкарыстання нешта накшталт
адміністрацыйных інструментаў, як PHPMyAdmin.
>> Вы зможаце пісаць SQL заявы ў PHP кода
і вярнуцца PHP масіў выніковага набору,
радкоў, якія фактычна адпавядаюць дадзеным запыце.
А так жа вы зможаце зрабіць ўстаўкі або выдалення
або абнаўленняў і да т.п., сінтаксіс якога вельмі падобны,
і вы ўбачыце, з некаторых інтэрнэт-спасылкі, з размеркаваннем код
і ад PSET спакаваць сябе ў дакладнасці, як ісці аб гэтым.
Зразумейце, у канчатковым рахунку, мы сапраўды проста драпаць паверхню SQL
і MySQL, але ўлада гэта сапраўды тое, што ён вызваляе вас
засяродзіць увагу на праблемы вы хочаце вырашыць, выкарыстанне выпадкаў вы хочаце рэалізаваць
не турбавацца цалкам гэтак жа, па меншай меры, на ранняй стадыі,
пра тое, дзе і як захоўваць і шукаць базу дадзеных,
і гэта цалкам літаральна, дзе Facebook сама атрымала свой пачатак
Выкарыстанне MySQL, а затым з дапамогай больш MySQL сервер, а затым больш сервераў MySQL
да часу, пакуль яны тады былі сапраўды пачаць думаць над тым, як
сховішча дадзеных, як захоўваць рэчы, нават больш эфектыўна,
так што нават калі мы лічым само сабой якія разумеюцца той факт, што індэксы і ўнікальныя абмежаванні
і гэтак далей проста працаваць ёсць вельмі цікавая размова
што гэта можа ў канчатковым выніку прывесці ўсіх да, так разумею, што мы проста драпаць паверхню
, Што ў канчатковым рахунку можа для вас ці вашых праектаў становяцца зусім няшмат вялікіх дадзеных.
>> З улікам сказанага, давайце заканчваецца, і мы ўбачымся на наступным тыдні.
[CS50.TV]