[MUSIC Playing] DAVID J. Malan: Në rregull. Mirë se vini mbrapa. Kjo është CS50. Ky është fundi i javës 8. Dhe, siç e dini, ne kemi mjaft orë të rregullta zyra në disa e mensave, përfshirë Annenberg. Dhe disa prej ekipit mirësi mori disa fotografi të kohëve të fundit. Dhe në nder të Halloween, ne menduam se do të ndajnë atë që në vend të na kapur nga surprizë këtu në Annenberg Hall vetëm natë tjetër. Shok klase tuaj Jacob paraqitura për kjo foto, por ishte më zbavitës ishte në Facebook, që pasoi bisedë që ka ndodhur më pas. Postin e tij e parë në përgjigje në foto e tij ishte kjo. Pak minuta më vonë, ai vendosi njërit deri veten me këtë. Ai vazhdoi më pas për të shkuar në këtë, dhe pastaj, edhe më amusingly është kur nëna e tij nderhyn ne bisede. Dhe pastaj në fund të fundit, duket se kjo ishte vetëm një dinakëri e mrekullueshme për një luajnë që është në vazhdim e sipër. Pra, në qoftë se ju do të pëlqen për të parë Jakobin dhe të tjerët, në mesin e tyre Cynthia Meng, i cili është prapa skenave të stafit të zonës CS50, shkojnë në këtë URL e këtij lojë këtu. Pra, pa zhurmë më tej, sot ne vazhdojë këtë vështrim në programimin e web, dhe krijimi i programeve aktuale se nuk do të kandidojë në linjë tuaj komanduese, por në vend të drejtuar brenda një shfletues. Me sa duket tani, ose shumë së shpejti, ju do të jeni të jetë në mes të zbatimit vet web serverin tuaj, e cila është i ndryshëm nga programimit web. Web server në të pset6 është mbi të gjitha shkrim softuer që e di se si të marrë HTTP kërkesa nga një shfletues, apo edhe nga ju, një njeri, me një program të quajtur Telnet, dhe pastaj t'iu përgjigjur këtyre kërkesave ose duke pështyrë nga një skedar HTML, ose një jpeg, ose një gif, apo edhe një fotografi Php. Por me një web server, kjo nuk është menduar për të vetëm të hapur një skedar PHP, diçka përfundon në PHP, dhe pastaj fol nga përmbajtjen. Ajo është menduar për të bërë çfarë për këtë dosje të parë? Mënyrë që të flasin. Jo përpiloj atë, kemi thënë të hënën, por rather-- Pra, interpretuar atë. PHP është një gjuhë interpretuar, dhe kështu një nga karakteristikat kryesore në web tuaj server, edhe pse zbatohet nga ne, është kjo aftësi për web serverin tuaj në njoftim, oh. Kjo skedë është dhënë fund në PHP. Më lejoni jo vetëm dërgoni atë në Përdorues si ajo e përmbajtje statike, por më lejoni të lexoni atë linjë nga line, e majta në të djathtë, dhe interpretuar atë. Dhe për të bërë, që të ju djema do thelb vë bast për një program në aplikim, dhe në një shumë e sistemeve kompjuterike, quajtur vetëm PHP. Kjo është emri i të PHP Përkthyesi vetë gjuha e. Pra, kjo pjesë ne zbatimin e ju, dhe çfarë ka lënë për ju, në fund të fundit, është një numër e copa, ndër të cilat po zbaton mbështetje për përmbajtjen statike. Por tani, me Problemi vendosur shtatë, ju jeni do të fillojnë të tranzicionit për në fakt shkruani kodin PHP që merr interpretuar për të biseduar me një fund mbrapa bazë të dhënash që ruan informacion. Pra, le të kuptojnë të parë më mirë një çift i këtyre superglobals dhe vetëm sa pushtet ju marrë nga kutia falas me një gjuhë si PHP. Gjërat që ju nuk e keni për të zbatuar veten. Pra, ne e pamë të hënën $ _GET, cila është një superglobal, e cila është vetëm PHP flasin për një globale ndryshueshme ju mund të hyni kudo. Dhe çfarë është brenda $ _GET? Çfarë është brenda kësaj superglobal që ne shohim? S'ka dyshim se statistikisht në të paktën një person e di. Çfarë është brenda $ _GET? Vërtet? AUDIENCA: Është variablat ju vënë në varg pyetje. DAVID J. Malan: Perfect. Kjo është se ju ndryshoret vënë në varg pyetje. Kështu, në shembullin tonë të vjetër të reimplementing Google kur ne kishim një URL, dhe pastaj pikëpyetje, e cila shënon fillimin e HTTP Parametrat, atëherë kishim q barabartë diçka, si q barabartë macet, çfarë do të shkojnë automatikisht në brendësi prej se $ _GET super globale për ju, për shkak të PHP, është një çelës i Q, dhe të vlerës së saj nga macet. Me fjalë të tjera, $ _GET dhe të gjithë këto gjëra janë të vargjeve asociative, tabelat hash në terezi, që çelësat dyqan dhe vlerat. Tani, përsëri në pset5, hash Tabela ju mund të keni zbatuar, ose ju mund të provoni kanë zbatuar, me të vërtetë ishte efektivisht një shoqerues array, një strukturë e të dhënave ku ju mund të bashkohen çelësat me vlera. Por në pset5, vlerat ishin të parëndësishëm. Vlera në thelb ishte e vërtetë apo e rreme. Është fjala në fjalor? Pra, kur ju të sheshuar një fjalë si mollë për të parë nëse Apple është në fjalor, Funksioni tuaj kontrolloni me sa duket u kthye e vërtetë apo e rreme. Pra, kjo është në mënyrë efektive Vlera ne jemi duke u kthyer. Por ne e pamë të hënën shkurtimisht, ju mund të patjetër shok më interesante Vlerat se vetëm e vërtetë apo e rreme me çelësat, si mollë. Ju në fakt mund të kthehet një string arbitrare, dhe në të vërtetë, kjo është ajo $ _GET dhe këto variabla të tjera të ju lejojnë të bëni. Pra $ _POST është e ngjashme në frymë, por në qoftë se ju të paraqesë një formular përmes postës, një metodë të ndryshme HTTP që është e përdoret për gjëra të tilla si kartat e kreditit, dhe informacione private, dhe madje edhe Informacioni binare si foto, këto gjëra të përfundojë brenda $ _POST. Dhe në fakt për fotografi si jpegs dhe gjësend, ka edhe një tjetër që nuk është deri këtu të quajtur $ _FILES si. Pra, server, ne nuk do të banojë më shumë shumë, por kjo ju jep juve akses të për të zgjidhur detaje të nivelit të ulët në lidhje me server vetë që ju jeni duke përdorur. Cookie dhe kohen, edhe pse, ne do të shohim në mënyrë efektive tani. E fundit është ajo që ne përdorim për të zbatuar nocioni i një karrocë pazar. Një njeri super e thjeshtë, por risjell që kemi pasur këtë shembull këtu, duke numëruar se sa shumë ju herë e kishte vizituar këtë faqe para. Por sot, në vend se vetëm të shikoni në Efekti i kësaj, le të hapur Inspektori Chrome, të cilat ju mund të zakonisht bëni duke klikuar ose Kontrollit klikuar kudo në një web faqe, dhe pastaj zgjidhni inspektojë element. Ose ju mund të shkoni nëpër menytë që përshkruajnë në spekulim pset6 së. Dhe unë jam duke shkuar tek tab Rrjetit këtu, dhe le të shikojnë për një moment HTTP trafikut që është e duke shkuar mbrapa dhe me radhë. Më lejoni së pari të shkojë përpara dhe cache të qartë Chrome. Kështu që disa prej jush mund të jenë të njohura me këtë teknikë tashmë, dhe ne jemi duke shkuar për të përdorin atë për qëllime debugging këtu. Tani ne si kompjuter shkencëtarët do të fillojë duke bërë këtë për debugging qëllime, ku ne do të qartë cache, në mënyrë tipike, kështu që ne mund të shpëtoj prej gjërave quajtur biskota. Pra, ju jeni me siguri në përgjithësi të njohur me atë biskota janë, ose të paktën se ato ekzistojnë, por ajo që është të kuptuarit e juaj prej tyre, si vetëm një përdorues të kompjutera, çfarë është një cookie? Po. AUDIENCA: Është pak of-- mirë, jo bit në një afat të shkencës kompjuterike. Kjo është një pjesë e të dhënave që website dërgon për ju në mënyrë të jetë në gjendje për të regjistruar statistika mbi ju. DAVID J. Malan: OK, mirë. Pra, kjo është një pjesë e të dhënave që server, vë mbi kompjuterin tuaj, dhe le të përgjithësojnë atë edhe Për më tepër, kjo është një kyç value-- mirë, që është marrë më shumë të sakta. Kjo është një pjesë e informacion, një pjesë e të dhënave, se një server është në gjendje për të vënë në kompjuterin tuaj dhe shumë shpesh, server bën këtë në mënyrë që të kujtoni se kush jeni. Kështu për shembull, mosmarrëveshje janë ndoshta ju jeni hyrë në faqet si Facebook, ose Gmail, apo të tjerët më parë, dhe ju hyni në me tuaj username dhe password, dhe pastaj pas kësaj, për një numër nga minuta ose orë apo edhe ditë, server kujton se ju jeni, në fakt, i loguar. Tani, si është kjo në të vërtetë ndodh? Sepse ju jeni me siguri nuk retyping emrin e përdoruesit dhe fjalëkalimin çdo kohë ju lundruar në një faqe të ndryshme në Facebook. Pra, ajo rezulton Cookies janë përgjigje. Një cookie ju mund të mendoni si, lloj i pëlqen, një dorë dixhitale Vula që ju mund të merrni në një dëfrim park ose një klub që në thelb tregon se ju keni qenë këtu para, dhe ju keni tashmë treguar ID tuaj për mashtrues, për shkallës, dhe se klubi apo park tani duhet të supozojmë se ju kanë vërtetuar tashmë. Ju keni tashmë janë identifikuar nga ajo. Pra, me këtë në mendje, le të hapur kundër këtu. Më lejoni të shkoj përpara, unë vetëm e bëri, dhe të qartë të gjithë cookie-t e mia. Dhe tani ajo që unë jam duke shkuar për të bëni është të mbajë Shift, vetëm për masë të mirë, dhe forcë ringarkoni faqen. Shift vetëm sigurohuni se asgjë nuk merr kopje. Dhe këtu është kërkesa që u kthye dhe me radhë. Pra, këtu kemi një kërkesë, dhe le me zoom poshtë këtu, dhe një shumë kjo është detajet lloj jointeresant për tani se shfletuesi ka automatikisht dërguar, por le të klikoni View Burimi për të parë headers papërpunuara. Dhe në qoftë se ju keni fetar në pset6 tashmë, ju me siguri do të njohin gjërat si kjo, dhe ndoshta disa i këtyre linjave të tjera këtu, por ajo që është më interesante për sot në qoftë se unë lëvizni poshtë, jo kërkesës por për të ashtu-quajtur përgjigje, këtë linjë ndoshta duket e njohur. Kjo është një gjë e mirë kur ju shikoni një 200 OK. Me sa duket kjo është data dhe koha në server dhe ka një bandë e stuff. Oh, kjo është interesante. Rezulton se sa herë që ju përdorni PHP, të paktën në këtë server, server pështyn nga çfarë version i PHP që ju jeni duke përdorur. Të cilat, në fakt, për sigurinë qëllime, nuk është një gjë e mirë. Por, ne do të kthehemi në atë disa herë të tjera ndoshta. Por tani kjo është linjë lëng sot, dhe pamë shkurtimisht disa prej tyre, Unë mendoj se me Facebook kur ne poked rreth Inspektorit në atë kohë, vendosur cookie është ajo që mbjell që shumë pak pjesë e informacionit onto kompjuterin tuaj. Kjo është një HTTP header kjo është në mënyrë efektive thënë shfletuesin tuaj, Chrome, IE, çfarëdo, hey shfletues dyqan për përdoruesit e hard drive, ose në RAM të përdoruesit, a çelësi quajtur PHPSESSID, e cila eshte nje simbol stenografi për ID sesion, dhe t'i jepte një vlerë prej 0vlk8t, dot, dot, dot. Një pseudo vërtetë e gjatë string rastit alfanumerike. Kjo është vetëm një numër shumë i madh, por është e koduar me shkronja dhe numra kështu që madhësia e tij mund të jetë edhe më të mëdha se sa numra vetëm. Dhe pastaj, nga rruga, rruga = /, që thjesht do të thotë se kjo cookie duhet të jetë lidhur me tërësia e internetit, jo vetëm një të veçantë Faqja e gjithë gjë. Pra, kjo është se vula virtuale dora. Është sikur server, Facebook, ose në rastin tonë aplikim, ka 0vlk8t shkruar fjalë për fjalë dhe kështu me radhë, në dorën tuaj. Vini re se çfarë server-së, nuk bën është ajo e të mos ruajtjen emrin tim, me siguri Nuk ruajtjen fjalëkalimin tim. Në vend të kësaj, ajo duket të jetë e ruajtjen e informacionit pseudo të rastit në mënyrë që askush nuk mund të mendoj çfarë Vula ime ka. Në anën e serverit, Ndërkohë, server do të kujtohet, ndoshta në një bazë të dhënash apo diçka, se përdoruesi, i cili në të ardhmen paraqet një vulë të dorës së 0vlk8t, dot, dot, dot, duhet të shoqërohet me këtë veçanti cart shopping, kështu që të flasin. Me fjalë të tjera, në qoftë se unë tani të shkojnë përsëri këtu dhe rifreskoni këtë faqe, si nuk e dini server që kam vizituar një herë? Ose në qoftë se unë bëj atë përsëri, se si e bën këtë server e di që unë e kam vizituar atë dy herë? E pra, nëse unë shkoj poshtë në këtë Kërkesa më i fundit, i cili tani është i treti që kam dërguar në total, njoftim kërkesën time tani. Nuk është ende e kjo të kërkojë deri këtu, njëjtë si më parë, nuk ka ende një bandë e tërë e gjëra që ne kemi injoruar si më parë, por header shumë e fundit, ky kohë, sepse unë kam qenë këtu më parë, është një prezantim i kjo vulë dora virtual. Ku kjo linjë here jo, të vendosur cookie por cookie zorrës së trashë PHPSESSI = 0vlk8t, kjo është vetëm shfletuesin tim automatike Prezantimi i kësaj vule dorës në mënyrë që Tani server, sa më shpejt që ajo realizon, ooh, kjo është përdorues 0vlk8t dot, dot, dot, Unë tani mund të mbani mend atë që ai ose ajo është i dhe reassociate me atë përdorues çfarëdo Informacioni I dua të, dhe të gjithë se informacioni mund të ruhet nga ju, programues, në $ _SESSION. Pra, të jetë i qartë, në qoftë se unë i hapur deri të vërtetë i shpejtë në gedit se dosja aktuale, counter.php, në directory publikut tim të presë lokale si më parë, vini re se, me të vërtetë, Unë jam në fund të fundit ruajtjen në $ _SESSION Quote mbyll thonjëzat "kundër", vlera të numëruesit të mëparshëm cila I merrni nga këto linja këtu se ne shikuar në kohën e fundit plus një. Pra, nën kapuç, kjo është e gjitha cookies janë. Është vetëm lloj i digjitale Vula dora shkuar mbrapa dhe me radhë, dhe sinqerisht nëse keni hapur Chrome-së Inspektori në ndonjë faqe interneti ju vizitoni sot, me super probabilitet të lartë, ju jeni duke shkuar për të parë ndoshta një, ndoshta një gjysmë duzinë biskota u kujtua nga ju. Dhe më keq akoma, në qoftë se ato website ju jeni duke vizituar të gjithë kanë reklama, të cilat sigurisht që është krejt e zakonshme sot, dhe në qoftë se këto reklama janë duke ardhur nga disa partisë qendrore, dikush si Google apo AdWords si ata telefononi një prej produkteve të tyre ose shitësit të tjera të tilla që shes reklama, çfarë është interesante, dhe sinqerisht atë që është pak shqetësuese, se si HTTP punon, është se në qoftë se ju keni një ad ngulitur në Facebook.com, dhe Google.com, dhe Harvard.edu, çdo numër faqet e internetit, kështu që është e tillë se ka një njeri të mesme i cili është duke vuajtur up reklama për të gjitha tre prej këtyre faqet e internetit, rezulton se Cookies janë për domenin. Pra, nëse ju keni një ad që vijnë nga njëjta kompani në faqet e internetit të ndryshme, se kompania mund të pista në mënyrë efektive kush ju jeni nëpër të gjitha ato faqet e internetit. Harvard mund të mos e di ju jeni duke vizituar Facebook. Facebook mund të mos e dinë dhe ju jeni duke vizituar në Harvard. Por çfarëdo shërbimi ad ata janë duke përdorur, nëse kjo është e domain i pranishëm në të dy web Harvard.edu faqet dhe webpages Facebook.com, ky njeri e mesme me siguri e di se kush je për shkak se këto biskota duke u ndarë të gjithë, ose më mirë për të, se ashtu-quajtur ndërmjetës. Pra, ne do të kthehemi në këtë Implikimet e sigurisë tyre, por ka një shumë e informacionit që ruhet për ju në çdo kohë që ju vizitoni faqen më web në internet dhe me të vërtetë redukton në këtë mekanizëm shumë të thjeshtë. Çfarë ndodh, atëherë, në qoftë se ju jeni super paranojak dhe ju vendosni të shkoni në Chrome apo IE apo çfarëdo dhe të kthehet off cookie-t? Çfarë ndodh? Vërtet? Ju really-- keni bërë këtë të drejtë? OK. Jo, të shkojnë përpara. AUDIENCA: Disa faqet e internetit nuk kanë një funksion pa pëlqen Facebook. DAVID J. Malan: Po! Faqet e internetit në mënyrë të caktuara thjesht do të largohet nga puna. Dhe në shumicën e faqet e internetit këto ditë që rrënjësisht mbështeten në cookie-t, veçanërisht nëse ata kanë ju hyni në, ata janë vetëm duke shkuar për të thyer. Sepse e konsiderojnë alternative, në qoftë se internetit nuk ka asnjë mënyrë për të kujtohet se kush jeni, dhe për këtë arsye shfletuesi juaj web nuk është e përfaqësuar me çdo HTTP Kërkesa e kësaj vule dore, në mënyrë efektive një website si do Facebook të duhet të menjëhershëm ju për të hyni në çdo kohë e mallkuar të ndryshojë faqe, ose të klikoni një lidhje, e cila me siguri nuk është një përdorues veçanërisht i mirë përvoja. Kështu që atje, gjithashtu, është në mesin e humbura të tregtisë. Pra, pa zhurmë më tej, le të marrin për të dhënë se me programimin e web, në gjuhë si PHP, ju mund të mbani mend Informacioni kështu në problemin vendosur shtatë, kur ju të zbatojë tuaj Website E * Trade-si me të cilat për të blerë dhe shesin aksione, ju do të mbani mend saktësisht çfarë përdorues ka blerë dhe shitur dhe atë që ai ose ajo është i me anë të këtij sesioni. Por ne do të duhet të një mënyrë njohës se sa email për të filluar mbajtjen e informacionit rreth. E drejtë? Të hënën, kemi biseduar për Frosh IMs dhe si në versionin e një prej këtij website, vjet më parë, të gjithë ne e bëmë ishte email kujdestar i cili është në krye të sportit i brendshëm program, emri dhe gjinia, dhe nëse janë apo jo ata janë një kapiten, dhe fjetore e dikujt që është regjistrimit për një sport i brendshëm. Pra, kjo nuk është e keqe, por ai apo ajo, atëherë duhej të këndoj me email e tyre, të bëjë një spreadsheet apo diçka si që, për të mbajtur çdo gjë të organizuar. Pra, sigurisht ne si programuesit mund ta bëjë këtë për atë kujdestar. Dhe kështu të hyjë në SQL, Strukturuar Query Language, e cila do të duken bukur të ndryshme të dy C dhe PHP, dhe ju do të zhyten në diskutim shumë më tepër duart mbi PHP dhe problemi vendosur shtatë, por edhe SQL, ose SQL, kjo është një gjuhë që ju përdorni për të biseduar me një bazë të dhënash. Por ajo është një bazë të dhënash? Pra ju mendoni për një bazës së të dhënave, të paktën tani për tani, si vetëm duke qenë si një file Excel, ose në qoftë se ju jeni një përdorues Mac një numër i file, ose në qoftë se ju jeni një Google Apps Përdorues një spreadsheet Google, kjo është në mënyrë efektive një bazë të dhënash, apo me të vërtetë veçanërisht një bazë të dhënash relacionale. Një databazë relacionale është vetëm diçka që ka rreshtave dhe kolonave, dhe ju mund të ruajë çdo lloj Informacioni në këto rreshta ose kolona. Por ajo që është e bukur për të SQL, dhe në lidhje me bazat e të dhënave aktuale, jo vetëm spreadsheets ose spreadsheets Google, është se ju mund të përdorni një gjuhë në fakt ekzekutuar pyetje për futur të dhënat, për të hequr të dhënat, për të kërkuar të dhënat, edhe më e rëndësishmja, dhe ju nuk duhet ta përdorin atë në mënyrë të drejtë me dorë si ju mund në mënyrë tipike një Google spreadsheet si kjo. Pra në SQL, ka një bandë e Deklaratat apo copa themelore të funksionimit të ndërtuar në. Ka shumë më tepër se këto, por ju mund të shkoni në një distancë të madhe vetëm duke e ditur se kjo gjuhë e quajtur SQL ka së paku katër Deklaratat ju mund të levave. Fshij, për heqjen e të dhënave, Fut, për të shtuar rreshtave, Update, për ndryshimin e rreshtave, dhe zgjedhjen, për marrjen e mbrapa rreshtave dhe kjo është me të vërtetë ajo që SQL bën. Ajo operon plotësisht në rreshtat në mënyrë se kur ju futni ose hiqni, ose update, ose zgjidhni atë që ju jeni duke u kthyer si një të ashtu-quajtur vendosur rezultat, si një grup i rreshtave. Një bandë e rreshtave nga një tabelë. Pra, përsëri në ditë, dhe madje edhe sot e kësaj dite, ju mund të ndërveprojnë me bazës së të dhënave duke përdorur një command line, por kjo nuk është veçanërisht e fun për të përdorur kjo dritare e zezë dhe të bardhë stil dhe në fakt të ekzekutojë komandat dhe thes rreth bazës së të dhënave tuaja. Një user interface grafike, ose GUI, është shumë më e preferueshme, ndoshta, dhe kështu mjet që ne rekomandojmë dhe preinstalled për ju për aplikim quhet phpMyAdmin. Kjo është një rastësi totale që Emri i këtij gjë ka PHP në të, ai thjesht do të thotë se njerëzit i cili ka shkruar këtë program veten shkruar në PHP. Por kjo është në fund të fundit në lidhje me administrimin e një server bazës së të dhënave, si një server MySQL që ju mund të keni, si ju të bëjë, në aplikim CS50. Pra, nuk ka më shumë detaje se këtu ne kemi nevojë për t'u kujdesur për sot, por ajo që është kryesore është që në të majtë hand side është një listë e bazave të të dhënave që ju keni në kompjuterin tuaj, në pajisjen tuaj CS50, ose të vijnë projektet përfundimtare që ju mund të të ketë në një palë e tretë, një kompani e website ose web server, që ju mund të paguani për hapësirë. Pra, në të majtë është Bazat e të dhënave, njëra prej të cilave është pset7 që kam huazuar nga ardhshme javë pset, dhe pastaj në krye nuk ka njoftim se ka një bandë e skedave, njëra prej të cilave është e bazave të të dhënave, SQL, statusi, përdoruesve, eksportit dhe kështu me radhë. Kështu që ju mund të shkoni një kohë të gjatë Mënyra vetëm duke e kuptuar se shumica e ndërfaqen e përdoruesit është në kolonën e majtë dhe në të gjithë pjesën e sipërme të drejtë deri atje. Pra, çfarë mund të bëjë në fakt me këtë? E pra, le të fillojë krijimin e një bit e informacionit si më poshtë. Supozoni vijim është rasti, si do të jetë në vetëm pak ditë, ju doni për të zbatuar një website, i quajtur CS50 Financave, dhe kjo website ju lejon të blini japin kuotën e mbyll thonjëzat dhe shesin aksione. Dhe kjo do të gjej çmimi i këtyre rezervave, në fund të fundit si ju do të shihni, duke biseduar me Yahoo Finance. Të cilat, mrekullisht, ka një shërbim falas ku ju mund të kalojë në një lavjerrës aksioneve si GOOG për Google, dhe kjo do të ju jap te aksioneve aktual Google Çmimi në të kaluarën disa minuta të paktën. Kështu që ju do të përdorni këtë, në fund të fundit, të pretendojë për përdoruesit për të blerë dhe shitur aktuale rezervat duke përdorur të holla virtuale, por gjëja e parë përdoruesi do të shoh është kjo skena e hyrjes e cila kërkon që ata për emrin e përdoruesit dhe fjalëkalimin e tyre. Dhe kështu, një nga të parët Sfidat për ju në pset7 do të jetë për të zbatuar në fund mbrapa bazës së të dhënave, spreadsheet në qoftë se ju do, që do të ruajtur përdorues emrat dhe fjalëkalimet dhe në fund të fundit ajo që rezervat që ata vetë, dhe sa, dhe sa të holla sa ata kanë, kështu që një bandë e gjëra të tjera në tavolina të tjera, apo spreadsheets. Pra, le të marrin një sy se si kjo mund të duket në shikim të parë. Unë jam duke shkuar për të shkuar mbrapa në aplikim dhe unë jam do të shkojnë në këtë URL këtu phpMyAdmin localhost / phpMyAdmin dhe ju do të shihni se ajo merr mua për një ndërfaqe pikërisht siç e pamë në shtënë ekran, dhe këtu unë kanë një bazë të dhënash shtesë bëri thirrje leksion për sot dhe më lejoni të shkoj përpara parë dhe klikoni mbi pset7. I duket të ketë disa opsione, një për të reja, për të krijuar një tabelë të re, dhe një lidhje për përdoruesit, të cilat është një tabelë që unë tashmë e krijuar. Pra, çfarë është një tavolinë? Pra, nëse keni përdorur Excel para, dhe në qoftë se ju keni Numrat e përdorura ose Google Spreadsheets, keni hapur një dritare dhe ju merrni një bandë e tërë i rreshtave dhe kolonave, por pastaj ju zakonisht keni pune përgjatë fundit, ose të veçantë tabs. Ju mund të mendoj për secilin pune si një tryezë në mënyrë që të bazës së të dhënave, në fund të fundit, është një Kombinimi i një ose më shumë tabelave, një ose më shumë fletë pune, në Bota e një spreadsheet normale. Pra më lejoni të shkoj përpara dhe të klikoni mbi kete pune që unë premade, i quajtur përdoruesit, alias Tabela Database. Dhe në qoftë se unë lëvizni poshtë këtu, më lejoni të zoom out pak, kjo është ajo që është thënë phpMyAdmin na është brenda kësaj tabele tani. Kjo është pak konfuz në fillim shikim sepse UI nuk është gjëja prettiest në botë, por çfarë është interesante është kjo pjesë këtu. ID, emrin, dhe hash. Më parë, dhe ju do të jetë dorëzuar këtë problem të caktuar shtatë, ne ju jap një skedë që përmban një super tavolinë të vogël bazës së të dhënave, huazuar në të vërtetë nga edicioni i hacker Problemi i vendosur dy, brenda së cilës ekzistojnë gjashtë rreshta. Një për të gjithë e Belinda më poshtë për një për Zamyla, dhe vëreni në të majtë të atyre përdoruesve janë ID unike si një, dy, tre, katër, pesë, gjashtë, integers, dhe pastaj në të djathtë janë hashes. Dhe në qoftë se, shanset janë, ju nuk e bëni problemi edicionin e hacker vendosur dy, por një hash është vetëm si një koduar fjalëkalimi me një vërejtjesh pak. Dhe kështu, ajo që ju shihni këtu janë versionet enkriptuara të gjitha gjashtë fjalëkalimet tanë nga problemi vendosur edicionin Dy të hacker. Tani në të majtë është vetëm disa sende GUI, redaktimi këtë rresht, kopjimi këtë rresht, fshirjes këtë rresht. Por ajo që është interesante tani është në vijim. Unë në fakt mund të fillojë eksperimente me këtë tryezë. Pra, nëse unë shkoj dhe klikoni SQL tab, kam marrë këtë kuti të mëdha teksti. Dhe kjo nuk është mënyra se si ne jemi duke shkuar për të bëjë atë kur në fakt shkruar kodin. Për të qenë i qartë, phpMyAdmin është vetëm një mjet që është do të le të thes rreth në bazën e të dhënave dhe le të eksperimentojnë me pyetje. Kështu për shembull, mendoj I ekzekutuar pikërisht këtë. Select, e cila është një nga ato keywords unë përmenda më parë, yll, e cila përfaqëson të gjithë edhe kolona në një tabelë. Nga ajo tryezë? Well, përdoruesit. Dhe njoftimi ka kjo Konventa pazakontë në SQL ku ju përdorni të vërtetë mbrapa ticks, në mënyrë tipike, Kuotat e vetme nuk e citon jo dyfishtë Kur ju flisni për tavolina emra, kështu quote përsëri është gjëja më Dora e sipërm të majtë të tastierës tuaj më të mundshme. Pra më lejoni të shkoj përpara tani dhe vetëm lënë atë vetëm dhe lëvizni poshtë dhe klikoni Shko, dhe ne jemi në të vërtetë do të shohim të njëjtën gjë. Ne kemi ekzekutuar vetëm një SQL query duke thënë se yll zgjidhni gjithçka nga tabela e quajtur përdoruesit, dhe ajo që ju merrni mbrapa është kjo. Në fund të fundit, ne do të jetë në gjendje për të bëni që të njëjtën gjë në kodin, por tani për tani të gjitha unë të kërkuar për të nuk ishte e shohin atë në shfletuesin tim. E pra, le të bëjmë diçka pak më ndryshe. Më lejoni të kthehem në SQL tab, dhe le të them vetëm se çfarë? Zamyla ka humbur të gjitha të saj paratë, dhe për këtë arsye është e koha për ne për të fshirë atë si një përdorues. Ajo nuk është logging in. Kështu që unë jam duke shkuar për të thënë fshini from-- mirë, të ruajtur kapitalizimin për qëndrueshmëri, fshini nga përdoruesit e ku. Dhe kështu, ne mund të kemi këto Kallëzuesit, ose ato kualifikimeve, në fund të deklaratës sime ku dhe si mund ta fshini Zamyla? Me emrin Zamyla e saj, në mënyrë që kolonë, një prej kolonave u quajt, kështu që kur name = "Zamyla". Dhe këtu unë të përdorni të dyfishtë Kuotat ose Kuotat e vetme, ju përdorni vetëm mbrapa ticks kur duke folur në lidhje me emrat, për shembull, e tabelave ose fusha. Dhe më lejoni të klikoni Go këtu. Dhe tani, web faqja është duke qenë pak uptight. Ose, ju me të vërtetë doni për të ekzekutuar fshini nga përdoruesit ku emri i barabartë me Zamyla? Po. Deri tani, në qoftë se ne do të shkojmë përsëri në tryezën time nga përdoruesit klikuar, vëreni se HM. I goofed. Dhe në fakt, unë lloj i klikuar larg në mënyrë të shpejtë ju nuk e shihni edhe mesazh kuqe gabim, ndoshta. Çfarë ka të bëj keq? AUDIENCA: Ju nuk duhet për të përfituar emrin e saj. DAVID J. Malan: Yeah I kapitalizuar emrin e saj, por ajo username-- fakt I bërë një çift gabime, e drejtë? Një, emrin e saj është zamyla, Z Fjala, dhe emri kolona është emrin, jo emrin, kështu që le ta bëjmë këtë përsëri. Më lejoni të shkoj përpara dhe të fshini nga përdoruesit ku emrin e barabartë me kuotë mbyll thonjëzat "Zamyla". Të gjithë të drejtë? Pra, kjo duket pak më mirë, le të shkoj lëvizni poshtë dhe klikoni Go. Ajo ende do të bërtas në mua që të jetë i sigurt. I klikoni Po, dhe tani ne shohim, sinqerisht kjo ka ndodhur, me të vërtetë shpejtë pak se një, dyti sigurisht, kjo është pikërisht query që u ekzekutuar. Për të konfirmuar, më lejoni të klikoni përdoruesit dhe në të vërtetë tani Zamyla është zhdukur. Tani le të bëjnë të kundërtën. Supozoni se Gabe do të regjistrohen për faqen e internetit. Çfarë është SQL query, çfarë është Komanda unë mund të shkruani për të shtuar Gabe? E pra kjo është shumë e thjeshtë. Fut në përdoruesit, dhe tani ajo merr një pak i fshehtë. Unë kam nevojë për të specifikojë, në server, ajo fusha që unë dua të caktojë. Unë vërtetë nuk e kujdesit çfarë ID Gabe së numri është, kështu që unë jam duke shkuar për të kaloni atë. Unë jam në vend të kësaj do të thonë emrin, hash, dhe pastaj vlerat Unë dua të vënë atje do të jetë Gabe. Dhe pastaj hash e tij, unë nuk e di. Pra tani për tani, unë jam duke shkuar për lënë atë si një e madhe për të bërë. Ne do të kthehen në se problemi vendosur spekulim se si ju të bëjë në fakt atë. Pra njoftim, përsëri, sintaksë. Fut në emër tryezë, atëherë a Lista parenthesized e fushave, shtyllat që ju dëshironi të shtoni Vlerat për, dhe vetëm pastaj të njëjtë renditja e saktë e majta në të e drejta e vlerave që ju dëshironi të shtoni, dhe kjo është vetëm për shkak se ambalazhi teksti është pak e gjatë. Pra, tani më lejoni kliko Shko. Një rresht futur. Dhe tani, nëse unë kthehem në përdoruesit, çfarë është interesante është se jo vetëm që është Gabe tani në bazës së të dhënave, ajo që është me sa duket ID e tij? E pra kjo është shtatë. Pse është shtatë, kur unë nuk e shtoni atë? Pra kjo, gjithashtu, është një nga karakteristikat që ju të merrni të bazës së të dhënave. Një shumë e ndërtuar në funksionalitetin. Ajo rezulton se kur krijuar këtë tabelë, I preconfigured është automatikisht të caktojë një ID në një mënyrë të tillë që increments. Pra, nëse ju keni poked ndonjëherë rreth, dhe shikoi në Facebook ID çfarë tuaj numri është, këto ditë nuk është e vërtetë një gjë për të bërë, por Facebook si një API, Aplikimi Programming Interface, ku ju mund të merrni mbrapa një bandë e tërë e të dhënave në lidhje me veten, në lidhje me miqtë tuaj, dhe lidhjet tuaja. Dhe atë që përdoret për të jetë i sjellshëm i ftohtë, mbrapa në ditë, ishte që të shikoni se çfarë tuaj Facebook Numri ID ishte. Mark Zuckerberg-së, për shembull, është tre pasi ai ishte autori i faqes. Dhe, si historia shkon, ai krijoi Dy llogaritë e testimit, përdoruesit e një dhe dy, të cilën ai pastaj fshihet. Dhe kështu, Zuck, siç është emrin e tij në Facebook, është numri i ID tre, dhe të gjithë ne kemi një numër shumë më të më të mëdha se këto tre ditë. Në fakt, në disa pika Facebook lëvizur larg nga edhe duke përdorur një int, e cila është një vlerë 32-bit, të përdorur Hapi i ardhshëm up, në thelb një kohë të gjatë kështu që ata të mund të strehojë edhe më shumë përdorues të regjistrimit. Pra, një fakt fun pak historike. Pra, kjo është vetëm Sintaksa themelore me të cilat ne mund të ekzekutojë një çift të pyetje, por ne mund të vërtetë të bëjë një bandë më shumë gjëra me SQL. Dhe ju do të shihni, në fund të fundit, në problemin vendosur shtatë që ju keni për të bërë një Numri i vendimeve të projektimit, në mesin e tyre do të jetë çfarë lloje të dhënave për t'u përdorur. Pra, ashtu si në C, ka të dhëna lloje në një bazë të dhënash, si MySQL, dhe llojet e të dhënave që ju duhet të zgjidhni nga të përfshijë këto fusha këtu. Char, VARCHAR, Int, int madh, decimal dhe koha data, dhe shumë të tjerë. Pra, le të bëjë në fakt këtë. Le të pretendojë se nuk ka dora ju Tabela këtë anëtarit dhe më lejoni të shkoj përpara dhe për të krijuar, për të veten, në leksionet database-- në fakt më lejoni të shkoj përpara dhe të fshini tryezë kam këtu tashmë kështu që ne në fakt mund të krijojë këtë. Uh. Unë jam duke shkuar për të hequr këtë tavolinë, dhe tani unë jam i do të shkojë përsëri në leksion bazës së të dhënave gjatë këtu, Unë jam duke shkuar për të krijuar një tabelë quajtur përdoruesit dhe le vetëm të bëjë tre shtylla fillimisht dhe kliko Shko. Tani, për pjesën më të madhe, përsëri, kjo është vetëm duke përdorur këtë mjet grafike të quajtur phpMyAdmin, dhe çfarë jemi duke bërë tani jemi është krijuar një tryezë. Pra, kjo është si do dokumentit, New, dhe duke krijuar një skedë të re Excel. Pra, kjo është kërkuar më pak pyetje, nga e majta në të djathtë, çfarë është emri i kolonës së parë, dhe pastaj emri i kolonës së dytë, dhe emri i tretë. Pra, le të rikrijuar këtë. ID, dhe pastaj emrin ishte një, dhe pastaj të hash ishte një tjetër. Pra, çfarë duhet lloji të dhënave të jetë tani për një fushë si ID? Këtu është e gjithë lista e llojeve të të dhënave në dispozicion për ju në një bazë të dhënash, dhe tani për tani le të shkojë vetëm me int. Vlera e 32-bit, unë nuk bëj mendoj se realisht jam do të ketë më shumë se 4 miliardë Përdoruesit në llogarinë time, në shërbimin tim, kështu që unë jam duke shkuar për të mbajtur lëviz për në pyetjen tjetër. Unë nuk jam duke shkuar për të specifikojë një gjatësi ose vlerat, kjo nuk është e zbatueshme këtu për një int, në vetvete. Dhe tani unë mund të specifikojë, me sa duket, një default vlera, të cilën unë nuk jam duke shkuar për të specifikojë. Një krahasim, unë nuk e di se çka është. Një atribut. Tani ne fakt bëjmë kanë një vendim të projektimit. Pra, ka një disa fusha këtu, jo të gjitha të cilat janë të zbatueshme, por të panënshkruar thjesht do të thotë se çfarë? Se int duhet të jetë? Vetëm jo-negative. Pra, ajo duhet të jetë 0 në UP. Jo, unë nuk jam duke shkuar për të kontrolluar, sepse Unë dua çdo përdorues të ketë një ID, ajo nuk mund të jetë null. Dhe pastaj, ne kemi marrë për disa më shumë Vendimet interesante projektimit si kjo. Ne do të kthehen në këtë në një moment, por çfarë tjetër tipar i bazës së të dhënave është, është se ju mund të thoni server bazës së të dhënave të shkojnë përpara dhe jam optimist veten, tuaj RAM dhe hapësirë ​​tuaj hard disk, në mënyrë që të zgjedh dhe fut, dhe fshin, dhe përditësime janë me të vërtetë të shpejtë. Krahasojeni këtë me pset5. Nëse dëshironi të kërkoni diçka në tryezën tuaj të hash, të cilat ju mendoni si një bazë të dhënash, i cili kishte të bëjë të gjitha punë për të bërë tryezën tuaj hash shpejtë. Është si, natyrisht, ju. E drejtë? Ju kishte për të vënë në të gjithë kohë gjobë të tuning gjërat, duke marrë një funksion hash drejtë, duke parafytyruar se si shumë kova të ketë. Por ajo që është e bukur, përsëri, në lidhje me një bazë të dhënash është ju vetëm vë bast të gjithë kjo për njerëzit e tjerë të cilët e kanë menduar këtë përmes për ju, dhe çfarë Unë jam duke shkuar për të thënë këtu në Indeksi është se fushën time ID do të jetë rruga kryesore e identifikimin e përdoruesit në këtë bazë të dhënash. Unë nuk jam duke shkuar për të menduar i Zamyla si Zamyla, Unë jam duke shkuar për të menduar për e saj si numri 6. Pse është ajo, ndoshta, më të mirë intuitive të mendojmë për dhe modelit secili prej rreshtave tuaja individuale duke përdorur një numër në vend të diçka si një varg, si në Zamyla ose Gabe ose varg të gjatë akoma? Vërtet? AUDIENCA: Një ID është unike? DAVID J. Malan: Thuaj përsëri? AUDIENCA: Një ID është unike? DAVID J. Malan: Një ID është unik, por suppose-- si rasti në përgjithësi me përdoruesve, mendoj Unë gjithashtu tha se nuk mund të jetë vetëm një Zamyla në botë, dhe vetëm një Gabe. Unë mund të imponojnë unike detyrim mbi vargjet, edhe, nëse kam kërkuar. Pra, nuk është një mendim i keq. AUDIENCA: Më shumë të sigurt. DAVID J. Malan: Më shumë të sigurt, pse? AUDIENCA: Ju nuk mund të them që është cili, si në të përdoruesit. DAVID J. Malan: OK, ju Nuk mund të them që përdoruesit është e cila kështu ka a privacy aspekt të saj, sidomos nëse ID ndoshta shfaqen në URL. Aq i sigurt, se mund të lloj pune, too. Mendimet e tjera? Vërtet? AUDIENCA: Është më e lehtë për të kryejnë operacione në një int. DAVID J. Malan: Kjo është rreng vërtetë. Është vetëm më efikase, apo më e lehtë për kompjuter, për të kryer operacione në një numër të plotë. E drejtë? Një int është e garantuar për të jetë 32-bit, ndërsa Zamyla është një karaktere pak kohë, Gabriel është pak më e karaktere të gjatë, Davenport është me të vërtetë e gjatë, dhe kështu që është jo veçanërisht efikas për t'u përdorur strings për të krahasuar vlerat dhe të shohim për fushat, dhe fushat për përditësim, në qoftë se ju mund të merrni larg me vetëm një numër të plotë. Vetëm 32 bit. Pra përdoruesve, gjithashtu, në këtë mënyrë, nuk duhet të jetë unike, edhe pse ata ndoshta duhet të jetë, dhe madje edhe në këtë mënyrë shumë një përdorues mund të lejohen të të ndryshojë emrin e tij ose të saj. Pra, tani le të lënë këtë si Mjetet kryesore të identifikimit të përdoruesit. Kjo është thënë në bazën e të dhënave të shkojnë përpara dhe jam optimist veten kështu që duken ups për ID janë super të shpejtë. AI, i quajtur tmerrshëm, vetëm thotë Auto rritje, dhe kjo është çek kuti ne kemi nevojë për të kontrolluar të specifikojë se fushën ID të të rifreskohet automatikisht për mua, dhe atëherë unë jam duke shkuar për shkoni në të djathtë këtu dhe sinqerisht unë nuk jam i interesuar me të vërtetë në çdo më shumë nga këto fusha. Sigurisht jo sot. Kështu që unë jam duke shkuar për të shkuar mbrapa këtu, në kolonën e parë, ku Unë kam nevojë për të specifikoni emrin e përdoruesit dhe hash, dhe le në fokus paktën në e dyta për tani. Int ndoshta nuk është thirrja e drejtë, kështu që ajo që e bën më shumë kuptim ndoshta? AUDIENCA: Text. DAVID J. Malan: Thuaj përsëri? AUDIENCA: Text. DAVID J. Malan: Text? OK, kam dëgjuar tekst. Çfarë tjetër? Ne lloj i kemi një bandë e zgjedhjeve që janë tekstuale në natyrë. Pra, kur, dhe pse, të bëjë ju përdorni disa nga këto? E pra char, në kundërshtim me atë që ju mund të mendoj se, nuk është një karakter të vetëm. Kjo është një numër specifik i karaktereve. Pra, në qoftë se ne e dimë se të gjitha emrat e përdoruesve duhet të jetë si tetë karaktere, që përdoret për të jetë e zakonshme në të vjetër sistemet kompjuterike, unë mund të them char dhe pastaj unë mund të them 8 here. Kjo është kur kolona e tretë bëhet zbatueshme kur të krijuar një tabelë. Por kjo është lloj i bezdisshëm për shkak se disa njerëz mund duan të kenë një emër përdoruesi më të gjatë se tetë karaktere, disa njerëz mund të dëshirojnë të kanë një emër përdoruesi të shkurtër, kështu që pse të angazhohen veten në një numër të caktuar? Pse nuk kanë një variabël Numri i gërma dhe vetëm thonë se gjatësia maksimale e emrit është, unë nuk e di, si 64 karaktere. Unë nuk mund të mendoj për ndonjë miq të cilët kanë emrat e më shumë se 64 karaktere, dhe madje edhe në qoftë se kjo është shumë e shkurtër që ju mund të sigurisht përplasem atë në mënyrë arbitrare. Pra VARCHAR është një ndryshore Numri i gërma. Teksti nuk është një instinkt i keq, dhe sinqerisht se lloj bën atë që thotë, por një fushë teksti mund të jetë si 65.000 bytes paktën. Kjo është ndoshta overkill për a fushë, dhe në fakt, Yup, 65.535. Kjo është ndoshta overkill për a emrin, kështu që ne do të rrinë, në mënyrë tipike, me varchars për tekstuale fushë dhe të hash, too. Hash, ajo rezulton, ne mund të bëjmë një VARCHAR, si edhe apo diçka si kjo, por ne nuk do të përqëndrohet sot në cryptography atje dhe numrat që ne mund të vërtetë dëshironi të përdorni për gjatësinë e saj. Por më lejoni të lëvizni poshtë në të djathtë. Ju mund të keni vetëm një Indeksi kryesor për një tryezë, por unë dua të aplikoni ndonjë nga këto, tani, për emrin, do të thoni? Çfarë duhet shrytëzuesin të bazohet në një paqartë të kuptuarit e këtyre katër opsione? Vetëm nga emrat e tyre? AUDIENCA: Unique. DAVID J. Malan: Pra unike, e drejtë? Pra, rezulton se jo vetëm që mund të ju tregoni një bazë të dhënash, paraprakisht, kjo është mënyra kryesore të identifikuar fushat. Ju gjithashtu mund të thonë se kjo është e do të jetë një fushë të veçantë. Kjo nuk do të jetë gjë që unë të mbështetet në, por unë do të doja të bazës së të dhënave për në thelb kanë se nëse gjendja, kështu se në qoftë se kam provuar ndonjëherë për të regjistruar dy përdoruesve me të njëjtin emër, bazës së të dhënave banesë nuk do të më lejoni. Unë mund të ketë një kod shtesë në PHP që pengon aq shumë, por baza e të dhënave, gjithashtu, mund të sigurojnë se kjo nuk do të ndodhë. Tani, si një mënjanë, sidomos si mendoni në lidhje me projektet e fundit, Mbani në mend indeksin atë dhe të plotë Teksti në të vërtetë janë mjaft të dobishme. Nëse ju keni një bazë të dhënash të madhe, jo me dhjetëra, por me qindra ose mijëra apo edhe miliona e fushave, ju mund të Gjithashtu tregoni bazën e të dhënave paraprakisht kjo është një fushë që unë jam duke shkuar të jetë në kërkim në një shumë. Ndoshta emrin e tij, ndoshta kjo është bio, nëse ju jeni bërë një Facebook-si faqe interneti që ka paragrafë që përdoruesit e lejuara për të shpëtuar, dhe në qoftë se ju doni të tregoni bazën e të dhënave paraprakisht Unë jam duke shkuar të jetë në kërkim në këtë fushë shumë, por kjo nuk është domosdoshmërisht unike, ju mund të specifikoni krijoni mua një indeks. Ose, ju mund të thoni të më lejoni të bëj lloj i kërkimeve arbitrare si Komandën ose Kontrollit F, si ju mund në një përpunues teksti, kështu që ju mund të shikoni strings arbitrare ose nënvargjet në këtë fushë. Me fjalë të tjera, ne jemi duke marrë për pikë në semestrin ku ju nuk keni për t'u shqetësuar në lidhje me se si të zbatojë gjërat në mënyrë efikase. Ju vetëm duhet të dini se çfarë Vendimet e projektimit për të bërë në mënyrë që ju të jeni të duke përdorur mjetet e duhura për të tregtisë në mënyrë që të levave karakteristika që njerëzit e tjerë e kanë ndërtuar për ju. Pra, për radhitje, primar duhet vetëm kanë një, ju mund të ketë vetëm një të tillë, dhe kjo është gjë që ju jeni të kryer për duke përdorur për të identifikuar fushat unike. Unique është vetëm ngjashëm në shpirt, por ju mund vetëm herë pas here e përdorin atë, por ju doni bazës së të dhënave për të imponuar atë. Indeksi thjesht do të thotë preemptively shpejtojë gjërat në të ardhmen në mënyrë që unë mund të kërkoni për gjërat në këtë fushë. Dhe pastaj teksti i plotë është në përgjithësi për paragrafët, apo ese, apo organe të mëdha e tekstit, ku ju gjithashtu mund të duan të kenë Kartat egra si ekuivalentin e yllit. Të drejtë. Kështu që ishte lloj i shumë për të gjithë në të njëjtën kohë. Le të shohim nëse ne nuk mund të nxjerrim një çift nga këto karakteristika dhe pastaj të ndërtuar diçka mjaft e thjeshtë, por të fuqishme. Pra, ndër të tjera Vendimet e projektimit që ju jeni në fund të fundit do të ketë është së bashku linjat e motorëve magazinimit. Dhe më lejoni të përmend këtë në pritje të projekteve përfundimtare, dhe pritje të le të say-- nuk le ta bëjmë këtë. Le të ndërtojmë kjo pak aplikimit të parë. Unë jam duke shkuar për të shkuar në terminalin e mia dritare, dhe në këtu nuk është vetëm counter.php, të cilat ne jemi tani duke shkuar për të hequr qafe sa më i përshtatshëm, por ne kemi një bandë e tërë e drejtorive dhe këtë do të jetë shumë e ngjashme në shpirt me atë që ju do të shihni në problemin vendosur shtatë. Pra, ne kemi tre drejtoritë përfshin publike dhe templates, të cilat është pikërisht aty ku ne e kemi lënë jashtë në Të hënën me gjithë paradigmën tonë MVC. Dhe, për radhitje, në publik do të shkojë çdo skedar që unë dua përdoruesit të vërtetë v jetë në gjendje për të vizituar në shfletuesin e tyre nëpërmjet URL. Template. Çfarë kemi vënë në templates? Çfarë lloj gjëra? Nuk ishte shumë, por një çift Fotografi të paktën të hënën. Po. AUDIENCA: Header dhe Footer? DAVID J. Malan: Header dhe Footer. Pra, ne kemi diçka të ngjashme sot, too. Ne kemi marrë disa fotografi më shumë, por Footer I shoh, Header unë shoh, dhe pastaj një bandë e dosjeve të tjera. Pra, kjo është ekuivalente nga pikëpamja V MVC, e cila, përsëri, do të jetë pak më shumë qartë në problemin vendosur shtatë, por kjo është vetëm një dosje që unë jam vënë një shumë prej estetikë e mia. Një shumë e HTML tim, një shumë të formave të mia. Ndërkohë, përfshin, është një tjetër Lista që ka këto tri fotografi dhe le të marrin një vështrim të shpejtë në këto. Unë jam duke shkuar për të shkuar përpara dhe të hapur config.php. Siç rezulton, shumë si më parë në afat, keni përfshirë të mprehtë CS50 dot h me pset7. Në shembullin e sotme, ju do të jeni për të bërë ekuivalentin e që me një deklaratë të kërkojë që në mënyrë efektive përfshin këto disa rreshta. Pra, të jetë i qartë, kjo është një skedar të quajtur config.php. Dhe vini re se çfarë është bërë. Kjo me sa duket është duke bërë diçka fshehta, kthyer në mesazhet e gabimit kështu që ju mund të shihni ato në shfletuesin. Është, pra, me sa duket kërkon dy fotografi të tjera kështu që kjo është si #include në C, dhe pastaj kjo ne e shohim, dhe ne kemi mbështetur në, kjo kthehet në se cart shopping si funksionalitetin. Kjo do të thotë një vullnet cookie të dërgohet mbrapa dhe me radhë. Pra, pse është kjo interesante? E pra, në qoftë se ne të kthehemi në këtë Lista e hapur, për shembull, constance.php. Vini re se PHP bën konstantat mbështetëse, kjo nuk është fare si #define në C. Në vend të kësaj, ju fjalë për fjalë thonë definuar, dhe njoftim që unë kam ruajtur më parë katër konstantet në këtë skedë. Një për bazën e të dhënave e sotme, për fjalëkalimi im, për emrin tim, dhe për emrin e serverit. Pra, këto janë në të vërtetë do të jetë e mjaft të ngjashme në problemin vendosur shtatë. Dhe së fundi, dhe ky është vendi ku unë jam do të merrni disa funksionalitetin e bukur nga stafi, në functions.php është një bandë e kodit që kam shkruar, dhe I vodhi disa prej kësaj nga problemi vendosur shtatë për sot, se ka një bandë e gjëra dhe le të shikojmë vetëm në një prej tyre në veçanti. Ky funksion këtu, pyetje, do të jetë Funksioni PHP që ne e quajmë në mënyrë që të ekzekutuar SQL. Një moment më parë, ne ishim duke përdorur phpMyAdmin, por kjo është vetëm për lloj të qëllimeve të mësimit dhe qëllime diagnostike dhe harruar vendosur tuaj bazës së të dhënave. Kur ju përdorni të vërtetë tuaj bazës së të dhënave, ju, njeriut, natyrisht që nuk do për t'u tërhequr një web faqe çdo herë që dikush regjistrat. Ju jeni duke shkuar për të shkruar kodin që fut dhe fshin përdoruesit të kërkesës, dhe ne jemi duke shkuar për të bërë këtë nga rruga e funksionit pyetje. Nëse unë tani lëviz poshtë, nuk ka do të jetë një pak më të features. Redirect do të të jetë një funksion që shkruante për ju që ju lejon të dërgojnë përdoruesit në një tjetër URL, dhe bëjnë është një funksion, krejt si pamë të hënën, që në fakt bën një template, por më shumë në këto në Forma e ecin vetë pset7 përmes. Tani për tani, le të shkojnë përpara dhe të bëjë këtë. Më lejoni të shkoj në tryezën ligjëratat e mia dhe të shihni se nuk ka asgjë për momentin këtu vetëm ende, dhe më lejoni të shkoj në directory time publike, ku ka vetëm një fotografi, index.php. Kjo skedë duket të jetë super e thjeshtë në këtë moment, kjo duket vetëm si kjo. Shumë si se si ne la off hënën. Unë jam duke kërkuar këtë fotografi, config.php, e cila është në një directory përfshin, e cila është në dot dot, prindërit e mi, dhe pastaj ajo është vetëm pasqyrim këtë fotografi. Pra, çfarë është kjo fotografi? Le të hapet deri në templates mia form.php, dhe ne do të shohim këtë. Super të thjeshtë, me sa duket kjo formë është do ta paraqesë me një $ _GET ose $ _POST. Quick kontrolloni mendje e shëndoshë. Fjalë për fjalë vizualisht kërko file. Metoda e barabartë me shtyllën. Pra, kjo nuk do të përdorin URL, si Google e bën, ajo do të zgjidhë të fshehur Informacioni prapa skenat dhe kjo është do të dorëzojë një file i quajtur register.php, dhe kjo është fotografi ne nuk e kemi shkruar ende por atë që kjo po ndodh për të parë si është kjo. Nëse unë shkoj në një faqe të veçantë Kjo është çfarë localhost / index.php duket si. Dhe përsëri, server-së vetëm duke supozuar index.php. Enter. Pra, kjo është ajo ku ne jemi në, dhe atë që unë dua të bëj po të jetë në gjendje të shkruani gjëra si Davidi, dhe pastaj numri im i telefonit, i cili do të thonë 617-555-1212 tani për tani, regjistrohen dhe tani register.php nuk u gjet. Kështu që kam nevojë për të zbatuar këtë. Pra, le të shpejt rrëmbej diçka si kjo lart. Më lejoni të shkoj në directory time publik dhe të bëjë gedit të register.php, dhe tani unë jam duke shkuar për të shkuar përpara dhe të fillojë mënyrën PHP, ashtu si ne e bëmë të hënën, dhe tag afërmi PHP, dhe le të bëjmë disa gjëra. Pra, një, unë e di, nga ka shkruar atë formë, që unë dua të shikoni për në vijim. Në qoftë se kjo është e zbrazët, çfarëdo përdoruesi shtypur në të fushën e emrit, atëherë Unë jam duke shkuar për të thënë diçka si kërkoj falje emrin humbur. Kërkoj falje, ndërkohë, është jo një ndërtuar në PHP gjë, kjo është një funksion i kemi shkruar në functions.php për pset7 në mënyrë që ju të keni qasje në të. Tjetër në qoftë se fusha të tjera është e zbrazët, numri, atëherë unë jam i do të kërkoj falje për përdorues dhe thonë numrin e të humbur. Ruaj këtë fotografi. Tani le të kthehemi në shfletuesin tim, kthehemi në forum provoni përsëri. Regjistrohu. OK. Asgjë nuk ka ndodhur, e cila është e mirë. Unë nuk e kam marrë një mesazh gabimi. Por në qoftë se në vend të kësaj, le të ringarkoni këtë faqe, dhe nuk ofron asgjë. Damn atë. Bëni këtë. Regjistrohu. Çfarë ka të bëj keq? Po të jetë bosh, emri $ _POST. Thuaj përsëri? Oh, sigurisht. Kam harruar pjesën më të rëndësishme, e cila është të kërkojë ("../ përfshin / config.php."). Unë kam nevojë që të kenë qasje në kërkoj falje funksion, i cili është arsyeja pse asgjë nuk po ndodhte. Funksioni nuk ka të vërtetë ekziston. Pra, le të provoni këtë përsëri. Le të rifreskoni faqen, klikoni Regjistrohu. OK. Nuk është. Pra, prodhimi ne jemi shohim këtu është rezultati e duke e quajtur një të kërkuar falje funksion, super të thjeshtë, dhe vetëm ajo printon nga çfarëdo I jap atë si një argument. Të gjitha të drejtat, kështu që le të bashkëpunojnë. Le të japë emrin tim si Davidi, regjistrohen, mungon numri OK le të të sigurojë që, too. 617-555-1212. Regjistrohu. OK. Pra, të gjithë është mirë tani, vetëm asgjë interesante po ndodh. Pra, tani le të bëjmë diçka më shumë interesante të ndodhë si kjo. Më lejoni të shkoj në phpMyAdmin, dhe le në fakt krijojnë një tabelë të quajtur përdoruesit, Unë jam duke shkuar për të dhënë atë tre kolona, ​​dhe unë do të shpejt krijuar ID, dhe pastaj emrin, dhe pastaj numri, dhe fusha ID jam do të largohet si një int. Emri Fusha unë jam duke shkuar për të lënë si një VARCHAR, dhe ne do të themi 64, disi në mënyrë arbitrare. Numri Unë jam duke shkuar për të bërë, ju e dini se çfarë? Ne jemi duke shkuar në mbështetur numra SHBA këtu, kështu që unë jam duke shkuar për të bërë diçka si shkrumb dhe pastaj 10 karaktere max për një kod zonë dhe pastaj shtatë shifra. Dhe pastaj këtu, unë jam duke shkuar për specifikoni rritje të auto këtë fushë, e bëjnë këtë një kyç primar, dhe Unë jam duke shkuar për të shkuar përpara dhe të mos shikoni ndonjë prej këtyre kutive të tjera. Pra, kur Unë tani më në fund klikoni Save, dhe unë kthehem në tryezën përdoruesit time, kjo është ajo që duket si në qoftë se unë Tani klikoni një strukturë New Tab. Pra, kjo, që të jetë i qartë, është vetëm mënyrë phpMyAdmin së të thënë tryezën tuaj bazës së të dhënave ka një ID, një emër dhe një numër me këto konfigurime të veçanta dhe ne do të injorojë pjesën tjetër e fushave atje tani për tani. Deri tani ajo që dua të bëj? Pra, nëse unë shkoj tani në tim kodin burim, nëse të gjithë është i mirë Unë dua të ekzekutuar pyetjen e mëposhtme. Fut në, dhe unë mund vetëm thonë se përdoruesit Unë nuk e bëjnë në mënyrë rigoroze kanë nevojë për ato përsëri ticks nëse është e nuk është një fjalë e rrezikshme si përdoruesit. Unë jam duke shkuar për të thënë emrin, numrin, dhe pastaj këtu unë jam nuk do të kodit vështirë shifror i vlerave ende. Unë jam duke shkuar për të vënë dy pikëpyetje. Dhe kjo është një konventë në shumë gjuhë ku në qoftë se ju dëshironi të keni një placeholder për një varg ju jeni do të përdorin pyetjen shënon, për arsye ne do të kthehen për të biseduar në lidhje me sigurisë, dhe këtu Unë jam duke shkuar për të kaluar në ato Dy fusha të postoni emrin, dhe pastaj pas numri, dhe tani ruajtur kartelën. Dhe tani unë jam duke shkuar për shkojnë poshtë këtu është një super thjesht të thonë rendersuccess.php, e cila do të jetë një tjetër template. Unë jam duke shkuar për të krijuar me të vërtetë të shpejtë. Geditsuccess.php dhe unë jam vetëm duke shkuar do të thotë sukses H1 në atë dosje. Dakord. Deri tani, le të kthehemi në shfletuesi, ku kam vizituar më parë. Le të shkojnë përpara dhe të konfirmojë kam shkruar Davidin, kam shkruar në një numër telefoni, regjistroheni. Damn atë. Çfarë ka të bëj keq? Kështu që unë jam duke parë një gabim këtu, ju kanë një gabim në sintaksë SQL tuaj. Më lejoni të hidhen përsëri në gedit, le mua të kthehem në register.php, dhe atë që nuk kam heq se Ishte e rëndësishme për herë të fundit? Unë kam nevojë për këtë. Ju dëshironi të dini se përveç nga të paturit e vënë re më parë, por kam nevojë për këtë. Pra, tani le të kthehemi, dhe kjo ishte e dobishme për të parë në shfletuesin dhe kjo është arsyeja pse në config.php ne kemi nxjerr nga goja gabime. Le të shkojnë përpara dhe të ringarkoni, kliko Vazhdo, sukses. Deri tani më lejoni të shkoj mbi tim bazës së të dhënave këtu dhe klikoni mbi Përdoruesit, dhe të kërkoni, dhe vini re unë tani kanë Davidin në database e mia këtu. Tani teknikisht ky website është ende nuk në internet publik, kështu që unë nuk mund të ketë të tjera persona në vënien këtu, por në qoftë se unë tani kërkuar për të, për shkallës, dërgoni vetes një mesazh shkrimor. Le të dalë në një gjymtyrë këtu dhe të shohim nëse kjo në të vërtetë punon. Unë jam duke shkuar për të shkuar përpara dhe fshini këtë rresht dhe ne do të turbullira këtë në video më vonë kështu që ne nuk kemi Gjithë internet texting mua, dhe ne tani do të shkojnë deri në shfletues dhe ne do të shkojmë drejt leksion dhe ne do të shkruani në të ndryshme Numri i këtu, regjistrohen, sukses. Deri tani, numri im është me sa duket në bazës së të dhënave, dhe tani pjesa fun. Le fakt përdorin PHP për të bërë diçka programuar, ose nga komanda line ose nga diku tjetër, dhe tani për tani unë jam vetëm do ta mbani atë të thjeshtë dhe unë jam duke shkuar për të shkuar në tim Lista këtu dhe të bëjë të mëposhtme. Gedit script le të themi, ne do të e quajnë atë tekst, #! / user / bin / env PHP, ashtu siç e pamë herën e fundit. PHP. Tani unë jam duke shkuar për të kanë nevojë për përfshin config.php, edhe pse këtë fuqi sjell një gabim të vogël. Dhe tani unë jam duke shkuar për të shkuar përpara dhe të thonë rreshtave, query, zgjidhni yll nga përdoruesit, dhe tani këtu unë jam duke shkuar për të bërë një teknikë nga hera e fundit për çdo radhë, si rresht. Dhe unë jam duke shkuar për të bërë diçka të thjeshtë. Printf le të thonë se emri është ky, dhe numri është kjo, backslash n. Dhe tani unë jam duke shkuar për të kaluar në radhën të japin kuotën e emrit siç janë quajtur, dhe numri rresht quote mbyll thonjëzat, dhe tani le të shkojë përpara dhe dritare time terminal chmod a + x kjo për të bërë ky dorëshkrim i quajtur ekzekutues tekst. Dhe tani le të kandidojë tekst. OK, kështu progresit. A kështu që unë kam shkruar tani command line script, në një gjuhë të quajtur PHP, se, për shkak të kësaj kërkojnë linjë, ka qasje për të gjithë ata të konfigurimit konstantet që unë të specifikuara. Emri i bazës së të dhënave dhe kështu me radhë. Në fakt, vetëm që të jetë i qartë që kjo nuk është një kundërmajë, më lejoni të shkoj përpara dhe të regjistrohen, të vërtetë të shpejtë, dikush tjetër si Rob dhe do t'i japë atij numrin 555-1212. Dhe tani, në qoftë se unë të drejtuar script përsëri, njoftim pushtetin e asaj që ne jemi duke bërë me bazën e të dhënave. Tani unë kam parë menjëherë se çfarë dy rreshta të tjerë janë në bazën e të dhënave tim. Pra, tani le të përpiqemi të bëjmë diçka edhe njohës brenda, dhe kjo është pjesa që ne kemi nuk është testuar më parë, kështu hera e fundit që unë e bëri këtë gjërat shkuan tmerrësisht shtrembër, ne kemi videon për këtë qëllim. Në fakt, vërtet, funny mënjanë. Pra, në kohën e fundit, në një leksion si dy vjet më parë, ne kemi vendosur, kam vendosur, që të jetë e gjithë kjo do të jetë një ide e madhe të dinamike gjeneruar email në të klasës, duke përdorur tërë CS50 bazës së të dhënave Studentët, të cilët na kishin dhënë numrin e tyre dhe transportuesit e tyre Cellphone e cila ju mund të kujtojnë nga pset0, si për arsye, del Unë kisha një bug të vogël në programin tim dhe bëri një çift gabime në vitin 2012, unë mendoj. Ku, e kam pasur për lak që e bëri pikërisht këtë lloj gjë, iterating mbi bazën e të dhënave, duke marrë një emër nga baza e të dhënave, emrin nga baza e të dhënave, dhe pastaj në çdo përsëritje e asaj lak kam dërguar një email. Por në vend të dërguar një email, unë dërguar një email përsëritje të parë, dhe dy email një përsëritje të dytë, dërguar Tre email një përsëritje të dytë, e cila si ju mund të kujtohet nga tonë Diskutimi i simbol asymptotic kjo O e madhe e keqe, si n katror është se sa mesazhe I dërguar, por kjo nuk ishte edhe e-mail ajo ishte mesazhet me tekst. Dhe, siç e dini, pjesëmarrja nuk është super të lartë drejt përfundimit të semestrit dhe kështu që unë mendova se do të jetë e bukur në koha për të thënë: "Pse nuk jeni të klasës?" Në tekstin e mesazhit I dërguar për të gjithë klasën, dhe kjo ishte funny të pëlqen 50% të të klasës, por 50% tjetër, disa prej të cilëve freaked, i dërgoi tepër Shënime apologjetike ëmbël të stafit të kërkuar falje për ka humbur leksion vetëm këtë herë, e drejtë? Kështu që do të tmerrshëm shtrembër. Pra, në këtë frymë, le të provoni këtë përsëri, por vetëm me numrin tim. Më parë, në functions.php, Unë kam shkruar këtë funksion këtu. Ajo që quhet tekst, dhe kjo merr në tre argumente. Një numër, një zgarë, dhe një mesazh. Unë jam duke përdorur një deklaratë switch, i cili mrekullisht PHP marrë vargjet, jo vetëm integers, dhe unë nuk e ka zbatuar të gjitha mbështetje për këtë akoma, Unë e kam bërë vetëm AT & T dhe Verizon. Për shkak se ajo del se me këto transportuesit ata kanë email tek porta SMS, ku ju mund të vërtetë dërgoni një email në një adresë si numrin e telefonit në vtext.com dhe në qoftë se përdoruesi nuk e ka bllokuar mesazhet, ajo do të shkojë deri është një mesazh tekst. Tani për të bërë këtë, unë jam i do të ketë për të shtuar një fushë të vërtetë të shpejtë të bazës së të dhënave tim. Unë jam duke shkuar për të shkuar në Struktura e mia, dhe unë jam i do të shkojnë përpara dhe për të shtuar një fushë në fund të tabelës. Le kliko të shkojnë, dhe unë jam i do të thërrasë këtë zgarë dhe tani për tani unë jam duke shkuar për lënë këtë si një tekst bar, por ne mund të jetë njohës në të ardhmen. Unë jam duke shkuar për të shkuar shpejt në tryezën time, dhe unë jam i do të të shpëtoj nga Rob, sepse kjo është një numër të rreme, Unë jam duke shkuar për të shkuar në edit këtu dhe unë jam do të ndryshojë kompaninë time me dorë të jetë i Verizon, i cili atë është, dhe tani këtu. Le të bëjë një kontroll të shpejtë mendje e shëndoshë. Le të hapë shkrimit tonë tekst, i cili duket si kjo, transportuesi është% s. Ne jemi duke bërë një gabim shumë më shumë duke kontrolluar se sa kam bërë në vitin 2012, zgarë. Dhe tani, unë jam duke shkuar për të shkuar përpara dhe ri-drejtuar script. OK. Carrier është Verizon, që do të thotë Tani shpresojmë se unë mund ta bëjë këtë vetëm. Korrekt këtë vit, shpresë, këtu ne do të shkojmë. Pra, brenda kësaj për lak, unë jam do të ketë jo vetëm këtë printf, Unë jam gjithashtu do të thërrasë tekstin dhe përdorimi i këtij kujtojnë funksionit ishte ajo merr një numër, një zgarë, dhe një mesazh. Pra, le të shohim, numri do të të jetë rresht kuotë siç janë quajtur "numri" rresht quote "bartës", mbyll thonjëzat dhe e fundit ishte mesazhi. A nuk vidhos deri këtë vit, pikëpresje. OK. Gishtat e kaluar. Le të shohim nëse kjo funksionon. Të gjithë të drejtë, kështu. Këtu ne do të shkojmë. Le të shkyçur telefonin, kalojnë gishtat, mallkuar atë. May-- Undefined variable oh prisni, prisni, prisni, të vërtetë të shpejtë. Real shpejtë, të vërtetë të shpejtë. Kjo është krejtësisht e vlefshme. Më lejoni të rrëmbyer, më lejoni të rrëmbyer, uh-oh. Faleminderit, tekstet kanë filluar nga dikush tjetër. Më lejoni të shkoj përpara dhe të hapur të patundshme të shpejtë, dropbox.php / postë këtu. Koha e pritjes. Krejtësisht ia vlen. Shkarkime. OK, src8m burimi. OK. Nevojë për një linjë më shumë këtu. Oh nuk është, ajo është në Frosh IMs, është në regjistrin në tre. Oh hello, Margo, thank you very much. OK, dhe unë ishte zhdukur këtë linjë këtu. Pra më lejoni të shpejt kap kjo linjë të kodit, e cila përfshin mail ose bibliotekën se unë në fakt duan të përdorin, Unë jam duke shkuar për të shpejt kthehemi në funksionet, Unë jam duke shkuar për të shkuar në krye të kësaj paraqesë dhe të kërkojë këtë foto si edhe, dhe tani unë jam duke shkuar për të vërtetë të kalojnë tim gishtat kur të shkoj përsëri në komandën Linja shkrimit, e cila është brenda Lista lokale host sotme. Teksti Run. Enter. Mail. Koha e pritjes. Koha e pritjes. Mail. Oh, OK. Këtu ne do të shkojmë. Mail merr postues ri PHP. A ta bëj unë këtë të drejtë? Damn atë. To-- oh, prisni, prisni, prisni. Sehir. Unë premtoj, kjo është do të jetë aq e vlefshme. Adresa. Kjo është arsyeja pse unë nuk e bëjnë Shembuj të drejtë para klasës. Ugh. Përfituesit e mëposhtme dështuar. Le të provoni një gjë të fundit. SMTP vendosur nga, shtoni adresa, adresa është me të vërtetë atë. Le të provoni këtë pjesë të fundit në adresë. Aw, Unë jam me të vërtetë i trishtuar tani. Falemnderit. Por unë me të vërtetë e vlerësojmë të gjithë tekstet që ju keni qenë dërguar. Ju keni marrë këtë Davidin. Ju jeni defekt atë. Le të lënë atë aty dhe ne do të rregullojmë të hënën. Shihemi pastaj. DAVEN Farnham: Dhe tani Deep Mendime nga Daven Farnham. Nëse një pemë binare bie në pyll dhe askush nuk është përreth C it-- [chuckling].