[Powered by Google Translate] [Тыдзень 9] [David J. малая - Гарвардскі універсітэт] [Гэта CS50. - CS50.TV] Добра. Сардэчна запрашаем назад. Гэта CS50, і гэта пачатак тыдня 9. Сёння мы сканцэнтраваны, у прыватнасці, на дызайн, больш не ў кантэксце C але ў кантэксце PHP і трохі SQL і трохі JavaScript, асабліва да канца і PSET 7, а таксама канчатковы праект. На самай справе, калі вы знаходзіцеся ў дадзены момант ваш канчатковы праект , Дзе, як мяркуецца на гадзіну або каля таго таму вы па крайняй меры, пачалі даваць некаторыя думкі на ваш канчатковы праект, і вы думаеце вы хацелі б супрацоўнічаць з 1 ці 2 аднакласнікамі, калі ў вас узніклі праблемы з падключэннем з названай аднакласнікаў, не саромейцеся запоўніць форму на cs50.net/partners/form. Ён проста пытаецца, хто ты, які праект вы думаеце пра тое, дзе вы жывяце толькі па тэхнічных прычынах. І потым, калі вы хочаце, каб трымаць вочы на ​​працягу наступнага тыдня або каля таго табліцу URL там, Вы можаце ўбачыць, толькі для чытання версію Google Doc , У якой мы збіраем гэтую інфармацыю. Так што калі вы хочаце працаваць з кімсьці, усімі сродкамі, не саромейцеся звярнуцца да людзей з дапамогай гэтага механізму. Але большасць людзей працуюць сола. Гэта зусім нармальна. Таму не лічу, што гэта ў любым выпадку абавязкова. У пятніцу ён быў толькі я і яшчэ некалькі камандзе тут, пустым тэатры, па большай частцы. Там было 3 турысты сядзяць там, наверсе, так, каб было трохі няёмка. Тое, што мы казалі толькі пра тое, баз дадзеных і мы гаварылі пра PSET 7 няшмат. І калі вы выпадкова не злавіць, што на відэа прама зараз, гэта нармальна. Я пастараюся, каб вызначыць любыя ўмовы, якія мы інакш ўспрымаем як належнае на аснове лекцыі ў пятніцу. Але сёння мы будзем старацца, каб вы ў кропку не проста магчымасць зрабіць нешта накшталт PSET 7 але на самой справе разумеючы, што адбываецца пад капотам, Асабліва некаторыя абстракцыі, якія мы ставім на месца ў файле functions.php , Каб зрабіць вашу жыццё крыху лягчэй, але так, што вы ў канчатковым рахунку зразумець так што, калі навучанне колы адарваліся праз некалькі тыдняў вы ўсё яшчэ можаце выжыць У рэальным свеце і зрабіць гэты матэрыял без CS50 рамкі пад вамі. Гэта $ _SESSION, для тых з вас, хто знаёмы ці хто ўжо злавілі відэа ў пятніцу, што ж СЕСІІ давайце зробім У PHP на аснове вэб-прыкладанняў? Гэта суперглобальная зменнай, якая азначае, што ён падобны па духу GET і POST і некаторыя іншыя, але што гэта за справа карысна? Што такое СЕСІІ выкарыстоўваецца? Так. [Студэнт] ўваходу ў ўліковы запіс Прабачце? [Студэнт] ўваходу ў уліковы запіс ўваходу ў уліковы запіс самай справе. У PSET 7 мы выкарыстоўваем гэтую сесію суперглобальная для палягчэння ўваходу ў ўліковы запіс І што прыемна аб гэтым суперглобальная тым, што гэта асацыятыўны масіў. Асацыятыўны масіў, нагадаем, з'яўляецца толькі масіў, але чые паказчыкі не павінны быць нумары як 012. Яны могуць быць лікамі або яны могуць быць нават радкоў. І таму, калі вы нырнулі ў PSET 7 яшчэ, вы можаце ўспомніць, што мы захоўваем ключ, які завецца ID Унутры гэта асацыятыўны масіў, значэнне якога з'яўляецца нешта накшталт 123 - што ў цяперашні час увайшлі ў ID карыстальніка з'яўляецца. Матывацыяй для гэтага з'яўляецца тое, што нават пасля таго, як карыстальнік наведаў лакальны ці мой сайт у цэлым, а затым яны ўвайшлі ў сістэму, нават калі яны не клікаюць па спасылцы або вярнуцца на свой сайт за 5 хвілін ці нават гадзіну ці нават дзень, але яны пакідаюць іх адкрытымі вокны браўзэра, праз гэты суперглобальная я магу памятаць, што яны зайшлі Іншымі словамі, гэта дазваляе мне захоўваць некалькі доўгатэрміновых што я хачу пра карыстальніку. І вы можаце думаць, гэта сапраўды як увасабленне кошыку. Такія месцы, як Amazon, відавочна, дазволіць вам пакласці рэчы ў кошык, але HTTP, пратакол, што паўнамоцтвы ў Інтэрнэце, з'яўляецца асобай без грамадзянства У тым сэнсе, што, калі вы наведваеце вэб-сайт, па большай частцы ў вас няма некаторай пастаяннай падлучэнне да сеткі паміж браўзэрам і серверам. Як толькі вы запампавалі HTML і выявы ў фармаце JPEG і GIF-файлы і ўсё такое, злучэнне сыходзіць, і вы проста мець копію HTML і яшчэ шмат чаго з сервера. Але калі сервер хоча ўспомніць нешта пра вас, нагрузка на сервер на самай справе запісаць гэтую інфармацыю. І таму вы праграміст, якія маюць кантроль над серверам можна паставіць самы, што вы хочаце ўнутры гэтага суперглобальная асацыятыўны масіў і яна будзе там у наступны раз, калі карыстальнік вяртаецца, будзь то хвілін ці нават дзён, калі яны не закрываюць вокны браўзэра, у які момант СЕСІІ знікае. Такім чынам, гэта эфемернае захоўвання, гэта надзвычай нетрывалы, і гэта азначала, каб сысці Як толькі карыстальнік закрывае свой браўзэр - не толькі гэтай ўкладцы, часта ўвесь браўзэр, тым самым эфектыўна рэгістрацыі карыстальнікаў з. Так як гэтая рэч на самай справе рэалізаваны? Давайце кінем хуткі погляд на простым прыкладзе мы разгледзелі ў пятніцу. Для тых, хто незнаёмы, гэта было так проста, як гэта. Гэта вэб-старонкі, адзіная мэта ў жыцці, каб сказаць мне, Колькі разоў я наведаў гэтую старонку. Гэта першы раз у панядзелак, што я наведаў яго, гэтак ён кажа 0 раз. Але калі я пачну перазагрузкі старонкі, яна кажа 1 раз, 2, 3, 4, 5, і гэта ў канчатковым выніку проста трымаць на рахункі ўверх, уверх, уверх, уверх, уверх кожны раз я на самой справе кнопкі Абнавіць на ім. Так як жа гэта працуе? Дазвольце мне зайсці ўнутр гэтага файла пад назвай counter.php. У верхняй частцы яно ўсё сінім каментароў, але самае цікавае тут. У радку 13 мы называем гэтую функцыю session_start, і што літаральна ўсё, што вам трэба зрабіць, калі вы хочаце мець доступ гэтага спецыяльнага суперглобальная называецца $ _SESSION. Гэта робіць усё гэта магчымым, і мы ўбачым праз імгненне, як такое ўвогуле магчыма. У радку 16 апавяшчэнне, што я раблю. Калі ключ, званы лічыльнікам - іншымі словамі, значэнне індэкса - "лічыльнік" існуе ўнутры гэтага масіва называюць сесіі, тое, што я раблю з ёй у радку ніжэй? Што такое радок 18 робіш? [Неразборліва адказ студэнта] Што гэта? [Студэнт] Захаванне значэння. Добра. Гэта захоўвання значэння, якое знаходзіцца ў СЕСІІ цяпер у новых лакальных часовых зменных, $ Лічыльнікі ў ніжнім рэгістры. Звярніце ўвагу, што PHP ўжо трохі гультаяваты тут. Звярніце ўвагу, мы не маем ніякай згадкі пра Int або з якая плавае кропкай ці радок ці нешта ў гэтым родзе таму што PHP тыпізаваных слаба, у якім вы не павінны ўказваць тып зменнай, і ў гэтым выпадку тут я нават не абвешчаныя яшчэ. Я абвясціўшы яго ўнутры гэтых фігурныя дужкі, і ў адрозненне ад C, гэта на самай справе добра. Незалежна ад таго, наколькі глыбока ўкладзеных дэкларацыі зменнай у PHP - Усярэдзіне фігурных дужак, усярэдзіне фігурнай дужкай і да т.п. - яна будзе на той момант часу існуюць на астатнюю частку праграмы, да лепшага ці да горшага. Так што адразу становіцца глабальным, як толькі вы вызначылі яго, як мы робім тут. У адваротным выпадку, калі я не знаходжу ў гэтым няма нічога ў СЕСІІ суперглобальная, Я мабыць ініцыялізацыі гэтай зменнай лічыльніка ў 0, такім чынам толькі пры ўмове, што карыстач ніколі не быў тут раней. І тады гэта, вядома, павялічваючы лічыльнік як? Я абнаўляе значэння, што знаходзіцца ўнутры гэтага асацыятыўны масіў , Усталяваўшы яго роўным незалежна ад лічыльніка ў цяперашні час + 1. Калі я пракруціць ўніз тут, каб HTML-старонкі, гэта на самай справе даволі простая. Усё, што я ў целе гэтай старонкі: "Вы наведалі гэты сайт, каб і то-то часы". І гэта канструкцыі PHP. Калі вы робіце