[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 называецца рэха якая робіць тое ж самае, і ўсё гэта толькі больш намотваецца спосабамі сказаць