[Powered by Google Translate] [Wiki 8, Inaendelea] [David J. Malan] [Chuo Kikuu cha Harvard] [Hii ni CS50.] [CS50.TV] Hii ni CS50, hivyo hii ni mwisho wa Wiki 8 hapa. Sisi bila shaka alikuwa kidogo upepo mapema wiki hii, hivyo sasa hivi ni kweli tu mimi na wewe katika ukumbi huu hotuba, lakini leo sisi kuendelea mazungumzo yetu kuhusu PHP na kuhusu programu mtandao kwa ujumla zaidi, na sisi pia kuanzisha wazo wa database, hasa mmoja aitwaye MySQL, ambayo ni maarufu kabisa siku hizi, katika sehemu kubwa kwa sababu ya ukubwa wake kama vile kwa sababu yake kuwa huru na ya chanzo. Lakini kwanza, kuangalia ambapo sisi kushoto mbali wakati wa mwisho. Kumbuka kwamba sisi walikuwa kuangalia kadhaa Frosh mifano IMS, na hii ilikuwa fomu hideous kwamba mimi kuja na baadhi 15 + miaka iliyopita ili kuwa na wanafunzi juu ya kujiandikisha kwa ajili ya michezo ya chuo Freshman intramural bila hasa safari tena hela yadi ya Wigglesworth slide kipande kimwili wa karatasi chini ya mlango baadhi mwangalizi wa. Badala yake sisi wakiongozwa kila kitu online, lakini kwa kufanya hivyo sisi zinahitajika kufanya matumizi ya teknolojia chache, hivyo moja, sisi zinahitajika HTML, HyperText ghafi lugha, ambayo tena ni lugha hii ghafi na ambayo unaweza kufanya kurasa za mtandao wa kimuundo. Kutumia kidogo ya CSS siku hizi, cascading style, ambapo sisi kutumia stylizations wa mtandao ukurasa kutumia sentensi tofauti kidogo, ambapo HTML yote ilikuwa juu ya muundo wake. Sisi pia haja ya kuanzisha programu mtandao wa lugha. Katika kesi hii, tutaweza kutumia PHP, na PHP ni kwenda kuruhusu sisi na maudhui dynamically pato kama vile kufanya mambo programu kama kutuma barua pepe, kama ilivyokuwa kwenye note sisi kushoto wiki iliyopita. Kumbuka kwamba kanuni kwa ajili ya hii ilikuwa katika sehemu 2. Moja, tulikuwa froshims3.php, na hii ilikuwa kwa kiasi kikubwa ghafi kwa ajili ya HTML ndani yake, kidogo kidogo ya CSS hapa juu katika sifa style hivyo kwamba fomu yenyewe itakuwa katikati juu ya ukurasa, lakini zaidi kwamba tulikuwa na baadhi ya pembejeo fomu mwakilishi, shamba maandishi, checkbox, baadhi ya redio vifungo, menu kuchagua, na kifungo kuwasilisha. Na kupitia fomu hii, sisi in kwa faili kwamba ilikuwa inaonekana kuitwa register3.php, ambayo yenyewe inaonekana kitu kidogo kama hii. Sasa, wengi wa code katika register3.php, wanakumbuka, ilikuwa yote juu ya barua pepe. Ni alifanya kidogo ya uthibitisho wa aina ambayo ilikuwa in kuhakikisha kwamba mashamba walikuwa kweli zinazotolewa kwamba walikuwa ilivyotarajiwa. Kisha sisi kuitwa baadhi ya majukumu PHP kidogo kutumia mpya syntax, hata kama ni zilizokopwa kutoka C. Hii operator arrow inaruhusu sisi kufanya matumizi ya kitu kitu kinachoitwa-oriented programu. Sisi si kwenda katika kwamba katika undani yoyote hapa, lakini najua kwa sasa ni njia ya kuwa na kazi ya kuhusishwa na vitu, ambayo ni aina maalum ya muundo, kama tulivyoona katika C. Lakini kwa sasa, tu kuchukua imani kwamba hii ni syntax sahihi kutumia wakati wa kutumia maktaba kama hii maktaba PHPMailer. Na kisha na mwisho wa faili hili tulikuwa dynamically yanayotokana barua pepe kwamba got alimtuma jharvard@cs50.net akaunti yangu kutoka jharvard@cs50.net akaunti yangu, na sisi taarifa ya mtumiaji ipasavyo kwamba walikuwa wameandikishwa kwa ajili ya mchezo huu. Hiyo ni kiasi pretty nini Frosh IMS tovuti alifanya wale wote miaka iliyopita wakati mimi kuutekeleza, nafasi, katika lugha tofauti, lakini inaonyesha wewe labda nguvu kwamba una sasa kuwa unaweza kueleza mwenyewe si tu programmatically katika ngazi ya chini katika lugha kama C lakini katika ngazi ya juu sana na haya sana ulimwengu halisi maombi kama barua pepe kwa kweli kutatua baadhi ya ulimwengu wa kweli matatizo. Sasa, bila shaka, hata mimi kutumia script hii ya kuzalisha baadhi barua pepe dynamically kutoka jharvard@cs50.net, ambayo ni kweli akaunti kwamba mimi kupata, je, kabisa makini kutuma mail tu kutoka akaunti kwamba ni kweli yako mwenyewe, isije mambo kupata wewe katika kidogo cha maji ya moto katika maisha. Kwa kuwa alisema, hebu sasa mpito katika kutatua tatizo tofauti kabisa, kwamba mataifa ya kubakiza. Sasa, ni nini hii kwa kweli ina maana gani? HTTP, hii HyperText uhamisho itifaki, ni kweli itifaki stateless, na nini maana ya hii ni kwamba wakati wewe kuvuta kitu kama Google.com na kisha hit kuingia kawaida browser yako ina aina fulani ya icon inazunguka kwamba basi matokeo katika ukurasa baadhi mtandao kuwa kupakuliwa, na kisha kuwa icon kidogo ataacha inazunguka, na kwamba hakika unaonyesha kwamba HTTP amekamilisha baadhi ya aina ya Muunganisho wa seva na hiyo ni yake. HTTP ni stateless katika maana ya kwamba haina kudumisha uhusiano kuendelea na server katika Skype sawa njia gani au kwa sababu gani Gchat na HTTP Dhana ni kwamba mara umefanya fetched ukurasa mtandao kuwa ni. Sasa, katika hali halisi ya siku hizi katika maeneo kama Facebook na Google Maps na Twitter na kama kuna mengi zaidi mabadiliko ambapo hata baada ya icon kwamba ataacha inazunguka unaweza kwa kweli kupata updates zaidi kutoka server, tweets zaidi, updates zaidi kwa sasa juu ya Facebook na kama. Lakini hata kwamba ni kutumia mbinu ambayo tutaweza majadiliano juu katika wiki moja au mbili inayojulikana kama Ajax kutumia lugha inayoitwa JavaScript, lakini mwisho wa siku, HTTP bado ni stateless. Na bado kama unataka namna fulani kukumbuka mambo kuhusu mtumiaji hata baada ya wameweza imetenganishwa kutoka server yako PHP gani kumudu wewe njia ya kufanya hili kwa sababu, kama tulivyoona wakati wa mwisho, PHP ina idadi ya superglobals, na superglobal ni, tena, maalum kimataifa variable hiyo waliyopewa na wewe na server mtandao na kwa PHP yenyewe. Huna kufanya chochote ili kuweka maadili ndani yake, na miongoni mwa superglobals tumeona hivi sasa ni kupata na kuchapisha, ambayo ni ambapo mashamba fomu ni kuweka moja kwa moja kwa ajili yenu, pamoja kama wanandoa wa wengine kwamba hatujaona bado. Ndani ya _server $ ni baadhi ya vigezo maalum kuhusiana na seva yenyewe. Nini anwani ya IP, nini itifaki, HTTP au HTTPS ulitumia, nini ombi mbinu ulitumia na kama, hivyo kuna baadhi ya kuvutia, Juicy maelezo kuhusu server, na kwa kweli, mtumiaji katika huko pia. Kuna $ _cookie, ambayo ni wapi mambo haya kuitwa cookies ni kuhifadhiwa. Sisi si kutumia muda juu ya cookies wenyewe leo, lakini kujua kwa sasa kwamba Kuki ni kipande kidogo tu cha habari kuwa server mtandao unaweza kupanda juu ya kivinjari na katika kugeuka RAM wake au kompyuta yake ya kuendesha gari kwa bidii kuhifadhi habari kuhusu mtumiaji, kwa mfano, user yao jina ili kwamba wao hawana unapoandika kila wakati wao ingia au baadhi idadi ya kipekee au kitambulisho kwa mtumiaji hivyo kwamba wewe huna bemba yao na kila moja ya maswali kuhusu upendeleo katika siku zijazo, lakini wengi wa maslahi hivi sasa ni $ _session. Hii superglobal, ambayo, kama wengine, ni kukabidhiwa kwa wewe moja kwa moja na PHP wakati wewe kuandika tovuti PHP makao inaweza kuhifadhi kitu chochote unataka masharti,, integers, floating pointi, maadili, arrays, vitu, kweli chochote kwamba unataka, na utapata kuhifadhi katika namna kwamba hata kama mtumiaji ziara wewe sasa na kisha anakuja nyuma dakika kuanzia sasa au dakika 5 kutoka sasa kwa sababu wao kuchukua muda wao kabla ya kubonyeza baadhi kiungo kingine PHP itahakikisha kwamba chochote kuweka katika superglobal kwamba kikao cha dakika dakika au 5 iliyopita bado kuwa kuna wakati anarudi mtumiaji. Na chini ya Hood superglobal huu utatekelezwa kwa njia ya mambo hayo huitwa biskuti, lakini kwa sasa, ni tu abstraction ambapo ni aina ya programu sawa ya gari ununuzi. Chochote, programu, kuweka katika superglobal safu associative itakuwa kuna baadhi idadi ya dakika baadaye mpaka ifutwe au mpaka user quits yake browser kabisa. Hebu tuangalie mfano wa jinsi jambo hili ni kweli kutumika. Katika counter.php kati ya vipande ya leo ya maadili ya tuna line zifuatazo. Wakati wa mwanzo wa faili hili sisi kuwa na rundo la maoni ya bluu, ambayo ni uninteresting kwa sasa. Lakini katika mstari 13 tuna line mpya, session_start, na kwamba kweli gani hasa nini anasema. Ni kuanza vikao. Ni wewe itawezesha kutumia kubwa superglobal $ _session, na ni rahisi kama hayo. Sasa, kama sisi kuendelea kuangalia mstari 16, hebu jaribu kufikiri nini ukurasa huu mtandao ni kwenda kufanya. Kama (isset ($ _SESSION ["counter"]) kisha kwenda mbele na kuhifadhi katika variable counter, lowercase counter, $ _SESSION ["Counter"]. Hii inaonekana kuwa kutangaza variable mitaa inayoitwa counter ndani ambayo ni kuweka nakala ya chochote ni ndani ya superglobal kuitwa kikao katika eneo "counter." Mwingine, inaonekana, hii kidogo mitaa counter variable, ni initialized kwa 0. Lakini basi mistari michache baadaye katika taarifa 26 kwamba nakala ya kikao cha counter, ufunguo wake, kina thamani mpya kwa ajili ambayo ni thamani yake ya sasa pamoja na 1. Kwa kifupi, faili hii inaonekana kuwa uppdatering counter ambayo imehifadhiwa ndani ya kikao superglobal na incrementing ni kwa 1, lakini kwanza anakuwa na nakala ya thamani ya awali na hifadhi hiyo katika variable mitaa inayoitwa $ counter, na kisha chini hapa hebu angalia kile bado. Ni zinageuka ni pretty much tu HTML. Chini ya ukurasa huu tunaona katika mstari 37 kwamba nimetembelea tovuti hii counter idadi ya nyakati, hivyo kuna wanandoa makala ya kuvutia hapa. Mmoja, hii ni wazi kutofautiana, lakini haina suffice kwa kuweka tu $ Counter katika mwili wa HTML yako kwa sababu ya kozi kama ni pale tu kati ya PHP yako HTML ni kwenda kudhani kwamba tu HTML. Wewe unataka literally $ kinyume na kuchapishwa kwenye screen. Lakini badala na kuacha katika mode PHP na hii kipande ya syntax tunaweza dynamically Insert thamani hapa sawa sana katika roho kwa nini sisi alifanya muda wa mwisho kwa inserting maadili ndani ya masharti. Kwa kweli, hii ni nukuu shorthand kwa kusema kitu kama hiki literally, magazeti ($ counter) au hata kitu kama printf (% s, counter), au hata, kama unaweza kuwa na kuonekana online au katika vitabu, kuna kazi katika PHP kuitwa echo ambayo haina kitu kimoja, na wale wote ni tu tena winded njia ya kusema <=?. Katika kesi hii moja huna haja ya kuweka PHP neno baada ya swali alama. Hii ni kwa shorthand nukuu, tena, nini sisi tu kuona wakati uliopita ambayo ni akirudia baadhi thamani. Hebu kuona nini matokeo ya mwisho ya hii kwa kweli ni. Nivuke katika faili wetu counter.php, na tutaweza kuona kwamba Daudi tu alifanya kosa kwa kucheza kwa kificho huko. Hebu kwenda fix chochote Star up, na makosa inaonekana kuwa kuna, wamekwenda, juu ya mstari 37. Kulingana na juu ya ukurasa huu nimetembelea tovuti hii mara 0. Naam, hebu kwenda mbele sasa, na wakati juu ya browser bonyeza Reload icon, na mimi bonyeza Reload, na sasa nimekuwa alitembelea tovuti 1 wakati, 2, 3, 4, 5, 6, 7, 8. Na kwa kweli, ikiwa sisi kuangalia chanzo cha ukurasa huu halisi chanzo code ni kubadilisha, na taarifa ya kukosekana kabisa kwa PHP yoyote, na kwamba kwa sababu PHP code ni tathmini au kufasiriwa server upande, na hivyo ina maana kwamba pato la script PHP ni nini hatimaye alimtuma browser, ambayo katika kesi hii ni baadhi HTML ghafi na baadhi ya maandishi ghafi. Nini kinaendelea hapa? Naam, na mistari wachache wa code Mimi ni uwezo wa kuhifadhi vinavyoendelea katika kipindi cha sekunde kadhaa, au kama sisi walisubiri muda wa kutosha, dakika, hata masaa, baadhi ya thamani katika njia ambayo inafanya HTTP wanaonekana kama stateful ingawa tumekuwa kubakia uhusiano huu kwa server, na ni tu kukumbuka kile nilichosema ni mara ya mwisho, lakini katika hali halisi kuna rundo zima la utata kinachoendelea chini ya Hood kuwashirikisha cookies hiyo kuwezesha PHP nipe udanganyifu ya hii ununuzi mkokoteni-kama kipengele. Kwa sasa, mfano trivial ambapo tuko tu hifadhi integer, lakini kipengele kwamba atakuja tena kuwa na thamani kubwa wakati tunaanza kuzungumza kuhusu miradi ngumu zaidi, kati yao tatizo kuweka 7. Hili ni tatizo sana yako mwisho kuweka katika CS50. Mimi najua, ni hivyo kusikitisha, lakini kile utapata ni kwamba sisi ni kwenda kuhitimisha sehemu hii ya muhula kwa kweli transitioning kutoka mazingira ya C shaka na mazingira ya PHP lakini wakati kutumia baadhi ya misingi sawa sana tumekuwa kuongelea kwa muda fulani. Lengo na pset 7 ni kutekeleza CS50 Fedha, ambayo ni toleo yako mwenyewe ya Yahoo Fedha au Google Fedha au hata Etrade.com ambapo una uwezo wa kuangalia bei ya hisa kwa alama aliyopewa, lakini hata zaidi ya kwamba una uwezo wa "kununua" na "kuuza" hifadhi ya kwamba ni kufanyiwa biashara ya kubadilishana mbalimbali hisa kwa sababu kama ukurasa huu nyumbani hapa unaonyesha, ambayo ni kweli kiwango ambacho tumeanza kuweka tatizo kwa wewe, una aina login hiyo kuuliza kwa jina la mtumiaji na nywila. Ina button kuwasilisha, lakini baada ya hapo, kama tutaweza hatimaye kuona, kuna kitu kweli kinachoendelea chini ya Hood bado kwa sababu ni bado kwa wewe kutekeleza uwezo wa kusajili watumiaji mpya, uwezo wa kununua hisa, kuuza hisa, kwa kweli kuangalia bei ya hisa ya sasa. Na hakika, hii itakuwa kama ulimwengu halisi kama inawezekana kwa sababu sisi tulikuwa ni pamoja kidogo ya kificho kwamba itaruhusu na kazi moja kwa swala Yahoo Fedha, ambayo hufanya ajabu data inapatikana bure kwa ajili ya kuangalia bei ya hisa kwa kuzingatia alama hisa au ticker ishara, na kupata nyuma sasa bei ya hisa ya siku. data wewe ni kweli kuona katika pset hasa hii itakuwa kuhusu kama ulimwengu halisi kama wanaweza kupata hivyo kwamba wewe ni kweli interfacing na ulimwengu halisi ya hifadhi, halisi dunia bei, na tutaona kiasi gani cha fedha unaweza kufanya labda juu ijayo siku kadhaa ya kucheza na kuweka yako mwenyewe tatizo. Lakini hebu kwanza kuweka hatua kwa jinsi ya kubuni kitu ambacho hakika ngumu zaidi kuliko counter.php, hiyo ni ngumu zaidi kuliko yoyote ya Frosh mifano IMS hivi sasa, na hebu jaribu kuanzisha paradigms chache hapa kwamba kuruhusu sisi wote kwa ajili ya pset 7 na labda kwa ajili ya mradi wako wa mwisho kama wewe kufanya kitu mtandao msingi kuweka code yako kupangwa vizuri, ili kujiweka akili timamu, na kuchukua hatua kuelekea kushirikiana, iwe katika mradi CS50 ya mwisho ya au zaidi kama wewe kuendelea mpango kitu katika siku zijazo. Kuna hii ya jumla kubuni dhana katika sayansi ya kompyuta na katika programu za maendeleo kwa ujumla zaidi inayojulikana kama MVC, mfano mtazamo mtawala, na hii ni kifupi silly kwamba inaelezea wazo nzuri sana, ambayo ni mgawanyo wa masuala mbalimbali ya mpango, hasa kutunza tofauti mantiki au mantiki ya biashara ya tovuti ili kitu chochote inahusisha vitu kama wito kazi na querying database na kama kinachotokea si kati ya HTML yako bali katika files tofauti, na kwa kweli, kuna faili hii moja kawaida kwamba una aitwaye mtawala hiyo kwa kweli akili nyuma operesheni, na tutaweza kuona mfano hii katika muda tu. Kuna mfano ambayo ni programu code kwamba hana kuzungumza na database yako, kwamba mazungumzo na Yahoo Fedha na kama, na kisha kuna V katika MVC, maoni, yote ya mambo yale kuhusiana na aesthetics, files kwamba kweli vyenye HTML yako, labda CSS yako na kama. Wazo hapa, kama picha hii unaonyesha, ni kwamba mtawala ni faili, kama tutaweza kuona hivi karibuni na kama itabidi hasa kuona katika pset 7, kwamba dunia mazungumzo kupitia browsers zao mtandao. Hiyo ni faili kwamba anapata alitembelea kwenye mtandao wa umma, lakini mtawala mazungumzo na uwezekano wa mfano, ambayo ni moja au zaidi files ambayo yana code kuhusiana na data, code kuhusiana na database na kama, na kisha mazungumzo na mtawala mmoja au zaidi files inayojulikana kama maoni, ambayo ni aesthetics ya ukurasa wa mtandao, templates ya aina, ambayo inaweza kuchukua baadhi ya data kama pembejeo, lakini mwisho wa siku mantiki tu ndani ya mtazamo lazima utoaji wa data kwamba, iterating juu ya kitanzi na kweli kutema nje baadhi Za HTML rendition yake au hata kitu kama PDF. Nini kizuri kuhusu MVC ni kwamba unaweza kuwa na maoni tofauti kulingana na aina ya kifaa, kwa kuzingatia aina ya faili format kwamba kweli wanataka kuonyesha kwa mtumiaji. Hebu tuangalie mifano michache kuendelea ngumu zaidi na ya pamoja iliyoundwa kwa kuanzia kwanza na toleo 0 hapa. Hebu kwenda mbele na kufungua katika directory yetu MVC leo faili inayoitwa index.php katika saraka 0. Taarifa hii ni super rahisi sana na aghali tovuti kwamba ni aina ya toleo 0 wa homepage kwa CS50, na taarifa jinsi tuna zilizounganishwa na Mihadhara, tuna zilizounganishwa na Muhtasari, na ikiwa mimi kufuata zilizounganishwa na ilani Mihadhara kwamba URL juu juu ni kwenda na mabadiliko kwa lectures.php. Kama mimi basi kufuata zilizounganishwa na Wiki ya notisi 1 kwamba mabadiliko URL week1.php. Kuna inaonekana kuwa haki rahisi kihierarkia muundo hapa. Hebu tuangalie kwa haraka chini ya Hood katika jinsi hii ni kuweka nje, na kwa kweli, ikiwa mimi kuangalia index.php ni pretty rahisi. Kwa kweli, hata mimi kuitwa faili hii PHP hakuna halisi ya programu code. Kuna maoni kwamba mimi aliandika hapa katika PHP hivyo tu mtumiaji hana kuishia kuona ni. Bila shaka, kama kabla, chochote ni katika kati ya PHP tags anapata kufasiriwa, hata kama ni maoni, na kutafsiri maoni ina maana tu kutupa mbali mwisho wa siku na si kweli kutuma kwa browser, hivyo kila kitu katika hapa ni tu aesthetics. Kama mimi kufungua vile vile lectures.php hii pia ni ngumu tu coded faili. Hufanyika kuitwa kitu php., lakini kwa kweli ni tu html, na week1.php, week2.php. vile vile ni tu ghafi, hivyo kuna rundo la mapungufu ya muundo huu. Moja, ni kubwa kiasi cha nakala kuweka /. Hata ingawa jambo tu hiyo kubadilisha kati ya hizi files ni orodha unordered, tags li, mimi hata hivyo kuwa na doc aina, HTML, kichwa, cheo, karibu mwili, karibu HTML na zaidi katika faili kila moja, ambayo ina maana kwamba kama mimi milele wanataka urekebishaji ukurasa huu mtandao au restylize ni mimi na kwenda katika na kubadili files haya yote mwenyewe au pamoja na baadhi kubwa ya kupata na badala. Hebu kuchukua hatua kuelekea kubuni nadhifu, tena kufikiri katika toleo 1 hapa ambapo kama kwa kusoma yangu kwamba tumekuwa pamoja ili uweze kucheza pamoja na haya zaidi leisurely katika taarifa nyumbani kuwa tuna hapa muhtasari wa files katika toleo 1 wa tovuti hii, na inaonekana kwamba nimepata kuchukuliwa ni juu ya nafsi yangu kwa sababu nje baadhi ya kanuni ya kawaida, header.php na footer.php. Naam, hebu tuangalie nini ndani ya kwanza ya wale. Header.php inaonekana familiar, lakini taarifa ambapo gani kupata kukatwa? Haki baada ya mstari 19, hivyo ndiyo kila kitu kilichokuwa kawaida kutoka index.php files, lectures.php, week1 na week2.php kutoka mfano uliopita. Nini mimi ilikuwa nakala na kila kitu kupunguza kwamba ilikuwa ni kawaida kwa wale wote files, kuiweka katika faili tofauti header, na vile vile katika footer.php Je, mimi kuomba kanuni hiyo ambapo tu ya kuvutia mistari katika footer.php ni hizi mbili, karibu na mwili HTML karibu. Lakini nini maana ya hii sasa ni kwamba katika toleo la mwezi ya taarifa index.php jinsi rahisi sana unaweza kupata. Nafasi, kidogo zaidi cryptic kuangalia, kidogo kidogo Intuitive kufuata juu hadi chini, lakini Mungu wangu, wote wa redundancy kwamba sasa ni gone. Tunahitaji kutumia kazi PHP literally kuitwa zinahitaji juu juu, ambayo ni sana kukumbusha, kukumbuka, ya ya C # ni pamoja na utaratibu. Sisi zinahitaji header.php kwa juu. Sisi zinahitaji footer.php chini, na kitu pekee ambayo ni tofauti au maalum kuhusu faili hii ni maudhui hiyo ilimaanisha kuwa wa kipekee na hiyo. Kama mimi niende, kusema, lectures.php, kanuni hiyo inatumika. Tena, baadhi ya maoni juu juu, lakini basi mimi zinahitaji header, zinahitaji footer, na katika kati ni tu maudhui ya kwamba ni kweli iliyopita. Na kama sisi inaonekana katika Wiki 1 na 2 Wiki tunatarajia kuona kwamba kanuni hiyo amekuwa kutumika huko. Naam, sisi siyo kabisa kufanyika huko. Hebu tuangalie version 2, ambayo ina muundo sawa, lakini taarifa sasa nimekuwa ilianzisha kitu kingine. Katika mstari wa 10 Nimekuwa ilianzisha helpers.php, ambayo inaonekana ina kazi msaidizi. kazi msaidizi ujumla ni kazi mfupi kwamba kuandika kukusaidia nje katika maeneo mbalimbali, na hebu angalia nini ndani ya helpers.php. Katika kesi hiyo, inaonekana kama ina kazi 2. Kumbuka kutoka siku nyingine kwa mfano wetu mchemraba unaweza kufafanua yako mwenyewe katika kazi PHP, na kile nimepata kufanyika sasa ni nimekuwa defined kazi kuitwa atatoa footer na atatoa header, kwanza ambayo inachukua parameter kuitwa data, ambao default thamani ni safu tupu, kama ilivyopendekezwa hapo, na tunaweza kweli kuandika hii hata zaidi succinctly katika toleo la karibuni la PHP kwa kusema wazi mraba bracket, imefungwa Mabano ya mraba. Hiyo ina maana safu tupu ya kawaida 0 lakini hata hivyo safu. Hii kazi ni dondoo kidogo maalum katika kuwa kile yake ni inachukua kama hoja yake safu associative ambayo ina 0 au zaidi ya jozi thamani muhimu, na kama una ufunguo wa foo na thamani ya bar kazi dondoo inajenga hali ambayo sasa, kama ya mstari wa 11, una variable mitaa inayoitwa $ foo ambao thamani ni bar. Na kama alikuwa na funguo zaidi na maadili katika safu data, vile vile wangekuwa kuondolewa ndani ya wigo wa ndani au jina nafasi ili footer.php na wazo sawa chini hapa ili header.php wanapata vigezo wale. Kwa kweli, napenda kufungua tena header.php na kuteka makini na sasa nini inaonekana kama katika toleo hili. Badala ya coding ngumu CS50 kama cheo kwa kila ukurasa moja taarifa mabadiliko kwamba inawezekana sasa. Katika mstari 5 nina akirudia variable cheo, lakini kwanza mimi nina kupita kwamba kutofautiana cheo kazi kuitwa htmlspecialchars. jina kijinga kwa kazi, muda mrefu kama ni, lakini ni kweli haina nini anasema. Ni kuhakikisha kwamba yoyote herufi maalum katika kamba hiyo imekuwa kupita katika ni vizuri alitoroka HTML. Hii ni kweli njia ya kuepuka kitu kinachoitwa msalaba tovuti scripting mashambulizi ambapo mtu unaweza maliciously au kwa ajali odla HTML yao kwenye tovuti yako na pasting katika fomu baadhi, kwa mfano, kitu ambacho hawakuwa wanatarajia kabisa, hasa JavaScript code, kama tutaweza majadiliano juu katika wiki mbili au wakati wa. Hii header.php sasa, ni mtazamo kwa maana kwamba inaruhusu wewe mtazamo aesthetically maudhui ya baadhi ya kuweka data. Lakini zaidi hasa, ni template. Hii ni aina ya mwongozo wa sasa wa nini tunataka header ya kila ukurasa ili kuangalia kama, lakini kuna baadhi ya mabadiliko katika kwamba tunataka cheo kuwa dynamically kuingizwa msingi variable cheo kwamba mara extracted wakati sisi kuitwa, tena, header asimlipe kazi. Sasa, kama sisi inaonekana katika footer asimlipe, kuna kweli si sana matumizi ya haki ya kwamba sasa kwa sababu katika footer.php hakuna mabadiliko yoyote. Kuna inaweza kuwa, lakini kwa sasa ni vigumu coded orodha ya vitambulisho 2, lakini wazo moja inatumika, hivyo kwamba kweli unaonyesha nini gani sisi kupoteza muda kuwa na header asimlipe na asimlipe footer kazi? Hebu kwenda badala sasa katika toleo 3, na katika toleo 3 katika wasaidizi niliamua kurahisisha hata zaidi. Basi mimi na moja asimlipe kazi. Hebu kuwa ni kuchukua mwingine hoja, wakati huu huitwa template, ambayo ni maana ya kuwa jina la template, kisha mimi concatenate kujikinai php. kwa thamani ambayo variable ya, na kisha kama ipo bar.php foo.php, au header.php na footer.php, basi mimi nina kwenda mbele na dondoo data variable na kisha zinahitaji kwamba njia. Kwa maneno mengine, kwa kutumia hii sasa, ikiwa mimi kufungua index.php taarifa kwamba mimi si kuwaita asimlipe header tena. Mimi tu wito atatoa, lakini mimi kupita katika thamani alinukuliwa ya header kufanya wazi ambayo template mimi kweli wanataka kupakia. Kisha juu hapa ilani nini mimi kufanya. Mimi nina kupita katika ufunguo dynamically wa cheo, thamani ya CS50, na hii pia, kama tulivyoona mbele, inaweza kuwa zaidi succinct katika toleo la karibuni la PHP ambapo naweza kuchukua nafasi ya kazi ya safu na mabano mraba, ambayo napendekeza ni hata zaidi someka na shaka rahisi kidogo na aina. Na bila shaka, kwa mwito asimlipe footer chini, sisi si bother kupita katika hoja ya pili wakati wote, hakuna safu associative, kwa sababu kuna kitu nguvu ndani ya footer kwamba. Ni baadhi tu tags karibu kwa HTML. Nzuri, sisi ni kuchukua hatua kuelekea kweli kusafisha mambo hapa juu, lakini napenda kufungua 2 mifano ya mwisho. Hii moja, namba 4, taarifa kwamba mimi ve alifanya uamuzi sasa ya kuboresha juu ya mfano uliopita kwa hatimaye kutumia baadhi Hierarkia kwa files yangu. Ona kwamba katika muhtasari huu, katika hii kusoma yangu, nimekuwa ilianzisha ni pamoja na directory saraka templates ambao yaliyomo ni kwenda kuwa mambo nataka ni pamoja na na templates kwamba mimi nataka kutoa, kwa mtiririko huo. Hii ni kweli mimi kuwa anal na kujaribu kuweka mambo tidy, kuweka files kuhusiana pamoja, lakini matokeo ya mwisho ni kwamba sisi sasa kuwa na kuanzisha kidogo tidier, lakini tunahitaji kukumbuka sasa katika, kwa mfano, index.php wakati sisi zinahitaji helpers.php faili tuna sasa zinahitaji hiyo kupitia inajumuisha / helpers.php badala ya kusema tu helpers.php kwa sababu sasa ni kweli katika saraka ndogo. Sasa, kama kando, utaona katika mifano hii na baadhi ya watu wengine kazi kama kuhitaji, zinahitaji mara moja. Kuna kweli kazi yenyewe inayoitwa pamoja, na wote wana tabia tofauti kidogo. Hapa nasema zinahitaji mara moja kufanya super wazi kwamba mimi nataka tu wale wasaidizi pamoja na katika mradi wangu mara moja. Lakini kama mimi nina makini na kama nina kweli kufikiri kupitia mantiki yangu vizuri ni lazima suffice pia tu kusema zinahitaji juu juu hivyo muda mrefu kama mimi mwenyewe si ajali zinahitaji kwamba faili huo mahali pengine. Kwa kweli, hii ni njia ya ufanisi zaidi kidogo ya kufanya mambo basi kwa kutumia zinahitaji mara moja, hivyo mimi itabidi trim ni chini tu kuhitaji. Hebu kuchukua hatua moja zaidi. Hii mfano mwisho sasa, toleo 5, ina hata safi folder Hierarkia. Gundua yale nimekuwa kufanyika hapa kwa kusoma yangu katika toleo hili la mwisho ni sasa nina saraka yangu HTML, ambayo nimepata muda wote huu, lakini ndani ya hapo sasa ni tu index.php, lectures.php, week1.php na week2.php. pamoja saraka sasa anaishi pamoja ya saraka HTML, hivyo katika kiwango sawa kama ndugu, hivyo kusema. Hivyo haina folder templates. takeaway muhimu hapa ni Nimekuwa ilianzisha kidogo zaidi muundo, lakini kipengele muhimu sasa ni kwamba tu files kwamba haja ya kuwa na mtandao kupatikana, hadharani addressable na URL kwenye mtandao wa umma ni katika saraka yangu HTML. Wakati huo huo, wengine files, helpers.php, footer.php, header.php, kwamba ni arguably labda zaidi nyeti, labda wasaidizi kweli ina baadhi ya majina ya utumiaji na nywila au baadhi miliki mali ya mgodi, utendaji mimi kwa kweli sitaki kuona dunia, hata kama ajali. Ni vizuri mazoezi ya kuweka nje ya saraka ya umma HTML yoyote files kwamba hawana haja ya wenyewe kuwa umma. Wote una kufanya katika kesi hii wakati kuangalia, kwa mfano, Saraka ya HTML index.php faili, taarifa sisi tu kuwa kidogo zaidi makini wakati wanaohitaji au kuhitaji mara moja hii faili. Nahitaji kwanza kufanya .. kwenda saraka mzazi, basi / inajumuisha / helpers.php kupiga mbizi nyuma chini katika kupata faili kwamba mimi huduma ya juu. Maswali yoyote juu ya basi MVC au hii umwilisho rahisi kiasi hicho? Na napenda kufanya wazi ya kwamba sisi ililenga kidogo kabisa kwenye V hapa, maoni na factoring nje ya templates haya. Tumekuwa si kweli wanajulikana M kutoka C bado tu. Kwa kweli, kuna kweli hakuna M hapa, na hata C yetu, mtawala, si kweli kufanya kiasi kwamba wote, lakini utapata mengi zaidi ukoo na wote wa barua hizo 2 kutoka MVC, au tuseme, utapata mengi zaidi ya ukoo na C katika MVC kwa tatizo kuweka 7, hivyo kuna zaidi ya kwamba juu ya upeo wa macho. Maswali? Kuna kweli hakuna mtu hapa. Okay, hebu sasa hoja juu ya mada ya pili na ya mwisho kwa leo. Hiyo ni kuanzishwa database. Hadi hatua hii tulikuwa na njia chache za data hifadhi. Tumekuwa kutumika vigezo. Nyuma katika faili wetu C, I / O majadiliano tulianza kutumia Nakala files na kutumia files kama fprintf, na kisha sisi hata kuanza kuzungumza juu ya CSV files kidogo, comma separated maadili, hivyo yote haya kuruhusiwa yetu kuwa na data kuhifadhiwa aidha yasiyo vinavyoendelea au vinavyoendelea. Lakini hata CSVs si kweli mazuri ya kutafuta na kuingiza na kufuta. Ni kweli wajinga tu Nakala faili kutengwa kwa koma mstari na mstari na mstari na mstari, hivyo kama unataka kutafuta faili bora unaweza kufanya kweli ni linear tafuta. Una kuanza saa ya juu ya SVG, kusoma kitu wote katika, na kuangalia kwa baadhi ya thamani ya riba. Kama unataka Insert ndani yake una kufanya kitu kimoja, iterating juu yake na kuingiza katika mahali fulani, na kwa kweli, una kufanya yote ya mantiki ya kutafuta mwenyewe. Huwezi kufanya muundo wajanja vinavyolingana kwenye faili CSV isipokuwa wewe mwenyewe kuandika code. Huwezi kufanya filtration ya faili CSV isipokuwa wewe mwenyewe kuandika code. Je, si ni kuwa nzuri kama mtu mwingine ametoa kila juhudi kwa kweli kufanya kutafuta rahisi na rahisi insertion na kufuta na uppdatering na kadhalika? Hiyo ni nini hasa database ni. SQL, muundo swala lugha, bado mwingine lugha kwamba sisi ni kuanzisha hapa leo, lakini hii pia ni uungwana kupatikana, na kile sisi ni kweli kwenda kufanya ni tu kuwatoa ni baadhi ya wengi salient sifa ili kwa pset 7, na kama wewe kufanya kitu mtandao msingi, mradi wako wa mwisho, una uwezo wa kueleza mwenyewe katika suala la maswali data. Una uwezo wa kuhifadhi kidogo au mengi ya data katika njia zaidi ya muundo kwamba mapenzi ya mwisho wa siku kufanya maisha yako rahisi kwa sababu pamoja na SQL unaweza kueleza mwenyewe zaidi just, zaidi methodically ili kupata nyuma baadhi subset ya data kutoka corpus kubwa ya data. Unaweza kufikiri ya database, katika kesi hii, database SQL, kweli kama Excel au Hesabu ambapo ni spreadsheet, au labda nyingi spreadsheets, na spreadsheet, bila shaka, ina mistari na nguzo, na kwamba kwa sababu SQL databaser ni kimahusiano, kimahusiano katika hisia kwamba wao kuhifadhi data katika suala la mbao hizo, safu na nguzo. Wao ni kubwa zaidi kuliko kitu kama performing spreadsheet, na spreadsheet ni maana ya kutumika kwa binadamu. database ni maana ya kutumika kwa programu kuandika code dhidi yake, hivyo mwili wa database ni kwenda kuwa aidha mstari amri. Moja ya database maarufu kimahusiano nje kuna, tena, MySQL, ambayo ni ya ajabu bure, juu sana performing, na hii ni nini Facebook kutumika mapema sana na kwa kiasi fulani bado leo kuhifadhi data nyingi yake, na tutaweza kuona katika wakati kwamba kwa kutumia amri rahisi kiasi tunaweza kuchagua data, Insert data, update data, kufuta data na kama, lakini nashiriki, kuna zaidi user-kirafiki interface kuliko kuandika tu katika haraka nyeusi na nyeupe hapa. Tutaweza kutumia kwa pset 7 na zaidi ya chombo huru walioitwa phpMyAdmin. jina ni coincidental. chombo kinachotokea kutekelezwa katika PHP, lakini hiyo ni kimsingi lisilo na maana. Nini muhimu kuhusu phpMyAdmin ni kwamba ni shirika mtandao msingi. Tumekuwa kabla ya imewekwa katika appliance kwa ajili yenu, na kwa kuwa unaweza kuunda meza katika database, unaweza kuingiza data, kufuta data, na kwa ujumla kuona data yako katika mazingira uungwana user-kirafiki. Watumiaji yako si kwenda kutumia phpMyAdmin. Hii ni kweli chombo tu ya utawala au mwendelezaji na ambayo kwa kuona na poke kuzunguka data zako na kufikiri jinsi ya kuunda hiyo, kiasi kama wewe mwenyewe anaweza kutumia Excel au Hesabu, lakini ni kwenda kuwa njia kuu ya visualizing nini kinaendelea chini ya Hood ili uweze kuzingatia tatizo kuvutia kutatua na hata juu ya amri arcane. Hebu tuangalie mfano wa data ambayo inaweza kuhifadhiwa tabularly katika database kimahusiano. Hapa ni mfano mmoja vile. Sasa, kwa bahati mbaya, phpMyAdmin ilikosea upande wa njia kutupa pia maneno mengi na graphics saa wewe, lakini kama wewe hone katika tu juu ya ID safu, safu ya mtumiaji jina, na safu hash, hii ni kwa ufanisi spreadsheet, lakini hutokea kwa kuwa snippet ya ndani ya meza ya appliance kutumia faili kwamba sisi kutoa kwa tatizo katika kuweka 7. Hasa, sisi kukupa faili kwamba inawakilisha meza ya mtumiaji, hivyo spreadsheet zenye watumiaji na nguzo 3, moja ambayo ni ID kipekee kuanzia saa 1 na kuwa incremented baada ya hapo. safu ya pili ni jina la mtumiaji, na wale ambao walifanya Hacker, Toleo Hacker kwa pset 2, ili kutambua baadhi ya majina haya mtumiaji angalau. Upande wa kulia ni nywila, lakini wao siyo halisi nywila. Wao ni hashes yake, hivyo ni zinageuka kwamba kuhifadhi nywila katika database ni wazo mbaya kweli kweli. Ve yote pengine kusoma wakati fulani wa tovuti ya baadhi au orodha ya baadhi ya kampuni ya kuwa kuathirika, na kisha una kubadili password yako, unahitaji kupata fidia juu ya mambo kwa sababu baadhi guy mbaya kweli kuvunja katika akaunti yako kama matokeo. Kuhifadhi nywila katika maandishi wazi, kimaandishi katika database ni kabisa asinine, na bado ni sana amusing kisha kusoma kuhusu baadhi ya makampuni yanajulikana sana wakati mwingine katika vyombo vya habari database ambao unachafuliwa, na sehemu ambayo si ya funny, lakini ukweli kwamba database vyenye kimaandishi nywila ni ujinga kwa sababu literally mstari mmoja wa code unaweza kulinda dhidi ya tishio hilo, na kwamba ni nini tumekuwa kufanyika hapa. Hata kwa bandia yetu kidogo CS50 version Fedha sisi ni encrypting nywila tu kwa ajili ya hatua nzuri, na ukweli kwamba wote wa nywila hizi kuanza na $ 1 $ ni mkataba. Hiyo ina maana wao ni encrypted au kweli heshi, ambayo ni kama kazi moja ya njia fiche ambapo huwezi kubadili athari zake na kitu kinachoitwa MD5. ukweli kwamba ni 50 baada ya hiyo ina maana kwamba thamani chumvi 50 ya ilitumika kwa hashing wote wa nywila haya isipokuwa kwa moja. Mine, bila shaka, kama unaweza kuona kuna, HA, ilikuwa kutumia chumvi tofauti, hivyo wale ambao got kidogo tripped up labda katika Hacker 2, kwamba inaweza kuwa matokeo ya yetu baada ya kutumika hash tofauti kuliko wengine kwa sababu password yangu ni kweli huo kama baadhi ya mtumiaji nyingine huko juu. Kwa kweli, kama tumekuwa kusubiri wiki hizi zote ili kujua nini wale nywila walikuwa hapa walikuwa nywila kwamba walikuwa changamoto ufa katika toleo Hacker ya tatizo kuweka 2, hivyo hakuna pia suala gumu. Kwa kweli, Malan ilikuwa sawa kama jharvard, lakini kama sisi kurudi nyuma walikuwa wanaonekana tofauti. Kuzingatia jharvard ya nyekundu kwa sababu walikuwa chumvi tofauti. algorithm alikuwa perturbed kwa njia ambayo hash thamani, thamani encrypted inaonekana tofauti kidogo kwa sababu pembejeo walikuwa tofauti kidogo, lakini password chini ya Hood ilikuwa bado hatimaye nyekundu. Sasa, nani anayejali kuhusu hili? Naam, sisi ni kutoa kwa watumiaji sampuli, mtumiaji sampuli majina na hashes ya nywila zao ili kweli kuwa baadhi ya wateja wa Fedha CS50 wakati wewe kwanza kupata mbali ya ardhi kwa kificho yako. Itabidi kutekeleza meza zaidi ndani ya MySQL, ndani ya database. Itabidi kujenga spreadsheets zaidi, kwa ufanisi, lakini tuliamua kukupa hii moja kupata wewe ulianza, na utaona kwamba kuweka tatizo vipimo anatembea wewe kupitia mchakato wa kuagiza hii meza na pia kuelezea ni nini baadhi ya sifa ni, na wewe utakuwa pia kuona kwamba sisi kutoa kwa kificho kushughulikia hashing au fiche wa nywila hizi, hivyo huna haja ya kuwa na wasiwasi sana kuhusu kile MD5 au kama ni kweli yote juu. Hivyo, SQL, muundo swala lugha. Hii ni, kwa urahisi kabisa, lugha sisi ni juu ya kuanza kutumia katika pset 7 na labda zaidi ya kuomba data kutoka database baadhi. wa data, tena, kuhifadhiwa tabularly katika mbao hizo kimahusiano, nguzo, na safu, lakini kwa kutumia baadhi ya kisintaksia rahisi kama kufuta, Insert, update na kuchagua tunaweza kufanya hasa ile. Tunaweza kufuta kutoka database, Insert, update data, kama vile kuchagua, kwamba ni, kupata data kutoka database. Jinsi gani sisi kwenda juu ya kufanya hii? Hebu kwenda mbele katika appliance. Hebu vuta hadi http://localhost, ambayo, tena, ni appliance mitaa yenyewe. Hiyo ni default yake jina la utani. Na niende phpmyadmin /. Hii hutokea kwa kuwa URL maalum kwamba appliance ni preconfigured kuelewa kwamba mara prompts mimi kwa jina la mtumiaji na nywila. Kama kawaida, mimi naenda kwa aina jharvard na nyekundu, lakini kutambua kwamba ni akaunti ya msimamizi wa kwenye kompyuta. Ni bahati mbaya tu kwamba kuna pia jharvard kusajiliwa kwa Fedha CS50. Jharvard, nyekundu, kuingia anitiaye interface user kuwa tuliona glimpse ya muda iliyopita, na ni kidogo mno kwa mara ya kwanza, lakini wengine uhakika, wewe kamwe kwenda na bonyeza zaidi ya viungo katika chombo hiki. Kuishia kutumia subset ndogo kwamba ni super msaada, ya kwanza ambayo ni database hapa. Kama mimi kwenda databaser, taarifa kwamba mimi nina ilisababisha kujenga database. Hii ni kama kujenga mpya Excel faili, kwa ufanisi. Mimi nina kwenda mbele na wito huu hotuba, na mimi nina kwenda tu kupuuza shamba huko, kukusanya. Ni ina nini na uwakilishi wa data humo, na mimi naenda bonyeza kujenga, na sasa taarifa kama mimi basi kwenda kujenga upande wa mkono wa kushoto ambapo anasema hakuna database Mimi lazima haraka kuona database mihadhara. Kama mimi sasa bonyeza upande wa mkono wa kushoto, database hotuba, taarifa tabo yangu kubadilisha kidogo. Mimi nimepata muundo, SQL, kuuza nje, kuagiza na mambo mengine. Muundo ni kiasi pretty tupu. Hakuna meza kupatikana katika database, kama anasema hapa, hivyo hebu kuunda meza, na hebu kwenda mbele na kujenga meza kama wanafunzi, na jinsi wengi nguzo gani tunataka? Hebu kuweka hii rahisi, na hebu rekodi kwa kila mwanafunzi Idadi ID, jina na anuani ya barua pepe. Tutaweza kuitunza rahisi kama kwamba, hivyo 3 nguzo, kwenda. fomu kwamba unaweza kuona hapa ni sasa kidogo kidogo messy na balaa, lakini sisi tu kwenda kupitia safu hiyo kwa mstari, hivyo kweli haraka hebu kutoa safu ya kwanza katika hii database jina la ID kwa kitambulisho kipekee. Itakuwa integer. Kwa kweli mimi kupuuza urefu na maadili. int ni kwenda kuwa 32 bits bila kujali wewe aina katika huko, hivyo hebu kuondoka ni tupu. Default thamani, mimi naweza kufanya hivyo null, kama inavyoelezwa. Mimi naenda kuondoka kwamba peke yake. Hebu na wasiwasi juu ya maadili default. Hebu kitabu zaidi ya hapa na sifa kulia. Hii ni ya kuvutia. Hebu kwenda mbele na kiasi fulani kiholela kusema kwamba vitambulisho lazima unsigned. Hebu si kupoteza idadi yoyote hasi. Hebu kwenda 0-4000000000, kutoa au kuchukua, na kisha basi si kugusa yoyote ya mashamba hayo bado tu zaidi ya hapo, lakini basi mimi aina katika jina hapa chini, na kisha nyingine ilikuwa ya barua pepe, hivyo catch ni barua pepe na jina, ni wazi si integers, hivyo hebu mabadiliko haya kwa shamba tofauti. Ni zinageuka varchar, variable urefu Char, ni kama kamba katika database SQL lakini urefu variable, na kwa kweli kuwa na kuwaambia hilo kabla upeo wa urefu wa kamba, hivyo mimi nina kwenda fulani kiholela na mkataba aina 255 za wahusika. Mimi naweza kabisa kusema 32. Mimi naweza kusema 1000. Wewe aina ya haja ya kuamua mwenyewe kwa kuzingatia idadi ya watu wako ni nini jina la mwanafunzi mrefu na kwenda na kwamba idadi kubwa kidogo au, lakini nini kizuri kuhusu varchar ni si kwenda kupoteza 255 ka juu ya kila jina mwanafunzi. Kama ni DAVID si kwenda kutumia nzima ka 255, lakini hiyo ni amefungwa juu, hivyo nitakwenda kwa 255 tu kwa mkataba, lakini tunaweza kujadili kwamba kuwa baadhi ya thamani ya chini, na kwa anuani ya barua pepe tu kuwa thabiti 255, lakini tena, tunaweza kuwa na mjadala huo. Lakini mimi naenda kufanya mtu mwingine kitu zaidi ya hapa upande wa kulia. Nini nguvu kuhusu database ni kwamba inaweza kufanya mengi ya kuondoa nzito au tata kazi kwa ajili yenu. Hasa, kwa kweli mimi sijali nini ID mwanafunzi wangu idadi ni. Ni tu maana ya kuwa kitambulisho kipekee katika database hivyo nina 32-bit succinct uwakilishi wa mwanafunzi kwamba hivyo kwamba nina baadhi ya njia ya kipekee utambulisho wao kusije kukatokea 2 Davids, kwa mfano, katika darasa. Kwa kweli, mimi nina kwenda kuangalia hii sanduku AI, auto increment, hivyo kwamba database, MySQL, takwimu nje nini ID kila mwanafunzi wapya kuingizwa ni kwenda kuwa. Mimi wala hata kuwa na huduma ya juu kwamba katika code yangu, na mimi nina pia kwenda kuchagua kitu chini ya menu index. index kushuka chini hapa ina msingi, kipekee, index na maandishi kamili. Unaweza labda nadhani nini michache ya mambo haya ni, lakini zinageuka katika database kimahusiano wewe programu au msimamizi database kupata preemptively kutoa mwanga kwa database kama yale mashamba katika meza maalum ni kidogo. Kwa mfano, katika kesi hii mimi nina kwenda kusema kwamba ID ni kwenda kuwa index ya msingi, inayojulikana kama muhimu ya msingi. Hii ina maana gani kwa ufafanuzi ni ID tangu sasa itakuwa ya kipekee kutambua wanafunzi katika meza hii. Hakuna mwanafunzi atakuwa na ID huo kwa sababu mimi nina kuweka hii kikwazo au hii index. Aidha, ni nini hii ni ya kwenda kufanya kwa ajili yangu ni itakavyo kuwaambia MySQL kwamba ID ni maalum. Mimi huduma hasa kuhusu ID, hivyo kwenda mbele na kufanya uchawi data yako dhana ya muundo, kujenga baadhi ya aina ya mti. Kawaida ni kitu inayoitwa B-mti, ambayo sisi hawakuwa kuangalia wiki iliyopita, lakini ni vile mwingine data muundo sawa katika roho kwa miti binary na anajaribu kuwa tuliyoyaangalia, lakini ni kwenda kusema na database uwanja huu ni muhimu sana kwamba mimi pengine unataka kuwa na uwezo wa kutafuta juu yake, kwenda mbele na kujenga baadhi ya dhana data muundo katika kumbukumbu kuharakisha upekuzi ili walau wao uko mara kwa mara wakati au angalau kama karibu na kwamba kama iwezekanavyo hivyo kwamba hana madaraka ndani ya search linear, ambayo si kwenda kuwa wengi high performing mbinu. Kwa kulinganisha, anuani ya barua pepe inaweza kuwa muhimu ya msingi. Katika nadharia, barua pepe kila mtu anuani ni ya kipekee, isipokuwa wewe unashiriki baadhi ya akaunti, lakini ni ujumla sio nzuri ya kutumia kitu kama kamba kama ufunguo msingi kwa sababu kama madhumuni yake katika maisha ni ya kipekee kutambua safu katika meza yako hakuna sababu ya kutumia ka 255 Upeo kwa kipekee kutambua mtu kama unaweza kupata mbali na ka tu 4 au int 32-bit. Kwa ujumla, muhimu ya msingi ziwe fupi na succinct na walau kitu kama integer au int kubwa, ambayo hufanyika kuwa 64 bits. Lakini anwani ya barua pepe lazima iwe ya kipekee, na moja ya sifa za database pia ni kutekeleza uniqueness kwa ajili yangu. Kwa kuchagua kipekee hapa karibu na barua pepe, hata ingawa email yenyewe ni scrolled mbali screen, mimi kusema na database hawana imani yangu. Je, si basi mimi kuingiza katika orodha sawa anuani ya barua pepe mara mbili, hata kama nina idiot na mimi si nzuri sana na ikiwa yangu na ikiwa mwingine na code halisi PHP na mimi ajali basi mtumiaji kujiandikisha na anuani ya barua pepe iliyopo database bado mwingine ngazi ya ulinzi kwa usahihi kuhakikisha kwamba kwamba duplicate anuani ya barua pepe haina kuishia katika meza. Sasa, kwa kulinganisha, kwa jina wewe pengine hawataki kufanya kwamba kipekee kwa sababu basi kuna kamwe kuwa 2 Davids au 2 Smiths Mike, kwa mfano, katika database yako, ili moja tutaweza kuondoka tu peke yake. Mimi nina kwenda mbele na bonyeza kuokoa katika haki ya chini, na kila kitu inaonekana nzuri, lakini taarifa juu hapa hii ni sehemu ya kwamba kwa sasa hatutaweza kutumia muda sana juu ya kwa sababu syntax ni tata kidogo, na hatuna kujenga meza wote kwamba mara nyingi, lakini SQL yenyewe ni lugha, syntax kwa ajili ya ambayo ni haki hapa kwamba nimepata yalionyesha. Nini phpMyAdmin kweli anafanya ni inajenga GUI mtandao msingi kwa wewe ambayo unaweza kuokoa muda na si kuwa na manually aina nje uungwana mrefu SQL query kama hiyo. Kwa maneno mengine, kama alitaka manually kuunda hii meza, aidha katika kwamba phpMyAdmin nyeusi na nyeupe haraka au hata katika kwa kutumia tab mengine, hii tab SQL ambapo unaweza aina katika maswali yoyote SQL unataka, kusema ukweli, hii ingekuwa kuchukuliwa yangu dakika kwa kweli kumbuka syntax nzima, na hata basi mimi pengine ingekuwa alifanya typos baadhi, hivyo chombo hiki ni muhimu kwa ajili ya mambo kama hayo, na pia ni mazingatio. Unaweza kuanza infer nini syntax ni tu na rangi nzuri ya coding phpMyAdmin kwamba ni kuongeza kwa urahisi wetu Visual. Lakini sasa hebu kufanya hivyo badala yake. Hebu kwenda tab Insert saa ya juu, na napenda kwenda mbele na kuingiza kwa mfano ID ya wa wacha-kusema kweli mimi sijali. Ni kwenda increment auto. Mimi nina kwenda basi mpango database na hili. Lakini nitakuwa Daudi, na email yangu lazima malan@harvard.edu. Hebu kwenda mbele hapa na kuweka katika Mike Smith kama mwingine mmoja. Nitapatia mwenyewe jina la mwisho kama vile, na tutaweza kuwa awe smith@example.com, na kisha ambapo mimi kwenda baada ya hapo? Naam, inaonekana kama kwenda ni kifungo kwa bonyeza, na voilĂ . Angalia katika safu ya juu 2 kuingizwa. Hii ni halisi SQL query. Hiyo ni chombo phpMyAdmin kunyongwa kwa ajili yangu, lakini matokeo ya mwisho, angalia, kama mimi sasa kwenda tab browse, ni kuona safu 2 katika meza hii, sana kukumbusha aesthetically ya meza tuliona mapema kwa ajili ya watumiaji wetu kutoka pset 7, mmoja ambaye ni David Malan, mmoja ambaye sasa ni Mike Smith. Lakini tu kuwa wazi, sihitaji kutumia phpMyAdmin, na kwa kweli, utaenda hivi karibuni kuandika code kwa pset 7 kwamba automates mchakato wa kuongeza safu, kufuta safu, uppdatering safu na kama, hivyo basi mimi badala kwenda tab SQL juu hapa na aina ya kuchagua * kutoka kwa wanafunzi ambapo email = "malan@harvard.edu." Kwa maneno mengine tuseme sasa una baadhi HTML fomu, na aina ya mtumiaji katika barua pepe yao, miongoni mwa maeneo mengine, na lengo sasa ni katika PHP code juu ya nyuma mwisho kwa kweli kuangalia kwamba mtumiaji maelezo mengine. Je, ni jina lako kamili? Nini ni ID namba yako? Unaweza kuandika query SQL kama hii, chagua * kutoka kwa wanafunzi ambapo barua pepe = "malan@harvard.edu." Na kama mimi kisha bonyeza kwenda, taarifa kwamba mimi lazima, na kwa kweli mimi, kupata tena moja tu mfululizo. Mike ni omitted kutoka kuweka matokeo haya, kama mkusanyiko wa safu ujumla ni kuitwa, kwa sababu yeye hana huo anuani ya barua pepe kama mimi. Sasa, tena, hapa kwa pset 7 utasikia kutumia phpMyAdmin kama chombo kiutawala na chombo ufundishaji na kujifunza njia yako duniani kote ya SQL, lakini mwisho wa siku wewe utaenda kuandika maswali haya ndani ya maadili halisi PHP, na hivyo kukaa tuned katika walkthrough Zamyla katika hasa ambapo utapata ziara ya maadili ya usambazaji kwa ajili ya kuweka na tatizo hili ambapo tumekuwa kupeni si tu aesthetics kwa ukurasa wa kuingilia na nice sexy alama kwamba anasema CS50 Fedha, lakini tumekuwa pia kupeni rundo la kazi ambayo itafanya maisha yako kidogo rahisi. Tumekuwa pia imeandikwa sehemu ya pset kwa ajili yenu, sehemu login yake hasa, na kukupa hisia ya kubuni mwakilishi kwamba kweli anatumia mtawala, kwa mfano index.php, login.php na kama, na kisha utaona pset pia ina saraka templates ambayo ina wote wa maoni yako, wote wa aesthetics. Na hivyo workflow jumla katika pset 7 ni kwenda kuwa kwamba watumiaji wako kutembelea mtawala kupitia URL katika browser. Hiyo ina mtawala PHP code kwamba aliandika, na ndani ya maadili yako PHP inaweza kuwa baadhi ya mistari ya SQL nested katika kati ya quotes mbili na kupita kwa kazi sisi aliandika kuitwa swala ambayo itakusaidia kuzungumza na database bila kutumia kitu kama chombo kiutawala kama phpMyAdmin. Wewe utakuwa na uwezo wa kuandika taarifa SQL katika PHP code na kupata nyuma safu PHP wa kuweka matokeo, ya mistari kwamba kweli kwamba mechi swala. Na vile vile utakuwa na uwezo wa kufanya au kuwekeza deletes au updates au kama, syntax kwa ajili ya ambayo ni haki sawa, na utaona kutoka marejeo baadhi online, kutoka code usambazaji na kutoka pset pakiti yenyewe hasa jinsi ya kwenda juu ya kufanya hivyo. Kutambua hatimaye sisi ni kweli tu scratching ya uso wa SQL na ya MySQL, lakini nguvu ya kweli ni kwamba frees wewe kuzingatia matatizo unataka kutatua, kesi ya matumizi unataka kutekeleza bila kuwa na wasiwasi kabisa kama mengi, angalau mapema, kuhusu wapi na jinsi ya kuhifadhi na kutafuta database yako, na hii ni halisi kabisa ambapo Facebook yenyewe got kuanza yake kutumia MySQL na kisha kwa kutumia zaidi servrar MySQL na kisha zaidi MySQL server kabla ya muda mrefu mpaka basi ilibidi kweli kuanza kufikiri sana kuhusu jinsi ya kuhifadhi data, jinsi ya kuhifadhi vitu hata ufanisi zaidi, hivyo hata kama tutaweza kuchukua nafasi ya ukweli kwamba bahati na vikwazo kipekee na hivyo nje tu kazi kuna mazungumzo ya kuvutia sana kwamba huu unaweza wote hatimaye kusababisha, hivyo kutambua kwamba sisi ni tu scratching uso ya nini inaweza hatimaye kwa wewe au miradi yako kuwa kabisa kidogo ya data kubwa. Kwa kuwa alisema, hebu mwisho hapa, na tutaweza kuona wewe wiki ijayo. [CS50.TV]