[Music kucheza] DAVID J. Malan: zote haki. Karibu tena. Hii ni CS50. Hii ni ya mwisho wa wiki 8. Na kama unajua, tuna pretty masaa ya kawaida ya ofisi katika chache ya kumbi dining, ikiwa ni pamoja na Annenberg. Na baadhi ya timu kindly alichukua photos baadhi siku za hivi karibuni. Na kwa heshima ya Halloween, sisi mawazo tunatarajia kushiriki moja kwamba badala hawakupata nasi kwa mshangao hapa katika Annenberg Hall tu nyingine usiku. Classmate wako Jacob vinavyotokana kwa picha hii, lakini ilikuwa zaidi amusing alikuwa kwenye Facebook, iliyofuata mazungumzo yaliyotokea baadaye. Wadhifa wake wa kwanza katika kukabiliana kwa picha yake ilikuwa hii. Dakika chache baadaye, aliamua kwa moja juu yake mwenyewe na hii. Ni aliendelea kisha kwenda hii, na kisha, hata zaidi amusingly ni wakati mama yake chimed katika. Na kisha hatimaye, inaonekana huyu alikuwa tu ruse ajabu kwa kucheza kwamba kinaendelea. Hivyo, kama ungependa kuona Jacob na wengine, kati yao Cynthia Meng, ambaye ni nyuma ya pazia la wafanyakazi CS50 zone, kichwa na URL hii na kucheza hii hapa. Hivyo bila wasiwasi zaidi, leo sisi kuendelea kuangalia hii katika programu ya mtandao, na viumbe halisi ya programu kwamba si kukimbia katika mstari amri yako, lakini badala kukimbia ndani ya browser. Takribani sasa, au sana muda mfupi, wewe kwenda kuwa katikati ya utekelezaji mtandao yako mwenyewe server, ambayo ni tofauti na programu ya mtandao. server mtandao katika pset6 ni wote kuhusu kuandika programu kwamba anajua jinsi ya kuchukua Maombi HTTP kutoka browser, au hata kutoka kwenu, ya binadamu, na mpango ujulikanao Telnet, na kisha kujibu ama maombi ya wale na mate nje HTML faili, au a jpeg, gif au, au hata faili .php. Lakini pamoja na mtandao wa kompyuta, si wanatakiwa tu kufungua PHP faili, kitu kuishia katika .php, na kisha mate nje yaliyomo. Ni walidhani kufanya nini kwamba faili ya kwanza? Hivyo kusema. Si kukusanya yake, sisi alisema Jumatatu, lakini rather-- Hivyo, kutafsiri. PHP ni lugha yake, na hivyo moja ya vipengele muhimu katika mtandao wako server, angalau kutekelezwa na sisi, ni uwezo huu kwa mtandao kompyuta yako taarifa, oh. Hii ni faili kuishia katika .php. Napenda si tu kutuma kwa user kama ni bidhaa tuli, lakini badala ya basi mimi kusoma mstari kwa line, kushoto na kulia, na kutafsiri. Na kufanya, kwamba guys mapenzi kimsingi Punt mpango katika appliance, na juu ya mengi ya mifumo ya kompyuta, tu kuitwa PHP. Hiyo ni jina la PHP Lugha ya mwenyewe mkalimani. Hivyo, kwamba kipande sisi kutekeleza kwa wewe, na nini kushoto kwa ajili yenu, hatimaye, ni idadi ya vipande, kati ya ambayo inatekeleza msaada kwa maudhui tuli. Lakini sasa, na kwa tatizo kuweka saba, wewe ni kwenda kuanza mpito kwa kweli kuandika PHP kificho kwamba anapata kutafsiriwa katika kuzungumza na mwisho nyuma Mbegu kwamba maduka ya habari. Basi hebu kuelewa kwanza michache ya superglobals haya na tu nguvu kiasi gani kupata nje ya sanduku kwa ajili ya bure na lugha kama PHP. Mambo huna kutekeleza mwenyewe. Hivyo, tuliona Jumatatu $ _GET, ambayo ni superglobal, ambayo ni PHP tu kusema kwa ajili ya kimataifa kutofautiana unaweza kupata mahali popote. Na nini ndani ya $ _GET? Nini ndani ya hii superglobal kwamba sisi kuona? Hakika kitakwimu katika angalau mtu mmoja anajua. Nini ndani ya $ _GET? Yeah? Watazamaji: Ni vigezo kuweka katika kamba swala. DAVID J. Malan: Perfect. Ni vigezo you kuweka katika kamba swala. Hivyo, katika mfano wetu wakubwa wa reimplementing Google wakati tulikuwa URL, na kisha swali alama, ambayo demarcates mwanzo wa HTTP vigezo, basi tulikuwa q sawa kitu, kama q ni sawa na paka, nini ingekuwa moja kwa moja kwenda ndani ya kwamba $ _GET super kimataifa kwa ajili yenu, kwa sababu ya PHP, ni muhimu ya Q, na ya thamani yake ya paka. Kwa maneno mengine, $ _GET na wote wa mambo haya ni arrays associative, meza hash ya kila aina, kwamba funguo kuhifadhi na maadili. Sasa, nyuma katika pset5, hash meza unaweza kuwa kutekelezwa, au kujaribu unaweza kuwa kutekelezwa, kwa kweli ilikuwa ufanisi associative safu, muundo data ambapo unaweza kujiunga funguo na maadili. Lakini katika pset5, maadili walikuwa duni. thamani alikuwa kimsingi kweli au uongo. Ni neno katika kamusi? Hivyo, wakati wewe heshi neno kama apple kuona kama apple ni katika kamusi, hundi yako ya kazi labda akarudi kweli au uongo. Hivyo, hiyo ni ufanisi thamani sisi ni kupata nyuma. Lakini tuliona Jumatatu kwa ufupi, unaweza hakika kujiunga zaidi ya kuvutia maadili kuliko tu kweli au uongo na funguo, kama apple. Unaweza kweli kurudi kamba kiholela, na kwa kweli, kwamba ni nini $ _GET na hizi vigezo vingine basi wewe kufanya. Hivyo $ _POST ni sawa katika roho, lakini kama wewe kuwasilisha fomu kupitia post, tofauti HTTP njia hiyo ni kutumika kwa ajili ya mambo kama mkopo, na habari binafsi, na hata habari binary kama photos, mambo hayo kuishia ndani ya $ _POST. Na kwa kweli kwa files kama jpegs na whatnot, kuna hata mwingine si kwamba hapa aitwaye $ _FILES vilevile. Hivyo, server sisi si kukaa juu ya sana sana, lakini inakupa upatikanaji kutatua wa maelezo ya ngazi ya chini kuhusu server yenyewe kwamba unatumia. Cookie na kikao, ingawa, tutaweza kwa ufanisi kuona sasa. mwisho ni nini sisi kutumia ili kutekeleza dhana ya gari ununuzi. moja super rahisi, lakini wanakumbuka kwamba tulikuwa mfano huu hapa, kuhesabu mara ngapi alikuwa alitembelea ukurasa hii kabla. Lakini leo, badala ya kuangalia athari ya hii, hebu kufungua Chrome Inspekta, ambayo unaweza kawaida kufanya kwa kubofya kulia au Kudhibiti kubonyeza mahali popote kwenye mtandao, na kisha kuchagua kukagua kipengele. Au unaweza kwenda kwa njia ya menus kwamba sisi kuelezea katika spec pset6 ya. Na mimi nina kwenda tab Mtandao hapa, na hebu kuangalia kwa muda HTTP trafiki kwamba kwenda na kurudi. Hebu kwanza kwenda mbele na cache wazi Chrome. Hivyo baadhi ya unaweza kuwa familiar na mbinu hii tayari, na sisi ni kwenda kuitumia kwa debugging madhumuni hapa. Sasa sisi kama kompyuta wanasayansi ni kwenda kuanza kufanya hivyo kwa debugging madhumuni, ambapo sisi wazi cache, kawaida, ili tuweze Unaweza kujikwamua mambo aitwaye cookies. Hivyo wewe ni pengine kwa ujumla ukoo na kile cookies ni, au angalau kwamba zipo, lakini nini uelewa wako wa kwao, kama tu user ya kompyuta, ni nini kuki? Yeah. Watazamaji: Ni kidogo ni of-- vizuri, si kidogo katika muda wa sayansi ya kompyuta. Ni kipande cha data kwamba tovuti zituma kwenu ili kuwa na uwezo wa kurekodi takwimu juu ya wewe. DAVID J. Malan: Sawa, nzuri. Hivyo ni kipande cha data kwamba server, unaweka kwenye kompyuta yako, na hebu kujumlisha hata zaidi, ni muhimu value-- vizuri, hiyo ni kupata sahihi zaidi. Ni kipande cha habari, kipande cha data, kwamba server ni uwezo kuweka kwenye kompyuta yako na mara nyingi sana, server gani hii ili kukumbuka wewe ni nani. Hivyo kwa mfano, ni tabia mbaya ni wewe pengine watumiaji katika maeneo kama Facebook, au Gmail, au wengine kabla, na wewe kuingia katika na yako username na password, na kisha baada ya kuwa, kwa baadhi ya simu ya dakika au masaa au siku hata, server anakumbuka kwamba wewe ni, kwa kweli, watumiaji katika. Sasa, jinsi ni kwamba kweli kinachotokea? Kwa sababu wewe ni hakika si retyping username na password yako kila wakati navigate kwa ukurasa tofauti kwenye Facebook. Hivyo ni zamu nje cookies ni jibu. kuki unaweza kufikiria kama, aina ya kama, mkono digital muhuri kwamba unaweza kupata katika pumbao Hifadhi au klabu kwamba kimsingi inaonyesha umekuwa hapa kabla, na wameweza tayari umeonyesha ID yako bouncer, kwa mfano, na kwamba klabu au Hifadhi lazima sasa kudhani kuwa wewe kuwa kuthibitishwa tayari. Wewe tayari kutambuliwa na yake. Hivyo, pamoja na kwamba katika akili, hebu kufungua kukabiliana hapa. Basi mimi kwenda mbele, mimi tu alifanya, na wazi yote ya cookies yangu. Na sasa nini mimi kwenda kufanya ni kushikilia kuhama, tu kwa ajili ya hatua nzuri, na kwa nguvu upya ukurasa. Kuhama tu kuhakikisha kwamba hakuna kitu anapata cached. Na hapa ni ombi kwamba alikwenda na kurudi. Hivyo hapa tuna ombi, na basi mimi kuvuta chini hapa, na mengi ya hii ni maelezo ya aina ya uninteresting kwa sasa kwamba browser ina moja kwa moja alimtuma, lakini hebu bonyeza Mtazamo Chanzo kuona headers ghafi. Na kama wameweza dived katika pset6 tayari, utasikia hakika kutambua mambo kama hii, na labda baadhi ya mistari haya mengine hapa, lakini nini kuvutia zaidi kwa leo kama mimi kitabu chini, si kwa ombi lakini kinachojulikana majibu, mstari huu pengine inaonekana familiar. Kwamba ni jambo jema wakati unaweza kuona 200 sawa. Inavyoonekana hii ni tarehe na wakati juu ya server na kuna rundo la mambo. Oh, hii ni ya kuvutia. Zinageuka wakati wowote kutumia PHP, angalau katika kompyuta hii, server akimtemea nini toleo la PHP unatumia. Ambayo, kwa kweli, kwa ajili ya usalama madhumuni, si jambo zuri. Lakini, tutaweza kuja nyuma na kwamba baadhi ya wakati mwingine labda. Lakini sasa hii ni line Juicy leo, na tuliona kwa ufupi baadhi ya haya, Nadhani na Facebook wakati sisi poked karibu Inspekta wakati huo, kuweka kuki ni nini kupanda kipande kidogo cha habari kwenye kompyuta yako. Hii ni header HTTP hiyo ni ufanisi kuwaambia browser yako, Chrome, IE, chochote, hey browser kuhifadhi juu ya mtumiaji kuendesha gari kwa bidii, au katika mtumiaji RAM, ufunguo aitwaye PHPSESSID, ambayo ni nukuu shorthand kwa ajili ya kikao ID, na kuwapa thamani ya 0vlk8t, dot, dot, dot. Pseudo kweli kwa muda mrefu random alphanumeric kamba. Ni tu idadi kubwa kweli kweli, lakini ni encoded na barua na idadi hivyo kwamba ukubwa wa inaweza kuwa hata kubwa kuliko namba peke yake. Na kisha, kwa njia, Njia = /, kwamba tu ina maana kwamba kuki hii inapaswa kuwa kuhusishwa na ukamilifu wa tovuti, si tu maalum ukurasa jambo zima. Hivyo hii ni kwamba virtual mkono stempu. Ni kana kwamba server, Facebook, au katika kesi yetu appliance, ina 0vlk8t halisi ya maandishi na kadhalika, kwa upande wako. Taarifa ya nini server ya, si kufanya ni siyo kuhifadhi jina la mtumiaji yangu, hakika si kuhifadhi password yangu. Badala yake, inaonekana kuwa kuhifadhi habari Pseudo random hivyo kwamba hakuna mtu anayeweza nadhani nini mkono wangu muhuri ni. Upande server, wakati huo huo, server ni kwenda kukumbuka, pengine katika orodha ya au kitu, kwamba mtumiaji, ambaye katika siku zijazo inatoa mkono muhuri wa 0vlk8t, dot, dot, dot, lazima kuhusishwa na hii gari ununuzi fulani, hivyo kusema. Kwa maneno mengine, kama mimi sasa kwenda nyuma hapa na upya ukurasa huu, jinsi gani server kujua kwamba mimi alitembelea mara moja? Au kama mimi kufanya hivyo tena, jinsi gani server kujua kwamba nimepata alitembelea mara mbili? Vizuri kama mimi kwenda chini kwa hii ombi hivi karibuni, ambayo sasa ya tatu kwamba nimepata alimtuma kwa jumla, taarifa ya ombi yangu sasa. Bado kuna hii kuomba hapa, sawa kama kabla, bado kuna rundo zima ya mambo ambayo tumekuwa kupuuzwa kama kabla, lakini header mwisho sana, hii muda, kwa sababu nimekuwa hapa kabla, ni toleo la hii virtual mkono stempu. Ambapo mstari huu hapa, si kuweka kuki lakini kuki COLON PHPSESSI = 0vlk8t, kwamba tu browser yangu moja kwa moja kuwasilisha hii stempu mkono ili sasa server, kwa haraka kama anatambua, ooh, hii ni user 0vlk8t dot, dot, dot, Sasa naweza kukumbuka yeye au yeye ni nani na reassociate na user kwamba chochote habari nataka, na wote wa habari ambazo zinaweza kuhifadhiwa na wewe, programu, katika $ _SESSION. Hivyo kuwa wazi, kama mimi kufungua halisi ya haraka katika gedit kwamba faili halisi, counter.php, katika jeshi mitaa yangu directory umma kama kabla, taarifa kwamba, kwa kweli, Mimi hatimaye kuhifadhi katika $ _SESSION Kunukuu unquote "counter," thamani ya kukabiliana uliopita ambayo Mimi kupata kutoka mistari haya hapa kwamba sisi inaonekana katika wakati wa mwisho pamoja na moja. Hivyo chini ya Hood, hiyo ni kuki zote ni. Ni tu aina ya digital mkono stempu kwenda na kurudi, na kusema ukweli kama wewe kufungua Chrome Inspekta kwenye tovuti yoyote wewe kutembelea leo, pamoja na super uwezekano mkubwa, wewe ni kwenda kuona labda moja, kuki labda nusu dazeni kuwa kukumbukwa na wewe. Na bado mbaya, kama wale tovuti wewe ni kutembelea wote wana matangazo, ambayo ni hakika ya kawaida kabisa leo, na kama matangazo hayo ni kuja kutoka kwa baadhi ya chama kati, mtu kama Google au AdWords kama wao kuwaita moja ya bidhaa zao au nyingine wachuuzi kama kwamba kuuza matangazo, nini kuvutia, na kusema ukweli kile kidogo inatia mashaka, kuhusu jinsi HTTP kazi, ni kwamba kama una ad iliyoingia katika Facebook.com, na Google.com, na Harvard.edu, idadi yoyote ya Nje, hivyo ni kama kwamba kuna mtu kati ambaye ni kuwahudumia up matangazo kwa ajili ya wote watatu wa tovuti hizo, zinageuka kuwa cookies ni kwa uwanja. Hivyo kama una ad kuja kutoka kampuni hiyo kwenye tovuti mbalimbali, kampuni ambayo inaweza ufanisi kufuatilia ambao wewe ni katika tovuti hizo. Harvard wanaweza kujua wewe kutembelea Facebook. Facebook wanaweza kujua na wewe kutembelea Harvard. Lakini chochote tangazo huduma wao ni kutumia kama kwamba domain ni sasa katika wawili Harvard.edu mtandao kurasa na Facebook.com webpages, huyu katikati anaijua wewe ni nani kwa sababu ya biskuti hizi kuwa pamoja hela, au tuseme, kwamba kinachojulikana middleman. Hivyo tutaweza kuja nyuma hii katika athari usalama wake, lakini kuna mengi ya habari kuwa kuhifadhiwa kuhusu wewe wakati wowote kutembelea zaidi ukurasa yoyote mtandao juu ya biashara na ni kweli inapunguza kwa hii utaratibu rahisi sana. Nini kinatokea, basi, kama wewe ni super Paranoid na kuamua kwenda katika Chrome au IE au chochote na kuzima cookies yako? Nini kitatokea? Yeah? Wewe really-- umefanya kosa haki hii? OK. Hakuna, kwenda mbele. Watazamaji: Baadhi ya Nje hawana kazi bila kama Facebook. DAVID J. Malan: Yeah! Nje hivyo baadhi ya tu kuacha kufanya kazi. Na katika tovuti wengi siku hizi kwamba kimsingi kutegemea biskuti, hasa kama wana wewe kuingia katika, wao ni kwenda tu kuvunja. Kwa sababu kufikiria mbadala, kama tovuti hana njia ya kukumbuka wewe ni nani, na kwa hiyo kivinjari yako si anayewakilisha pamoja na kila HTTP ombi la hii stempu mkono, ufanisi tovuti kama wanaokwenda Facebook kuwa na haraka wewe kuingia katika kila wakati darn mabadiliko ya kurasa, au bonyeza kiungo, ambayo ni hakika si user hasa nzuri uzoefu. Hivyo kwamba kuna, pia, ni miongoni mwa awamu ya pili ya biashara. Hivyo bila wasiwasi zaidi, hebu kuchukua nafasi ya kwamba kwa programu ya mtandao, katika lugha kama PHP, unaweza kukumbuka habari kama kwamba katika tatizo kuweka saba wakati wewe kutekeleza yako mwenyewe E * Biashara-kama tovuti ambayo kununua na kuuza hisa, itabidi kukumbuka hasa nini user imekuwa kununuliwa na kuuzwa na yeye au yeye ni nani kwa njia ya kikao hiki. Lakini sisi ni kwenda haja njia fancier kuliko email kuanza kuweka kote habari. Haki? Siku ya Jumatatu, sisi aliyesema kuhusu Frosh IMS na jinsi katika toleo moja ya tovuti ya kwamba, miaka iliyopita, sisi alifanya alikuwa email Proctor ambaye ni katika malipo ya michezo intramural programu, jina, na jinsia, na kama au wao ni nahodha, na Dorm ya mtu ambaye ni kusajili kwa intramural mchezo. Hivyo si mbaya, lakini yeye au yeye basi alikuwa na Troll kupitia email zao, kufanya spreadsheet au kitu kama kwamba, kuweka kila kitu kupangwa. Hivyo hakika sisi kama programmers Unaweza kufanya hivyo kwa kuwa mwangalizi. Na hivyo kuingia katika SQL, Uliza muundo lugha, ambayo ni kwenda kuangalia pretty tofauti na wote wawili C na PHP, na wewe utakuwa mbizi katika mikono mengi zaidi juu ya PHP na tatizo kuweka saba lakini pia SQL, au SQL, hii ni lugha ambayo matumizi ya kuzungumza na database. Lakini nini database? Vizuri unafikiri ya Mbegu, angalau kwa sasa, kama tu kuwa kama Excel faili, au kama wewe ni Mac namba user a file, au kama wewe ni Google Apps user spreadsheet Google, ni ufanisi database, au kweli hasa database kimahusiano. Mbegu kimahusiano ni tu kitu ambacho ina safu na nguzo, na unaweza kuhifadhi aina yoyote ya habari katika safu hizi au nguzo. Lakini nini ni nzuri kuhusu SQL, na kuhusu database halisi, si tu spreadsheets au spreadsheets Google, ni kwamba unaweza kutumia lugha kwa kweli nitafanya maswali kwa kuingiza data, kuondoa data, kuangalia kwa data, hata muhimu zaidi, na wewe hawana kuitumia haki manually Kama unaweza kawaida Google spreadsheet kama hii. Hivyo katika SQL, kuna rundo la kauli ya msingi au vipande ya utendaji kujengwa katika. Kuna wengi zaidi kuliko haya, lakini unaweza kwenda umbali mkubwa tu kwa kujua kwamba Lugha hii inaitwa SQL ina angalau nne kauli unaweza kujiinua. Kufuta, kwa ajili ya kuondoa data, Kuingiza, kwa ajili ya kuongeza safu, Mwisho, kwa ajili ya kubadilisha safu, na kuchagua, kwa ajili ya kupata nyuma mistari na hiyo ni kweli nini SQL gani. Ni kazi kabisa juu ya safu hivyo kwamba wakati wewe kuingiza, au kuondoa, au update, au kuchagua nini wewe kupata nyuma kama kinachojulikana matokeo ya kuweka, kama safu ya safu. rundo la safu kutoka meza. Hivyo nyuma katika siku, na hata leo hii, unaweza kuingiliana na Mbegu kutumia mstari amri, lakini siyo hasa furaha ya kutumia hii dirisha nyeusi na nyeupe style na kwa kweli kutekeleza amri na poke kuzunguka Mbegu yako. graphical user interface, au GUI, ni zaidi vyema, arguably, na hivyo chombo sisi kupendekeza na preinstalled kwa ajili yenu juu ya appliance inaitwa phpMyAdmin. Ni bahati mbaya kwamba jumla jina la jambo hili ina PHP katika hilo, ni tu ina maana kwamba watu ambaye aliandika mpango huu wenyewe aliandika katika PHP. Lakini ni hatimaye kuhusu kuendesha server database, kama server MySQL kwamba unaweza kuwa, kama wewe kufanya, katika CS50 appliance. Hivyo kuna undani zaidi hapa kuliko tunahitaji huduma ya juu ya leo, lakini nini muhimu ni kwamba upande wa kushoto upande ni orodha ya databaser kwamba una kwenye kompyuta yako, juu ya CS50 yako appliance, au kuja miradi ya mwisho kwamba huenda kuwa juu ya upande wa tatu, kampuni ya tovuti au mtandao wa kompyuta, kwamba unaweza kuwa kulipa kwa ajili ya nafasi. Hivyo upande wa kushoto ni database, moja ambayo ni pset7 ambayo mimi zilizokopwa kutoka ijayo wiki pset, na kisha juu kuna taarifa kuna rundo la tabo, moja ambayo ni database, SQL, hadhi, watumiaji, kuuza nje na kadhalika. Hivyo unaweza kwenda kwa muda mrefu njia tu kwa kutambua kwamba wengi wa interface user ni katika safu ya kushoto juu na hela ya juu haki juu huko. Hivyo nini tunaweza kweli kufanya na hii? Naam, hebu kuanza kujenga kidogo ya habari kama ifuatavyo. Tuseme zifuatazo ni kesi, kama itakuwa katika siku chache tu, unataka kutekeleza tovuti, iitwayo CS50 Fedha, na tovuti hii inakuwezesha kununua kunukuu unquote na kuuza hisa. Na ni kwenda kufikiri bei ya wale hifadhi, hatimaye kama utaona, kwa kuzungumza na Yahoo Fedha. Ambayo, ajabu, ina huduma ya bure ambapo unaweza kupita katika hisa ticker kama GOOG kwa Google, na itakuwa kukupa nyuma ya hisa ya sasa ya Google bei ndani ya siku za nyuma dakika chache angalau. Hivyo itabidi kutumia kwamba, hatimaye, kujifanya kwa mtumiaji kununua na kuuza halisi hifadhi kwa kutumia fedha virtual, lakini jambo la kwanza kabisa user kwenda kuona ni hii screen login ambayo anauliza yao kwa jina la mtumiaji yao na password. Na hivyo, moja ya kwanza changamoto kwa ajili yenu katika pset7 ni kwenda kuwa na kutekeleza ya mwisho ya nyuma Mbegu, spreadsheet kama wewe, hiyo ni kwenda kuhifadhi majina ya watumiaji na nywila na hatimaye kile hifadhi wao wenyewe, na wangapi, na kiasi gani fedha wana, hivyo rundo ya mambo mengine katika meza nyingine, au Spreadsheets. Basi hebu tuangalie jinsi hii wapate kuonekana katika mtazamo wa kwanza. Mimi nina kwenda nyuma appliance na mimi nina kwenda kwa URL hii hapa phpMyAdmin localhost / phpmyadmin na utaona kwamba inachukua mimi interface hasa kama tuliona juu ya screen risasi, na hapa mimi kuwa database ya ziada aitwaye hotuba kwa leo na basi mimi kwenda mbele kwanza na bonyeza pset7. Mimi wanaonekana kuwa wanandoa wa chaguzi, moja kwa mwezi, kwa ajili ya kujenga meza mpya, na kiungo kwa watumiaji, ambayo meza Mimi tayari kuundwa. Basi nini meza? Hivyo kama wewe kutumika Excel kabla, na kama wameweza namba kutumika au Google Spreadsheets, wewe kufungua dirisha na wewe kupata rundo zima ya safu na nguzo, lakini basi kwa kawaida kuwa karatasi pamoja chini, au tabo tofauti. Unaweza kufikiri ya kila karatasi kama meza hivyo kwamba database, hatimaye, ni mchanganyiko wa meza moja au zaidi, moja au karatasi zaidi, katika dunia ya spreadsheet ya kawaida. Hivyo basi mimi kwenda mbele na click kwenye karatasi hii ya mazoezi kwamba mimi premade, aitwaye watumiaji, a.k.a. Mbegu meza. Na kama mimi kitabu chini hapa, napenda kuvuta nje kidogo, hii ni nini phpMyAdmin ni kuwaambia sisi ni ndani ya meza hii hivi sasa. Ni utata kidogo kwa mara ya kwanza mtazamo kwa sababu UI ni si Jambo prettiest katika dunia, lakini nini ni ya kuvutia ni sehemu hii hapa. ID, jina la mtumiaji, na hash. Mapema, na wewe utakuwa mitupu hii katika tatizo kuweka saba, sisi kukupa faili zenye super ndogo meza database, alikopa kweli kutoka hacker toleo tatizo kuweka mbili, ndani ya ambayo kuna safu sita. Moja kwa Belinda wote njia ya chini kwa moja kwa Zamyla, na taarifa ya kushoto ya wale majina ya watumiaji ni vitambulisho kipekee kama moja, mbili, tatu, nne, tano, sita, integers, na kisha na haki ni hashes. Na kama, ni tabia mbaya, wewe hakufanya tatizo hacker toleo kuweka mbili, lakini hash ni kama encrypted password na caveats wachache. Na hivyo, nini kuona hapa ni matoleo encrypted ya yote sita wa nywila yetu na tatizo kuweka mbili ya hacker toleo. Sasa kwa upande wa kushoto ni baadhi tu ya mambo GUI, editing safu hii, kuiga safu hii, kufuta safu hii. Lakini nini kuvutia sasa ni yafuatayo. Siwezi kweli kuanza majaribio na meza hii. Hivyo kama mimi kwenda na click SQL tab, mimi kupata hii sanduku kubwa maandishi. Na hii si jinsi tunakwenda kufanya hivyo wakati kweli kuandika code. Kuwa wazi, phpMyAdmin ni chombo tu kwamba kwenda hebu poke kuzunguka database na hebu majaribio na maswali. Hivyo kwa mfano, tuseme Mimi nitafanya hasa hili. Kuchagua, ambayo ni moja ya wale maneno nilivyoeleza awali, nyota, ambayo inawakilisha wote nguzo katika meza. Kutokana na kile meza? Vizuri, watumiaji. Na ilani kuna hii weird mkataba katika SQL ambapo wewe kweli kutumia nyuma ticks, kawaida, quotes si moja na quotes si mara mbili wakati majadiliano juu ya majina ya meza, hivyo nyuma kunukuu ni jambo juu ya mkono juu ya kushoto ya keyboard yako zaidi uwezekano. Hivyo basi mimi kwenda mbele sasa na kuondoka tu peke yake na kitabu chini na click Go, na sisi ni kweli kwenda kuona kitu kimoja. Sisi tu kunyongwa SQL query akisema kuchagua kila kitu nyota kutoka meza inayoitwa watumiaji, na nini kupata nyuma ni hii. Hatimaye, tutaweza kuwa na uwezo wa kufanya jambo sawa katika kanuni, lakini kwa sasa yote nilitaka je alikuwa kuona katika browser yangu. Naam hebu kufanya kitu tofauti kidogo. Napenda kwenda nyuma SQL tab, na hebu tu kusema kwamba nini? Zamyla amepoteza yote ya yake fedha, na kwa hiyo ni wakati kwa sisi kufuta yake kama mtumiaji. Yeye ni tena kuingia ndani. Hivyo mimi nina kwenda kusema kufuta from-- vizuri, kudumisha mtaji kwa uthabiti, kufuta kutoka kwa watumiaji ambapo. Na hivyo, tunaweza kuwa na hizi predicates, au hizi kufuzu, mwisho wa kauli yangu wapi na jinsi gani mimi kufuta Zamyla? Kwa jina lake Zamyla, hivyo safu, moja ya nguzo ilikuwa jina, hivyo ambapo jina = "Zamyla". Na hapa mimi kutumia mara mbili quotes au quotes moja, wewe tu kutumia nyuma ticks wakati kuzungumza juu ya majina, kwa mfano, ya meza au mashamba. Na napenda bonyeza Nenda hapa. Na sasa, ukurasa wa mtandao ni kuwa kidogo uptight. Au, je kweli wanataka nitafanya kufuta kutoka kwa watumiaji ambapo jina sawa Zamyla? Ndiyo. Hivyo sasa, kama sisi kurudi nyuma kwa meza yangu kwa kubonyeza watumiaji, taarifa kwamba Hm. Mimi goofed. Na kwa kweli, mimi aina ya clicked mbali hivyo kufunga hakuwa hata kuona nyekundu kosa ujumbe, labda. Nini mimi kufanya makosa? Watazamaji: Wewe hakuwa na haja capitalize jina lake. DAVID J. Malan: Yeah mimi mtaji jina lake, lakini yake Jina la mtumiaji kweli mimi alifanya makosa kadhaa, haki? Moja, jina la mtumiaji wake ni zamyla, lowercase Z, na jina safu ni jina la mtumiaji, si jina, hivyo hebu kufanya hili tena. Basi mimi kwenda mbele na kufuta kutoka kwa watumiaji ambapo jina la mtumiaji sawa kunukuu unquote "Zamyla". Wote haki? Hivyo hii inaonekana kidogo bora, basi niende kitabu chini na click Go. Ni bado kwenda yell saa yangu kwa kuwa na uhakika. Mimi bonyeza Ndiyo, na sasa tunaona, kusema ukweli hii kilichotokea, kwa kweli haraka, chini ya moja pili shaka, hii ni hasa swala kwamba got kuuawa. Kuthibitisha, basi mimi bonyeza watumiaji na kwa kweli sasa Zamyla ni gone. Sasa hebu kufanya kinyume. Tuseme kwamba Gabe anataka kujiandikisha kwa ajili ya tovuti. Nini SQL query, nini amri ningeweza aina kuongeza Gabe? Naam ni pretty moja kwa moja. Kuingiza ndani ya watumiaji, na sasa anapata kidogo cryptic. Mimi haja ya kutaja, kwa server, nini mashamba nataka kuwapa. Mimi si kweli huduma ya kile Gabe ya ID idadi ni, hivyo mimi nina kwenda ruka hiyo. Mimi badala kwenda kusema jina la mtumiaji, hash, na kisha maadili nataka kuweka kuna ni kwenda kuwa na Gabe. Na kisha hash yake, mimi sijui. Hivyo kwa sasa, mimi nina kwenda kuondoka kwamba kama kubwa ya kufanya. Tutaweza kuja nyuma kwamba katika tatizo kuweka spec kama jinsi wewe kweli kufanya hivyo. Hivyo taarifa, tena, syntax. Kuingiza ndani ya jina meza, kisha parenthesized orodha ya mashamba, nguzo unataka kuongeza maadili kwa, na kisha tu sawa halisi kuagiza kushoto haki ya maadili, unataka kuongeza, na ni kwa sababu tu wrapping Nakala ni kidogo kwa muda mrefu. Hivyo sasa napenda bonyeza Go. Mstari mmoja kuingizwa. Na sasa kama mimi kwenda nyuma watumiaji, nini kuvutia ni kwamba si tu ni Gabe sasa katika Mbegu, ni nini inaonekana ID wake? Naam ni saba. Kwa nini ni saba wakati sikuweza kuongeza? Hivyo hii, pia, ni moja ya makala ya kupata database. mengi ya kujengwa katika utendaji. Ni zinageuka kuwa wakati kuundwa meza hii, Mimi preconfigured ni moja kwa moja hawawajui ID kwa namna kuwa ni nyongeza. Hivyo kama wameweza milele poked karibu, na inaonekana katika kile yako Facebook ID idadi ni, siku hizi si kweli Jambo la kufanya, lakini kama Facebook API, Maombi Programming Interface, ambapo unaweza kupata nyuma rundo zima la data juu ya mwenyewe, kuhusu rafiki yako, na uhusiano wako. Na kile kutumika kuwa aina ya baridi, nyuma katika siku, ilikuwa kuangalia juu nini yako Facebook ID simu mara. Mark Zuckerberg wa, kwa mfano, ni tatu tangu yeye alikuwa mwandishi wa tovuti. Na kama hadithi inakwenda, yeye kuundwa mtihani akaunti mbili, watumiaji moja na mbili, ambayo yeye kisha ilifutwa. Na hivyo, Zuck, kama ni jina la mtumiaji wake juu ya Facebook, ni ID namba tatu, na sisi sote tuna namba sana siku kubwa kuliko tatu hizi. Kwa kweli, katika baadhi ya uhakika Facebook wakiongozwa mbali kutoka hata kwa kutumia int, ambayo ni thamani ya 32-bit, kwa kutumia ijayo hatua ya juu, kimsingi kwa muda mrefu kwa muda mrefu hivyo waweze kubeba hata zaidi ya watumiaji kusajili. Hivyo furaha kidogo ukweli wa kihistoria. Ili tu syntax ya msingi na ambayo tupate nitafanya michache maswali, lakini tunaweza kweli kufanya mambo rundo zaidi na SQL. Na utaona, hatimaye, katika tatizo kuweka saba kwamba una kufanya idadi ya maamuzi ya kubuni, kati yao ni kwenda kuwa na aina gani data kutumia. Hivyo tu kama katika C, kuna data aina katika database, kama MySQL, na aina data una kuchagua kutoka mashamba hayo ni pamoja na hapa. Char, varchar, Int, big int, alisema na tarehe ya muda, na wengine wengi. Basi hebu kweli kufanya hii. Hebu kujifanya kuwa hatukuwa mkono, wewe ni mtumiaji huyu meza na basi mimi kwenda mbele na kujenga, kwa mwenyewe, katika mihadhara database-- kweli basi mimi kwenda mbele na kufuta meza nina katika hapa tayari ili tuweze kweli kujenga hii. Whoops. Mimi nina kwenda kuacha hii meza, na sasa mimi nina kwenda tena hotuba database zaidi ya hapa, Mimi nina kwenda kujenga meza watumiaji kuitwa na hebu tu kufanya nguzo tatu awali na click Go. Sasa, kwa sehemu kubwa, tena, hii ni kutumia chombo hiki graphical aitwaye phpMyAdmin, na kile sisi ni kufanya sasa ni kujenga meza. Hivyo hii ni kama kwenda Picha, New, na kujenga mpya Excel faili. Hivyo ni kuuliza mimi chache maswali, kutoka kushoto kwenda kulia, nini jina la safu ya kwanza, na kisha jina la safu ya pili, na jina la tatu. Basi hebu recreate hii. ID, na kisha jina la mtumiaji alikuwa mmoja, na kisha hash alikuwa mwingine. Hivyo kile lazima aina data kuwa sasa kwa ajili ya shamba kama ID? Hapa ni orodha nzima ya aina data inapatikana na wewe katika database, na kwa sasa hebu tu kwenda na int. Thamani ya 32-bit, sijui kufikiri realistically mimi nina kwenda na zaidi ya bilioni 4 watumiaji katika akaunti yangu, katika huduma yangu, hivyo mimi nina kwenda kuweka kusonga juu ya swali ijayo. Mimi si kwenda kutaja urefu au maadili, si husika hapa kwa int, per se. Na sasa siwezi kutaja, inaonekana, default thamani, ambayo mimi si kwenda kwa bayana. kulinganishwa, sijui nini kwamba ni. sifa. Sasa sisi kwa kweli kufanya kuwa na kubuni maamuzi. Hivyo kuna mashamba chache hapa, si wote ambayo ni husika unsigned, lakini tu ina maana gani? Kwamba int lazima? Tu zisizo hasi. Hivyo ina kuwa 0 juu juu. Hapana, mimi si kwenda kuangalia sababu Nataka kila mtumiaji kuwa kitambulisho, haiwezi kuwa null. Na kisha, sisi kupata baadhi zaidi kubuni maamuzi ya kuvutia kama hii. Tutaweza kuja nyuma hii katika wakati huu, lakini kile kingine hulka ya database ni, ni kwamba unaweza kuwaambia server database kwenda mbele na kuongeza mwenyewe, yako RAM na wako nafasi ngumu disk, ili huchagua, na kuwekeza, na deletes, na updates ni kweli haraka. Tofauti hii kwa pset5. Kama alitaka kuangalia juu kitu katika hash meza yako, ambayo unafikiri ya kama database, ambaye alikuwa na kufanya yote kazi kwa ajili ya kufanya hash meza yako haraka. Ni kama, ni wazi, wewe. Haki? Alikuwa na kuweka katika faini wakati wote Mitsubishi mambo, kupata kazi hash haki, kuhesabia nje ya jinsi ndoo wengi kuwa. Lakini nini ni nzuri, tena, kuhusu database ni you Punt tu yote ya hii kwa watu wengine ambao walidhani huu kupitia kwa wewe, na kile Mimi nina kwenda kusema hapa chini ripoti ni kwamba shamba langu ID ni kwenda kuwa njia ya msingi ya kutambua watumiaji katika orodha hii. Mimi si kwenda kufikiri ya Zamyla kama Zamyla, Mimi nina kwenda kufikiria yake kama namba 6. Kwa nini ni, pengine, bora intuitively kufikiria na mfano kila mmoja wa safu yako binafsi kwa kutumia idadi badala ya kitu kama kamba, kama Zamyla au Gabe au kamba tena bado? Yeah? Watazamaji: ID ni ya kipekee? DAVID J. Malan: Sema tena? Watazamaji: ID ni ya kipekee? DAVID J. Malan: ID ni ya kipekee, lakini suppose-- kama kesi kwa ujumla na majina ya watumiaji, tuseme Mimi pia alisema kuna inaweza tu moja Zamyla katika dunia, na moja tu Gabe. Mimi naweza kulazimisha pekee kikwazo juu ya masharti, pia, kama mimi alitaka. Hivyo si wazo mbaya. Watazamaji: Zaidi salama. DAVID J. Malan: Zaidi salama, kwa nini? Watazamaji: Huwezi kuwaambia ambayo ni ambayo, kama katika user. DAVID J. Malan: Sawa, wewe siwezi kusema ambayo mtumiaji ni ambayo hivyo kuna faragha nyanja hiyo, hasa kama vitambulisho labda kuonekana katika URLs. Hivyo uhakika, kwamba inaweza aina ya kazi, pia. Mawazo mengine? Yeah? Watazamaji: Ni rahisi kufanya shughuli juu ya int. DAVID J. Malan: Hiyo ni kicker halisi. Ni ufanisi zaidi tu, au rahisi kwa kompyuta, kutekeleza shughuli juu ya integer. Haki? int ni uhakika kuwa 32-bit, ambapo Zamyla ni wahusika wachache kwa muda mrefu, Gabriel ni wahusika wachache zaidi ya muda mrefu, Davenport ni kweli kwa muda mrefu, na hivyo ni si hasa ufanisi kwa kutumia masharti kulinganisha maadili na kuangalia kwa ajili ya mashamba, na mashamba ya update, kama unaweza kupata mbali na integer moja tu. Bits 32 tu. Hivyo majina ya watumiaji, pia, kwa njia hii, hawana kuwa ya kipekee, ingawa pengine lazima kuwa, na hata katika njia hii pia user inaweza kuruhusiwa kubadili jina la mtumiaji wake. Basi hebu sasa kuondoka hii kama njia ya msingi ya kutambua mtumiaji. Hii ni kuwaambia database kwenda mbele na kuongeza mwenyewe ili kuangalia ups juu ya ID ni super haraka. Ai, horribly jina lake, tu ina maana Auto ya nyongeza, na hii ni hundi sanduku sisi haja ya kuangalia kutaja kwamba uwanja ID kwa kuwa moja kwa moja updated kwa ajili yangu, na kisha mimi nina kwenda kitabu na haki hapa na kusema ukweli mimi si kweli nia katika yoyote zaidi ya mashamba hayo. Hakika si leo. Hivyo mimi nina kwenda nyuma hapa, safu ya kwanza, ambapo Mimi haja ya kutaja jina la mtumiaji na hash, na hebu angalau kuzingatia pili moja kwa sasa. Int ni pengine si wito haki, hivyo nini mantiki zaidi labda? Watazamaji: Nakala. DAVID J. Malan: Sema tena? Watazamaji: Nakala. DAVID J. Malan: Nakala? OK, nikasikia maandishi. Nini kingine? Sisi aina ya kuwa na rundo la uchaguzi kwamba ni textual katika asili. Hivyo wakati, na kwa nini, je, kutumia baadhi ya haya? Vizuri Char, kinyume na nini unaweza kufikiri, si tabia moja. Ni idadi maalum ya wahusika. Hivyo kama sisi kujua kwamba majina ya watumiaji wote lazima kama wahusika nane, kama kutumika kuwa kawaida katika umri mkubwa mifumo ya kompyuta, mimi naweza kusema Char na kisha mimi naweza kusema 8 hapa. Hiyo wakati safu ya tatu inakuwa husika wakati kujenga meza. Lakini hiyo ni aina ya annoying kwa sababu baadhi ya watu wangewapiga wanataka kuwa jina la mtumiaji tena kuliko wahusika nane, baadhi ya watu kutaka kuwa jina la mtumiaji mfupi, hivyo kwa nini kufanya mwenyewe kwa idadi maalum? Nini kuwa kutofautiana idadi ya chars na tu kusema kwamba urefu upeo wa jina ni, mimi sijui, kama wahusika 64. Siwezi kufikiria marafiki wowote ambao kuwa na majina zaidi ya wahusika 64, na hata kama kwamba ni fupi mno unaweza hakika mapema it up kiholela. Hivyo varchar ni kutofautiana idadi ya chars. Nakala sio silika mbaya, na kusema ukweli kwamba aina ya anafanya nini anasema, lakini uwanja wa maandishi inaweza kuwa kama 65,000 ka angalau. Kwamba pengine overkill kwa shamba, na kwa kweli, yup, 65535. Kwamba pengine overkill kwa jina, hivyo tutaweza fimbo, kawaida, na varchars kwa textual uwanja na hash, pia. Hash, ni zamu nje, tunaweza kufanya varchar pamoja au kitu kama hicho, lakini sisi si kuzingatia leo juu ya cryptography huko na namba ili tupate kweli wanataka kutumia kwa urefu wake. Lakini ngoja kitabu chini na haki. Unaweza tu moja msingi index kwa meza, lakini nataka kuomba yoyote ya hizi, sasa, kwa jina la mtumiaji, unaweza kusema? Nini lazima jina la mtumiaji kuwa na misingi ya hazieleweki uelewa wa chaguzi hizi nne? Tu kwa majina yao? Watazamaji: Unique. DAVID J. Malan: Hivyo kipekee, haki? Hivyo ni zamu nje kwamba si tu inaweza kumweleza database, mapema, hii ni njia ya msingi ya kutambua mashamba. Unaweza pia kusema hii ni itakuwa uwanja kipekee. Ni si kwenda kuwa Jambo Mimi kuwategemea, lakini napenda orodha ya kimsingi kuwa na kwamba kama hali, hivyo kwamba kama mimi milele walijaribu kujiandikisha watumiaji mbili kwa jina moja, Mbegu gorofa ya nje si kwenda basi mimi. Nipate kuwa baadhi ya kanuni za ziada katika PHP kwamba kuzuia kama kiasi, lakini database, pia, wanaweza kuhakikisha kwamba kamwe kwenda kutokea. Sasa, kama kando, hasa kama unafikiri kuhusu miradi ya mwisho, kukumbuka ni ripoti kamili na Nakala ni muhimu kabisa kwa kweli. Kama una database kubwa, si kwa kadhaa, lakini pamoja na mamia au maelfu au hata mamilioni ya mashamba, unaweza pia kuwaambia database mapema hii ni uwanja mimi nina kwenda kuwa ya kutafuta juu ya mengi. Labda jina la mtumiaji wake, labda ni bio, kama wewe ni kufanya tovuti Facebook-kama kwamba ina aya kwamba mtumiaji kuruhusiwa kuokoa, na kama unataka kuwaambia database mapema Mimi nina kwenda kuwa kutafuta kwenye uwanja huu mengi, lakini ni si lazima kipekee, unaweza bayana kujenga mimi index. Au, unaweza kusema pia naomba kufanya aina ya upekuzi holela kama amri au Kudhibiti F, kama wewe ili katika neno Processor, hivyo unaweza kuangalia masharti holela au substrings katika uwanja huu. Kwa maneno mengine, sisi ni kupata kwa uhakika katika muhula ambapo huna kuwa na wasiwasi kuhusu jinsi ya kutekeleza mambo kwa ufanisi. Wewe tu haja ya kujua nini maamuzi kubuni kufanya hivyo kwamba wewe ni kutumia zana haki kwa biashara ili kujiinua makala kwamba watu wengine wamejenga kwa ajili yenu. Hivyo kwa kurejea, msingi lazima tu kuwa moja, unaweza tu kuwa moja, na ni jambo wewe ni kufanya kwa kutumia kwa kutambua mashamba ya kipekee. Kipekee ni sawa katika roho, lakini unaweza mara chache tu matumizi yake, lakini unataka orodha ya kulazimisha yake. Ripoti tu ina maana preemptively kasi ya mambo juu katika siku zijazo ili niweze kutafuta mambo katika uwanja huu. Na kisha Nakala kamili ujumla kwa aya, au insha, au miili kubwa Nakala ya ambapo wewe ili pia wanataka kuwa na kadi pori kama sawa ya nyota. Haki. Ili kwamba ilikuwa aina ya mengi ya wote mara moja. Hebu angalia kama hatuwezi distill michache ya makala haya na kisha kujenga kitu haki rahisi, lakini kwa nguvu. Hivyo kati ya mengine maamuzi kubuni wewe ni hatimaye kwenda kuwa ni pamoja mistari ya injini ya hifadhi. Na napenda tu kufanya kutaja ya hii kwa kutarajia miradi ya mwisho, na kutarajia hebu say-- hakuna hebu kufanya hili. Hebu kujenga hii kidogo maombi ya kwanza. Mimi nina kwenda katika terminal yangu dirisha, na katika hapa si tu counter.php, ambayo sisi ni sasa kwenda kujikwamua kama hakuna tena germane, lakini tuna rundo zima ya Directories na hii ni kwenda kuwa sawa sana katika roho kwa nini utaona katika tatizo kuweka saba. Hivyo tuna Directories tatu pamoja ya umma na templates, ambayo ni hasa ambapo sisi kushoto mbali juu ya Jumatatu na MVC yetu yote dhana. Na kwa kurejea, katika umma ni kwenda kwenda faili yoyote kwamba nataka watumiaji kweli v kuwa na uwezo wa kutembelea katika browser yao kupitia URL. Kigezo. Nini sisi kuweka katika templates? Ni aina gani ya mambo? Hapakuwa na kiasi lakini wanandoa files angalau siku ya Jumatatu. Yeah. Watazamaji: Header na footer? DAVID J. Malan: Header na footer. Hivyo tuna kitu sawa leo, pia. Sisi tumepewa chache mafaili zaidi lakini Footer naona, Header naona, na kisha rundo la files nyingine. Hivyo hii ni sawa ya maoni V MVC, ambayo, tena, itakuwa kidogo zaidi wazi katika tatizo kuweka saba, lakini hii ni tu folder mimi nina kuweka mengi ya aesthetics wangu. mengi ya HTML wangu, mengi ya aina yangu. Wakati huo huo, pamoja na, ni mwingine directory ambayo ina mafaili hizi tatu na hebu kuchukua haraka kuangalia hizi. Mimi nina kwenda mbele na kufungua config.php. Kama ni zamu nje, kiasi kama mapema katika mrefu, you mkali pamoja CS50 dot h na pset7. Katika mfano wa leo, wewe kwenda kufanya sawa kwamba na kuhitaji kauli kwamba ufanisi pamoja mistari haya kadhaa. Hivyo kuwa wazi, hii ni faili inayoitwa config.php. Na taarifa ya nini ni kufanya. Ni inaonekana kufanya kitu cryptic, kugeuka juu ya ujumbe wa makosa hivyo kwamba unaweza kuona katika browser. Ni, basi, inaonekana wanaohitaji files nyingine mbili hivyo hii ni kama #include katika C, na kisha hii moja hatukuwa kuona, na tumekuwa kutegemewa, hii zamu ya gari ununuzi kama utendaji kwamba. Hii ina maana mapenzi kuki kutumwa na kurudi. Hivyo hii ni kwa nini ni ya kuvutia? Naam, kama sisi kurudi nyuma kwa hii directory na kufungua, kwa mfano, constance.php. Taarifa kwamba PHP gani msaada constants, si kabisa kama #define katika C. Badala yake, literally kusema defined, na notisi kwamba nimepata kuhifadhiwa katika mapema constants nne katika faili hii. Moja kwa database ya leo, kwa password yangu, kwa jina la mtumiaji yangu, na kwa jina la server. Hivyo hawa ni kweli kwenda kuwa pretty sawa katika tatizo kuweka saba. Na mwisho, na hii ni ambapo mimi nina kwenda kupata baadhi ya utendaji mzuri kutoka kwa wafanyakazi, katika functions.php ni kundi la kificho tumekuwa imeandikwa, na mimi aliiba baadhi ya hii kutokana na tatizo kuweka saba kwa leo, kwamba hana rundo la mambo na hebu tu kuangalia mmoja wao hasa. Kazi hii hapa, swala, ni kwenda kuwa na PHP kazi sisi kuwaita ili kutekeleza SQL. wakati iliyopita tulikuwa kutumia phpMyAdmin, lakini kwamba tu kwa aina ya madhumuni ya kujifunza na madhumuni ya uchunguzi na kusahau kuweka database yako. Wakati wewe kweli kutumia yako Mbegu, wewe, mwanadamu, ni wazi si kwenda kuwa kuunganisha juu ya mtandao ukurasa kila wakati mtu madaftari. Wewe ni kwenda kuandika kificho kwamba kuwekeza na deletes watumiaji juu ya mahitaji, na sisi ni kwenda kufanya hili kwa njia ya kazi ya swala. Kama mimi sasa kitabu chini, kuna itakuwa makala chache zaidi. Kuelekeza ni kwenda kuwa kazi tuliandika kwa wewe kwamba utapata kutuma mtumiaji mwingine URL, na atatoa ni kazi, kabisa kama tuliona juu ya Jumatatu, kwamba kweli mithili template, lakini zaidi juu ya haya katika aina ya pset7 ya kutembea mwenyewe kupitia. Kwa sasa, hebu kwenda mbele na kufanya hili. Napenda kwenda katika mihadhara yangu meza na kuona kwamba kuna sasa hakuna kitu hapa bado tu, na napenda pia kwenda katika saraka yangu ya umma, ambapo kuna faili moja tu ndiyo, index.php. Faili hili inaonekana kuwa super rahisi kwa wakati huu, inaonekana kama hii. Sana kama jinsi sisi kushoto mbali juu ya Jumatatu. Mimi wanaohitaji faili hili, config.php, ambayo ni katika An pamoja directory, ambayo ni katika nukta nukta, wazazi wangu, na kisha tu utoaji faili hii. Hivyo kile faili hili ni? Hebu kufungua katika templates yangu form.php, na tutaweza kuona hii. Super rahisi, inaonekana aina hii ni kwenda kuwasilisha kwa $ _GET au $ _POST. Haraka sanity hundi. Halisi kuibua kutafuta faili. Njia sawa ya mwisho. Hivyo si kwenda kutumia URL, kama Google gani, ni kwenda kutatua ya kujificha habari nyuma scenes na ni kwenda kuwasilisha kwa faili inayoitwa register.php, na kwamba faili sisi bado imeandikwa lakini nini hii ni kwenda kuangalia kama ni hii. Kama mimi kwenda kwenye ukurasa tofauti Hii ni nini localhost / index.php inaonekana kama. Na tena, server ya tu kuchukua index.php. Kuingia. Hivyo hiyo ni ambapo sisi ni saa, na kile nataka kufanya ni kuwa na uwezo wa aina ya mambo kama Daudi, na kisha simu yangu ya simu, ambayo itakuwa kusema 617-555-1212 kwa sasa, kujiandikisha na sasa register.php haikupatikana. Hivyo mimi haja ya kutekeleza hili. Basi hebu haraka mjeledi kitu kama up hii. Napenda kwenda katika saraka yangu ya umma na kufanya gedit ya register.php, na sasa mimi nina kwenda mbele na kuanza PHP mode, kama tulivyofanya Jumatatu, na tag karibu PHP, na hebu kufanya michache ya mambo. Hivyo moja, najua, kutoka baada ya kuandika aina hiyo, kwamba mimi unataka kuangalia kwa yafuatayo. Kama ni tupu, chochote mtumiaji typed katika uwanja jina, basi Mimi nina kwenda kusema kitu kama kuomba msamaha kukosa jina. Kuomba msamaha, wakati huo huo, ni si kujengwa katika PHP kitu, ni kazi tuliandika katika functions.php kwa pset7 ili kuwa na huduma hiyo. Mwingine kama uwanja mengine ni tupu, idadi, basi mimi nina kwenda kuomba msamaha kwa user na kusema namba inayokosekana. Kuokoa faili hii. Sasa hebu kwenda nyuma ya browser yangu, kwenda nyuma ya jukwaa kujaribu tena. Kujiandikisha. OK. Hakuna kilichotokea, ambayo ni nzuri. Sikuweza kupata ujumbe wa makosa. Lakini kama badala, hebu upya hii ukurasa, na si kutoa kitu chochote. Damn it. Kufanya hivyo. Kujiandikisha. Nini mimi kufanya makosa? Kama tupu, jina $ _POST. Kusema tena? Oh, bila shaka. I forgot sehemu muhimu, ambayo ni zinahitaji ("../ pamoja / config.php."). Mimi haja ya kuwa na upatikanaji wa kuomba msamaha kazi, ambayo ni kwa nini hakuna kitu kinachotokea. kazi haina kweli zipo. Basi hebu jaribu hii tena. Hebu upya ukurasa, click Daftari. OK. Kuna ni. Hivyo, pato tuko kuona hapa ni matokeo wito kuomba msamaha kazi, super rahisi, na ni tu Prints nje chochote Mimi kuwapa kama hoja. Haki zote, hivyo hebu kushirikiana. Hebu kutoa jina langu kama Daudi, kujiandikisha, kukosa simu OK hebu kutoa kwamba, pia. 617-555-1212. Kujiandikisha. OK. Hivyo wote ni vizuri sasa, kitu tu kuvutia kinachotokea. Hivyo sasa hebu kufanya kitu zaidi kuvutia kutokea kama hii. Napenda kwenda katika phpMyAdmin, na hebu kweli kujenga meza inayoitwa watumiaji, Mimi nina kwenda kuwapa tatu nguzo, na mimi itabidi haraka kujenga ID, na kisha jina, na kisha posta, na uwanja ID mimi nina ataondoka kama int. uwanja jina mimi nina kwenda kuondoka kama varchar, na tutaweza kusema 64, kiasi fulani kiholela. idadi mimi nina kwenda kufanya, unajua nini? Tunakwenda katika kusaidia namba Marekani hapa, hivyo mimi nina kwenda kufanya kitu kama Char na kisha wahusika 10 max kwa ajili ya eneo kificho na kisha tatu saba. Na kisha juu hapa, mimi nina kwenda bayana auto nyongeza uwanja huu, kufanya hii muhimu ya msingi, na Mimi nina kwenda mbele na si kuangalia yoyote ya masanduku hayo mengine. Hivyo wakati mimi sasa hatimaye bonyeza Save, na mimi kurejea watumiaji yangu meza, hii ni inaonekana kama kama kile sasa bonyeza muundo Tab Mpya. Hivyo hii, kuwa wazi, ni njia tu phpMyAdmin ya ya kusema Mbegu yako meza ina ID, jina, na idadi na mazungumzo hayo hasa na tutaweza kupuuza mapumziko ya mashamba huko kwa sasa. Hivyo sasa nini nataka kufanya? Hivyo kama mimi kwenda sasa katika wangu chanzo code, ikiwa wote ni vizuri Nataka nitafanya swala yafuatayo. Kuingiza ndani, na naweza tu kusema watumiaji mimi si madhubuti haja ya wale nyuma ticks kama ni si neno hatari kama watumiaji. Mimi nina kwenda kusema jina, idadi, na kisha hapa mimi nina si kwenda kificho kwa bidii tarakimu ya maadili bado. Mimi nina kwenda kuweka alama swali mbili. Na hii ni mkataba katika lugha nyingi ambapo kama unataka kuwa placeholder kwa kamba wewe ni kwenda kutumia swali alama, kwa sababu tutaweza kurudi kuzungumza kuhusu usalama, na hapa Mimi nina kwenda kupita katika wale mashamba mbili baada ya jina, na kisha baada ya simu, na sasa kuokoa faili. Na sasa mimi nina kwenda kwenda chini hapa ni super tu kusema rendersuccess.php, ambayo ni kwenda kuwa na template mwingine. Mimi nina kwenda kujenga kweli kasi. Geditsuccess.php na mimi nina kwenda tu kusema H1 mafanikio katika faili hilo. Wote haki. Hivyo sasa, hebu kwenda nyuma browser, ambapo mimi alitembelea kabla. Hebu kwenda mbele na kuthibitisha niliandika katika David, mimi aliandika katika idadi ya simu, kujiandikisha. Damn it. Nini mimi kufanya makosa? Hivyo mimi nina kuona makosa hapa, kuwa makosa katika SQL syntax yako. Napenda kuruka nyuma gedit, basi mimi kwenda nyuma register.php, na nini mimi saza kwamba Ilikuwa ni muhimu wakati wa mwisho? Mimi haja hii. Unataka kujua kwamba wengine kuliko kutoka kuwa niliona kabla, lakini mimi haja hii. Hivyo sasa hebu kwenda nyuma, na hii ilikuwa na manufaa kwa kuona katika browser na kwamba ni kwa nini katika config.php sisi mate nje makosa. Hebu kwenda mbele na Reload, bofya Endelea, mafanikio. Hivyo sasa napenda kwenda juu na yangu Mbegu hapa na bonyeza Watumiaji, na kuvinjari, na taarifa mimi sasa kuwa Daudi katika database yangu hapa. Sasa kitaalam tovuti hii ni bado kwenye mtandao wa umma, hivyo siwezi kuwa na mengine watu katika kuweka hapa, lakini kama mimi sasa alitaka, kwa mfano, kutuma ujumbe wa maandishi mwenyewe. Hebu kwenda nje ya kiungo hapa na kuona kama hii kweli kazi. Mimi nina kwenda mbele na kufuta safu hii na tutaweza blur hii nje katika video baadaye hivyo hatuna biashara nzima texting yangu, na sisi sasa kwenda hadi browser na tutaweza kwenda juu kwa hotuba na tutaweza aina katika tofauti idadi hapa, kujiandikisha, mafanikio. Hivyo sasa, idadi yangu mwenyewe ni labda katika database, na sasa ni sehemu ya kujifurahisha. Hebu kweli matumizi PHP kufanya kitu programmatically, ama kutoka amri line au kutoka mahali pengine, na kwa sasa mimi nina tu kwenda kushika ni rahisi na mimi nina kwenda katika wangu directory hapa na kufanya yafuatayo. Gedit script hebu sema, tutaweza kuiita maandishi, #! / user / bin / env PHP, kama tuliona wakati wa mwisho. PHP. Sasa mimi nina kwenda kufanya zinahitaji pamoja config.php, ingawa nguvu hii kutumika makosa kidogo. Na sasa mimi nina kwenda mbele na kusema safu, swala, kuchagua nyota kutoka kwa watumiaji, na sasa hapa mimi nina kwenda kufanya mbinu kutoka wakati wa mwisho kwa kila safu kama mfululizo. Na mimi nina kwenda kufanya kitu rahisi. Printf hebu sema jina ni hii, na idadi ni hii, backslash n. Na sasa mimi nina kwenda kupita katika mstari kunukuu jina unquote, na mstari quote unquote posta, na sasa hebu kwenda mbele na terminal dirisha yangu chmod + x a hii kufanya script hii inaitwa Nakala kutekelezwa. Na sasa hebu kukimbia maandishi. OK, hivyo maendeleo. Hivyo nimekuwa sasa imeandikwa a mstari amri script, katika lugha inayoitwa PHP, kwamba, sababu ya kwamba zinahitaji line, ina kupata kwa wale wote Configuration constants kwamba mimi maalum. jina la database na kadhalika. Kwa kweli, tu kuwa wazi kwamba hii si fluke, basi mimi kwenda mbele na kujiandikisha, kweli kasi, mtu mwingine kama Rob Nitawapa idadi 555-1212. Na sasa, kama mimi kukimbia script tena, taarifa ya nguvu ya nini sisi ni kufanya na database. Sasa nimekuwa mara moja kuona nini mengine safu mbili katika database yangu. Hivyo sasa hebu jaribu kufanya kitu hata fancier ndani ya, na hii ni sehemu tumekuwa si kupimwa mapema, hivyo mara ya mwisho mimi alifanya hivyo mambo akaenda horribly awry, tuna video na athari hiyo. Kweli, yeah, funny kando. Hivyo mara ya mwisho, katika hotuba kama miaka miwili iliyopita, tuliamua, niliamua, kuwa yote hii itakuwa ni wazo kubwa dynamically kuzalisha barua pepe katika darasa, kwa kutumia database nzima CS50 wanafunzi, ambaye alikuwa ametupa idadi yao na Mkono flygbolag yao ambayo wapate kukumbuka kutoka pset0, jinsi ya kufikiri, ni zamu nje Mimi nilikuwa mdudu mdogo katika mpango wangu na alifanya makosa kadhaa katika 2012, nadhani. Ambapo, moja nilikuwa kwa kitanzi kwamba alifanya hasa aina hii ya kitu, iterating juu ya database, kupata jina kutoka orodha, jina kutoka orodha, na kisha juu ya kila iteration ya kitanzi mimi alimtuma email. Lakini badala ya kutuma barua pepe moja, mimi alimtuma moja email iteration kwanza, na barua pepe mbili iteration pili, alimtuma barua pepe tatu iteration pili, ambayo kama unaweza kukumbuka kutoka wetu mjadala wa nukuu asymptotic O hii kubwa ya mbaya, kama n mraba ni wangapi ujumbe mimi alimtuma, lakini haikuwa hata barua pepe ilikuwa ujumbe wa maandishi. Na kama unajua, mahudhurio ni si super juu ya kutolewa mwisho wa muhula na hivyo mimi walidhani itakuwa cute katika wakati wa kusema, "Kwa nini si darasani wewe?" Katika ujumbe wa maandishi mimi alimtuma darasa zima, na ilikuwa funny na kama 50% ya darasa, lakini wengine 50%, ambao baadhi yao freaked nje, i alimtuma incredibly kuomba msamaha maelezo tamu kwa wafanyakazi kuomba msamaha kwa kuwa amekosa hotuba tu hii mara moja, haki? Hivyo kwamba ingekuwa horribly awry. Hivyo katika roho kwamba, hebu jaribu hii tena lakini tu na idadi wangu. Mapema, katika functions.php, Nimekuwa imeandikwa kazi hii hapa. Ni wito wa maandishi, na inachukua katika hoja ya tatu. idadi, carrier, na ujumbe. Mimi nina kutumia kubadili kauli, ambayo ajabu PHP kuchukua masharti, si tu integers, na mimi haikutekeleza msaada wote kwa hii bado, Mimi tumefanya tu AT & T na Verizon. Kwa sababu ni zamu nje kwamba pamoja na hayo flygbolag wana email SMS gateways, ambapo unaweza kweli kutuma barua pepe kwa anwani kama namba ya simu katika vtext.com na kama mtumiaji hana imefungwa ujumbe, utakuwa kwenda kupitia ni ujumbe wa maandishi. Sasa kwa kufanya hivyo, mimi nina kwenda kuwa na kuongeza shamba moja kweli kwa haraka na orodha yangu. Mimi nina kwenda katika Muundo yangu, na mimi nina kwenda mbele na kuongeza uwanja mwishoni mwa meza. Hebu bonyeza Go, na mimi nina kwenda kuwaita carrier hii na kwa sasa mimi nina kwenda kuondoka hii kama bar maandishi, lakini tunaweza kuwa fancier katika siku zijazo. Mimi nina kwenda haraka kwenda ndani ya meza yangu, na mimi nina kwenda kujikwamua Rob, kwa sababu hiyo ni idadi bandia, Mimi nina kwenda katika hariri hapa na mimi nina kwenda na mabadiliko carrier yangu manually kuwa Verizon, ambayo ni ni, na sasa zaidi ya hapa. Hebu kufanya haraka sanity hundi. Hebu kufungua andiko letu script, ambayo Inaonekana kama hii, carrier ni% s. Sisi ni kufanya makosa mengi zaidi kuangalia zaidi kuliko mimi mwaka 2012, carrier. Na sasa, mimi nina kwenda mbele na re-kukimbia script. OK. Carrier ni Verizon, ambayo ina maana sasa hopefully naweza kufanya tu hii. Usahihi mwaka huu, hopefully, hapa sisi kwenda. Hivyo ndani ya hii kwa kitanzi, mimi nina kwenda si tu kuwa printf hii, Mimi pia kwenda kuwaita maandishi na matumizi ya hii wanakumbuka kazi ilikuwa inachukua posta, carrier, na ujumbe. Basi hebu angalia, idadi ni kwenda kuwa mstari quote unquote "idadi" mstari quote unquote "carrier," na moja ya mwisho ilikuwa ujumbe. Je, si screw up mwaka huu, semicolon. OK. Vidole walivuka. Hebu angalia kama hii kazi. Haki wote, hivyo. Hapa sisi kwenda. Hebu kufungua simu, kuvuka vidole, damn it. Kisichojulikana variable may-- oh kusubiri, kusubiri, kusubiri, halisi haraka. Halisi haraka, halisi haraka. Hii ni kabisa thamani yake. Napenda kunyakua, napenda kunyakua, uh-oh. Asante, maandiko na ilianza kutoka mtu mwingine. Basi mimi kwenda mbele na kufungua halisi haraka, dropbox.php / mail hapa. Kusubiri. Kabisa thamani yake. Mkono. OK, chanzo src8m. OK. Haja moja zaidi line hapa. Oh kuna ni, ni katika Frosh IMS, ni katika daftari saa tatu. Oh hello, Margo, asante sana. OK, na mimi nilikuwa kukosa mstari huu hapa. Hivyo basi mimi haraka kunyakua mstari wa kanuni, ambayo ni pamoja na barua au maktaba kwamba mimi kwa kweli wanataka kutumia, Mimi nina kwenda haraka kurudi nyuma katika kazi, Mimi nina kwenda juu ya hii faili na kuhitaji faili hili pia, na sasa mimi nina kwenda kweli kuvuka yangu vidole wakati mimi kurejea amri line script, ambayo ni ndani ya jeshi directory ya leo mitaa. Kukimbia maandishi. Kuingia. Barua. Kusubiri. Kusubiri. Barua. Oh, sawa. Hapa sisi kwenda. Barua anapata mpya PHP mailer. Je, mimi kufanya haki hii? Damn it. To-- oh, kusubiri, kusubiri, kusubiri. Kusimama kwa. Mimi ahadi, hii ni itakuwa hivyo thamani yake. Eneo. Hii ni kwa nini mimi si kufanya Mifano haki kabla ya darasa. Ugh. wapokeaji zifuatazo alishindwa. Hebu jaribu jambo moja iliyopita. SMTP kuweka kutoka, kuongeza mitaani, anwani ni kweli kwamba. Hebu jaribu hii sehemu ya mwisho katika eneo. Aw, mimi nina kweli kusikitisha hivi sasa. Asante. Lakini mimi kwa kweli kufahamu yote maandiko tumekuwa kutuma. Nimepata hii Daudi. Wewe ni kupiga yake. Hebu kuondoka humo na sisi kurekebisha juu ya Jumatatu. Tazama wewe hapo. DAVEN FARNHAM: Na sasa Deep Mawazo na Daven Farnham. Kama mti binary iko katika msitu na hakuna mtu ni karibu na C it-- [chuckling].