[Daqq ta mużika] DAVID J. Malan: Kull dritt. Merħba lura. Dan huwa CS50. Dan huwa l-aħħar ta 'ġimgħa 8. U kif tafu, aħna għandna pretty sigħat regolari uffiċċju fi ftit tal-swali dining, inkluż Annenberg. U wħud mill-tim ġentilment ħa xi ritratti aħħar. U fl-unur ta ' Halloween, ħsibna aħna'd sehem wieħed li pjuttost maqbuda us mill sorpriża hawn fil Annenberg Hall biss oħra bil-lejl. Classmate tiegħek Jacob maħluqa għall dan ir-ritratt, iżda kien aktar divertenti kien fuq Facebook, il riżultanti konverżazzjoni li ġara afterward. Ewwel kariga tiegħu bħala rispons biex ritratt tiegħu kien dan. A ftit minuti wara, huwa ddeċieda biex wieħed up ruħu ma 'dan. Hija marret fuq biex imbagħad mur għal dan, u mbagħad, saħansitra aktar divertenti huwa meta mom tiegħu chimed fi. U mbagħad finalment, jidher dan kien biss Ruse isbaħ għal play li għaddej. Allura, jekk inti tixtieq biex tara Jacob u oħrajn, fosthom Cynthia Meng, li l- wara l-kwinti tal-persunal żona CS50, ras għal dan il-URL u dan id-dramm hawn. Allura mingħajr aktar dewmien, illum aħna tkompli dan il-ħarsa lejn programmazzjoni web, u l-ħolqien attwali ta 'programmi li ma jmorrux fil-kmand linja tiegħek, iżda minflok run ġewwa ta 'browser. Preżumibbilment issa, jew ħafna dalwaqt, int ser li jkun fil-midst ta 'implimentazzjoni web server tiegħek stess, li hija differenti minn programmazzjoni web. Il-web server fl pset6 hija kollha dwar kitba software li jaf kif jieħdu Talbiet HTTP minn browser, jew saħansitra mill inti, bniedem, ma 'programm imsejjaħ telnet, u imbagħad jirrispondu għal dawk it-talbiet jew billi tobżoq out fajl HTML, jew jpeg, jew gif, jew saħansitra fajl PHP. Iżda ma 'web server, mhuwiex suppost biss tiftaħ fajl PHP, xi ħaġa li jispiċċa fil-PHP, u imbagħad bżiq out-kontenut. Huwa suppost li tagħmel dak li dan il-fajl ewwel? Biex ngħidu hekk. Mhux josservawha, għidna nhar it-Tnejn, iżda rather-- Għalhekk, tinterpreta dan. PHP huwa lingwa interpretat, u għalhekk Waħda mill-karatteristiċi ewlenin fil-web tiegħek server, għalkemm implimentati mill us, hija din il-ħila għall-web server tiegħek li l-avviż, oh. Dan huwa fajl li jispiċċa fil-PHP. Let me mhux biss tibgħat lill- utent simili huwa kontenut statiku, iżda pjuttost let me taqraha linja minn linja, xellug għal-lemin, u jinterpreta dan. U li jagħmlu, li inti guys se essenzjalment Punt għal programm fl-appliance, u fuq lott ta 'sistemi tal-kompjuter, biss imsejħa PHP. Li huwa l-isem ta 'PHP l- interpretu stess lingwa. Allura, li l-biċċa nimplimentaw għall inti, u dak ix-xellug għalik, finalment, huwa numru ta 'biċċiet, fosthom qed timplimenta l-appoġġ għall-kontenut statiku. Imma issa, u ma ' problema sett seba, int ser tibda tranżizzjoni għal fatt bil-miktub l-kodiċi PHP li gets interpretat fil tkellem għal tmiem lura database li taħżen l-informazzjoni. Mela ejja jifhmu aħjar l-ewwel koppja ta 'dawn superglobals u biss kemm qawwa li għandek toħroġ il-kaxxa b'xejn ma 'lingwa bħal PHP. Affarijiet li inti ma għandekx biex jimplimentaw yourself. Allura, rajna nhar it-Tnejn $ _GET, li huwa superglobal, li huwa biss PHP jitkellmu għal globali varjabbli jista 'jkollok aċċess kullimkien. U x'hemm ġewwa ta '$ _GET? X'hemm ġewwa ta 'dan superglobal li naraw? Żgur statistikament fil inqas persuna waħda jaf. X'hemm ġewwa ta '$ _GET? Yeah? UDJENZA: Hu l-varjabbli inti tpoġġi fis-sekwenza mistoqsija. DAVID J. Malan: Perfect. Huwa l-varjabbli inti jitqiegħdu fil-sekwenza mistoqsija. Allura, fl-eżempju anzjani tagħna ta ' reimplementing Google meta kellna URL, u mbagħad kwistjoni mark, li tiddemarka l-bidu tal HTTP parametri, allura kellna q ugwali xi ħaġa, bħal q ugwali qtates, dak li awtomatikament imorru ġewwa ta 'li $ _GET super globali għalik, minħabba PHP, huwa ċentrali ta 'Q, u tal-valur tiegħu ta 'qtates. Fi kliem ieħor, $ _GET u kollha ta ' dawn l-affarijiet huma arrays assoċjattiva, tabelli hash ta 'tipi, li ċwievet taħżen u valuri. Issa, lura fl pset5, il-hash tabella inti jista 'jkollok implimentati, jew il ipprova inti tista implimentaw, verament kien effettivament assoċjattiv array, struttura data fejn inti tista 'tassoċja ċwievet bil-valuri. Iżda fil pset5, il-valuri kienu trivjali. Il-valur kien essenzjalment vera jew falza. Hija l-kelma fid-dizzjunarju? Allura, meta inti hashed kelma bħal tuffieħ biex tara jekk tuffieħ huwa fil-dizzjunarju, funzjoni check tiegħek preżumibbilment lura vera jew falza. Allura, dak effettivament l- valur aħna qed jkollna lura. Imma rajna nhar it-Tnejn qosor, inti tista 'ċertament jassoċjaw aktar interessanti Valuri milli sempliċement vera jew falza bl ċwievet, bħal tuffieħ. Inti tista 'attwalment jirritorna l string arbitrarja, u tabilħaqq, dan huwa dak $ _GET u dawn varjabbli oħra let inti tagħmel. Allura $ _POST huwa simili fl-ispirtu, imma jekk inti jissottomettu formola bil-posta, metodu HTTP differenti li l- użat għal affarijiet bħal karti ta 'kreditu, u informazzjoni privata, u anki informazzjoni binarja bħall ritratti, dawk l-affarijiet jispiċċaw ġewwa ta '$ _POST. U fil-fatt għall-fajls bħal jpegs u whatnot, hemm anke ieħor li mhux up here imsejħa $ _FILES kif ukoll. Allura, server aħna mhux se nitkellem fuq wisq ħafna, iżda li tagħtik aċċess sort ta 'dettalji livell aktar baxx dwar l-server innifsu li inti qed tuża. Cookie u sessjoni, għalkemm, Ser naraw effettiv issa. L-aħħar huwa dak li nużaw biex jimplimentaw l-kunċett ta 'shopping cart. A super sempliċi wieħed, iżda recall li kellna dan l-eżempju hawn, għadd kif ħafna drabi inti kien żar din il-paġna qabel. Imma llum, aktar milli biss ħarsa lejn l-effett ta 'dan, ejja jiftħu Spettur Chrome, li inti tista 'normalment tagħmlu billi tikklikkja jew Control dritt tikklikkja kullimkien fuq paġna web, u mbagħad jagħżlu jispezzjonaw element. Jew inti tista 'tmur permezz tal-menus li aħna jiddeskrivu fid spec pset6 tal. U jien ser l-tab Network hawn, u ejja watch għal mument it-traffiku HTTP li l- jmorru quddiem u lura. Let me ewwel imorru quddiem u cache Chrome ċara tal. Allura xi wħud minnkom jista 'jkun familjari ma din it-teknika diġà, u aħna qed tmur biex tużah għal skopijiet debugging hawn. Issa aħna bħala kompjuter xjentisti ser tibda tagħmel dan għall debugging skopijiet, li biha aħna se tikklerja l-cache, tipikament, sabiex inkunu tista 'teħles minn affarijiet imsejħa cookies. Allura int probabilment ġeneralment familjari ma 'dak cookies huma, jew għall-inqas li dawn jeżistu, iżda x'hemm komprensjoni tiegħek minnhom, biss bħala utent ta ' kompjuters, dak li huwa cookie? Yeah. UDJENZA: Huwa daqsxejn of-- tajjeb, ma bit fi żmien ta 'xjenza tal-kompjuter. Huwa biċċa ta 'data li websajt tibgħat lilek sabiex biex ikunu kapaċi jirreġistra l-istatistika fuqek. DAVID J. Malan: OK, tajba. Allura huwa biċċa ta 'data li server, tpoġġi fuq il-kompjuter tiegħek, u ejja jiġġeneralizza anki aktar, huwa importanti value-- sew, li jkollna aktar preċiża. Hija biċċa ta ' informazzjoni, biċċa ta 'data, li server huwa kapaċi li jitpoġġew fuq il-kompjuter tiegħek u ħafna drabi, il-server ma dan sabiex tiftakar min int. Hekk per eżempju, odds huma int probabilment logged in siti bħal Facebook, jew Gmail, jew oħrajn qabel, u tilloggja bil tiegħek username u password, u mbagħad wara li, għal xi numru ta 'minuti jew sigħat jew jiem anke, il-server jiftakar li inti, fil-fatt, illoggjat. Issa, kif huwa li attwalment jiġri? Għax int żgur mhux retyping username u password kull darba inti jinnaviga għal paġna differenti fuq Facebook. Għalhekk jirriżulta li l- cookies huma r-risposta. A cookie inti tista 'taħseb bħala, tip simili, idejn diġitali timbru li inti tista 'tikseb fi divertiment park jew klabb li essenzjalment tindika ġejt hawn qabel, u inti stajt diġà muri ID tiegħek għall-bouncer, għal Pereżempju, u li l-klabb jew l-park għandu issa jassumi li inti diġà awtentikati. Inti diġà ġew identifikati minnha. Allura jekk wieħed iżomm f'moħħu, ejja jiftħu counter here. Let me imorru quddiem, I biss ma, u ċara kollha ta 'cookies tiegħi. U issa dak li jien ser tagħmel hu li istiva Shift, biss għal miżura tajba, u sfurzat rikarigu-paġna. Shift biss tagħmel żgur li xejn gets Cached. U hawnhekk it-talba li marru quddiem u lura. Allura hawn għandna talba, u let me zoom isfel hawn, u ħafna ta 'dan huwa dettalji tip ta uninteresting għal issa li l-browser għandha awtomatikament mibgħuta, imma ejja ikklikkja View Sors biex tara d-headers prima. U jekk inti stajt dived fis pset6 diġà, inti ser ċertament jirrikonoxxu affarijiet bħal dan, u forsi xi ta 'dawn il-linji l-oħra hawn, imma x'hemm aktar interessanti għal-lum jekk I iscroll, mhux għat-talba iżda għar-rispons hekk imsejħa, din il-linja probabbilment jistenna familjari. Li l-ħaġa tajba meta inti tara 200 OK. Apparentement dan huwa l- data u l-ħin fuq is-server u hemm mazz ta 'għalf. Oh, dan huwa interessanti. Jinstabx kull meta inti tuża PHP, għall-inqas f'dan server, l-server spits out liema verżjoni ta 'PHP inti qed tuża. Li, fil-fatt, għas-sigurtà skopijiet, mhix ħaġa tajba. Iżda, aħna ser terga 'lura għal dik xi żmien ieħor forsi. Imma issa dan huwa l-linja mmerraq llum, u rajna fil-qosor xi wħud minn dawn, Naħseb ma Facebook meta aħna poked madwar l-Ispettur dak iż-żmien, cookie sett huwa dak li huwa tħawwil li ftit biċċa informazzjoni fuq il-kompjuter tiegħek. Dan huwa header HTTP thats effettivament javżak browser tiegħek, Chrome, IE, ikun x'ikun, ħej browser maħżen fuq li l-utent hard drive, jew RAM-utent, ewlieni imsejjaħ PHPSESSID, li huwa notazzjoni shorthand għal sessjoni ID, u tagħtiha valur ta ' 0vlk8t, dot, dot, dot. A psewdo verament twila string alfanumerika każwali. Huwa biss numru verament kbir, iżda huwa encoded ma 'ittri u numri sabiex id-daqs ta 'dan jista' jkun saħansitra ikbar minn numri biss. U mbagħad, mill-mod, Path = /, li ifisser biss li dan il-cookie għandha tkun assoċjati mal- intier tal-websajt, mhux biss speċifika paġna il-ħaġa sħiħa. Allura dan huwa dak timbru idejn virtwali. Huwa bħallikieku l-server, Facebook, jew fil-każ tagħna l-appliance, għandha 0vlk8t litteralment miktub u oħrajn, fuq naħa tiegħek. Avviż dak li l-server, ma nagħmilx huwa mhuwiex ħażna username tiegħi, ċertament mhux ħażna password tiegħi. Minflok, jidher li jkun ħażna ta 'informazzjoni psewdo każwali b'tali mod li ebda wieħed jista raden liema timbru idejn tiegħi huwa. Fuq in-naħa server, sadanittant, il-server se tiftakar, probabbilment f'database jew xi ħaġa, li l-utent, li fil-futur jippreżenta timbru idejn ta 0vlk8t, dot, dot, dot, għandhom ikunu assoċjati ma 'din partikolari shopping cart, biex ngħidu hekk. Fi kliem ieħor, jekk I issa jmorru lura hawn u rikarigu din il-paġna, kif ma 'l-server jaf li I miżjura darba waħda? Jew jekk I jagħmlu mill-ġdid, kif ma 'l-server jafu li stajt żar it darbtejn? Ukoll jekk I jinżlu għal din aktar talba reċenti, li issa hija t-tielet li stajt mibgħuta b'kollox, avviż talba tiegħi issa. Għad hemm din jitlob up here,-istess bħal qabel, għad hemm mazz sħiħ ta 'għalf li konna injorati bħal qabel, iżda l-ħafna aħħar header, dan żmien, għaliex stajt kien hawn qabel, hija preżentazzjoni ta ' dan it-timbru virtwali idejn. Li biha din il-linja hawn, mhux stabbiliti cookie iżda cookie kolon PHPSESSI = 0vlk8t, li jinsab biss browser tiegħi awtomatika preżentazzjoni ta 'dan it-timbru idejn sabiex issa l-server, hekk kif jirrealizza, ooh, dan huwa l-utent 0vlk8t dot, dot, dot, I issa jistgħu jiftakru li hu jew hi u reassociate ma 'dak l-utent ikun x'ikun informazzjoni Irrid li, u kollha ta ' dik l-informazzjoni tista 'tiġi maħżuna minnek, l-programmer, fil $ _SESSION. Allura biex tkun ċara, jekk I jiftħu malajr reali fil gedit dan il-fajl attwali, counter.php, fl-direttorju pubbliku ospitanti lokali tiegħi bħal qabel, avviż li, tabilħaqq, Jien finalment ħażna fil $ _SESSION Kwotazzjoni unquote "counter," il-valur tal-counter ta 'qabel li I tikseb minn dawn il-linji up here li aħna ħares lejn aħħar darba plus wieħed. Hekk taħt il-barnuża, li l-cookies kollha huma. Huwa biss il-tip ta diġitali timbru idejn jmorru quddiem u lura, u franchement jekk inti tiftaħ l Chrome Spettur fuq kwalunkwe websajt inti żżur illum, ma super probabbiltà għolja, int ser tara forsi waħda, forsi nofs tużżana cookies qed mfakkar minnek. U agħar għadu, jekk dawk websajt int jżuru kollha għandhom reklami, li huwa ċertament pjuttost komuni llum, u jekk dawk ir-reklami huma ġejjin minn xi parti ċentrali, xi ħadd bħall-Google jew AdWords kif sejħa wieħed mill-prodotti tagħhom jew bejjiegħa oħra bħal dawn li jbiegħu ads, x'hemm interessanti, u franchement x'hemm ftit tħassib, dwar kif HTTP xogħlijiet, hija li jekk għandek ad inkorporat fil Facebook.com, u Google.com, u Harvard.edu, kull numru ta 'websajts, dan huwa tali li hemm bniedem tan-nofs li qed iservi up ads għal kull tlieta minn dawn il-websajts, jirriżulta li l- cookies huma għal kull dominju. Mela jekk għandek ad li ġejjin mill- istess kumpanija fuq il-websajts differenti, dik il-kumpannija tista 'effettivament track li inti madwar kollha ta 'dawn il-websajts. Harvard jista 'ma jafux qed iżuru Facebook. Facebook ma jista jafu u int jżuru Harvard. Imma tkun xi tkun servizz ad dawn qed jużaw jekk dik dominju huwa preżenti fiż-żewġ web Harvard.edu paġni u webpages Facebook.com, dan il-bniedem tan-nofs żgur jaf min int minħabba dawn il-cookies tiġi maqsuma madwar, jew pjuttost li, li l-hekk imsejħa middleman. Allura aħna ser terga 'lura għal dan fil implikazzjonijiet ta 'sigurtà tagħhom, imma hemm ħafna ta 'informazzjoni maħżuna dwarek kwalunkwe ħin li inti żur aktar xi paġna tal-web fuq l-internet u li verament inaqqas għal dan il-mekkaniżmu sempliċi ħafna. X'jiġri, imbagħad, jekk int super paranojde u inti tiddeċiedi li jmorru fis Chrome jew IE jew kwalunkwe u itfi cookies tiegħek? X'jiġri? Yeah? You really-- inti ghamilt dan id-dritt? OK. Le, imorru quddiem. UDJENZA: Ċerti websajts ma jkollhom funzjoni mingħajr ma simili Facebook. DAVID J. Malan: Yeah! Allura ċerti websajts se biss tieqaf taħdem. U f'ħafna websajts dawn il-jiem li fundamentalment jiddependu fuq cookies, speċjalment jekk dawn ikollhom tilloggja fil, dawn qed biss jmorru biex jinkiser. Minħabba jikkunsidraw il- alternattiva, jekk il-websajt m'għandha l-ebda mod ta 'ftakar min int, u għalhekk web browser tiegħek ma tkunx jirrappreżentaw ma 'kull HTTP talba ta 'dan it-timbru idejn, effettiv websajt simili tmur Facebook li jkollhom pront inti biex log f'kull ħin darn int bdilt paġni, jew ikklikkja rabta, li huwa żgur mhumiex utenti partikolarment tajba esperjenza. Allura li hemm, wisq, huwa fost il-kompromessi. Allura mingħajr aktar dewmien, ejja tagħti għall mogħtija li mal-programmazzjoni web, fil-lingwi bħal PHP, inti tista tiftakar informazzjoni bħal dik fl problema stabbiliti seba meta inti jimplimentaw tiegħek stess Website E * Kummerċ simili li biex jixtru u jbigħu l-ħażniet, inti ser tiftakar eżattament dak l-utent ikun mixtrija u mibjugħa u li hu jew hi permezz ta 'din is-sessjoni. Imma aħna qed tmur għall-ħtieġa mod fancier minn email biex tibda jżommu l-informazzjoni madwar. Dritt? Nhar it-Tnejn, tkellimna dwar IMs Frosh u kif fil-verżjoni waħda ta 'din il-websajt, snin ilu, kollox aħna ma kien email Procter li s responsabbli mill-isports intramurali programm, l-isem, u l-ġeneru, u jekk jew le dawn qed kaptan, u l dorm ta xi ħadd li reġistrazzjoni għal sport intramurali. Allura huwa mhux ħażin, iżda hu jew hi imbagħad kellhom troll permezz ta 'email tagħhom, tagħmel spreadsheet jew xi ħaġa simili li, biex iżommu kollox organizzat. Allura żgur aħna bħala programmaturi tista 'tagħmel dan għal dak Procter. U hekk jidħol fil SQL, Strutturat Mistoqsija Lingwa, li se tfittex pretty differenti kemm C u PHP, u tkun taf adsa ħafna aktar idejn fuq PHP u l-problema jistabbilixxu sebgħa imma wkoll SQL, jew SQL, din hija lingwa li tuża biex jitkellmu ma 'database. Imma x'hemm database? Well taħseb ta ' database, għall-inqas għal issa, bħala sempliċement bħal fajl Excel, jew jekk int Mac numri utent fajl, jew jekk int Apps Google utent spreadsheet Google, huwa effettivament database, jew verament speċifikament database relazzjonali. A database relazzjonali huwa biss xi ħaġa li għandha ringieli u kolonni, u inti jista 'jaħżen kwalunkwe tip ta' informazzjoni f'dawn fillieri jew kolonni. Imma x'hemm sbieħ dwar SQL, u dwar databases attwali, mhux biss spreadsheets jew spreadsheets Google, hija li inti tista 'tuża lingwa li attwalment tesegwixxi mistoqsijiet li daħħal data, biex jitneħħew id-data, biex tfittex data, anke aktar importanti, u int ma għandekx tużah pjuttost manwalment kif inti tista tipikament Google spreadsheet bħal dan. Allura fil SQL, hemm mazz ta ' dikjarazzjonijiet fundamentali jew biċċiet ta 'funzjonalità mibnija. Hemm ħafna aktar minn dawn, imma int tista 'tmur distanza enormi biss billi jafu li din il-lingwa imsejħa SQL għandu mill-inqas erba ' dikjarazzjonijiet inti tista 'lieva. Ħassar, għat-tneħħija tad-data, Daħħal, għaż-żieda ringieli, Aġġornament, għall-bdil ringieli, u l-għażla, għall jkollna lura ringieli u dan huwa tabilħaqq dak SQL ma. Hija topera kompletament fuq ringieli hekk li meta inti daħħal, jew ineħħu, jew aġġornament, jew tagħżel dak li int jkollna lura bħala hekk imsejħa sett riżultat, bħal firxa ta 'ringieli. A mazz ta 'ringieli minn tabella. Allura lura fil-ġurnata, u anke biex din il-ġurnata, inti tista 'jinteraġixxu mal- database tuża linja tal-kmand, iżda mhux partikolarment divertenti għall-użu dan il-tieqa iswed u abjad stil u fil-fatt tesegwixxi jikkmanda u poke madwar database tiegħek. A user interface grafika, jew GUI, huwa ħafna aktar preferibbli, forsi, u għalhekk l-għodda nirrakkomandaw u preinstalled għalik fuq l-appliance huwa msejjaħ phpMyAdmin. Huwa koinċidenza total li l- isem ta 'dan ħaġa għandha PHP fiha, dan ifisser biss li l-poplu li kiteb dan il-programm huma stess kiteb dan fil-PHP. Imma hija finalment dwar jamministra server database, bħal MySQL server li inti jista 'jkollok, kif inti do, fl-appliance CS50. Allura hemm aktar dettall hawn minn għandna bżonn għall-kura dwar llum, imma dak ewlieni huwa li fuq ix-xellug naħa hija lista tad-databases li għandek fuq il-kompjuter tiegħek, fuq appliance CS50 tiegħek, jew jiġu proġetti finali li inti tista jkollhom fuq parti terza, ta 'l-kumpanija websajt jew web server, li inti tista 'tħallas għall-ispazju. Allura fuq ix-xellug huwa l- databases, li waħda minnhom huwa pset7 li jiena misluf mill jmiss ġimgħat pset, u mbagħad fuq il-quċċata hemm avviż hemm mazz ta 'tabs, li waħda minnhom huwa databases, SQL, status, utenti, l-esportazzjoni u oħrajn. Allura inti tista 'tmur twil mod biss billi realizzat li ħafna mill-user interface hija fil-kolonna tax-xellug u madwar l-quċċata dritt up hemm. Allura x'nistgħu attwalment tagħmel ma 'dan? Well, ejja tibda ħolqien ta ' daqsxejn ta 'informazzjoni kif ġej. Ejja ngħidu li ġej huwa l-każ, kif se jkun fi ftit jiem, inti tixtieq li jimplimentaw websajt, imsejħa CS50 Finanzi, u din il-websajt ihallik jixtru nikkwota unquote u tbiegħ il-ħażniet. U li għaddej biex insemmu il-prezz ta 'dawk l-istokkijiet, finalment kif tkun taf tara, billi tkellem lill Yahoo Finanzi. Li, wonderfully, għandha servizz b'xejn li biha inti tista 'tgħaddi fil-ticker stokk bħall GOOG għall-Google, u se jagħtuk lura istokk kurrenti Google prezz fi ħdan il-passat ftit minuti inqas. Allura inti ser tuża li, finalment, li nippretendu għall-utent li jixtru u jbiegħu attwali ħażniet li jużaw flus virtwali, imma l-ewwel ħaġa l-utent għaddej biex tara huwa dan l-iskrin login li jitlobhom għall-username tagħhom u password. U għalhekk, wieħed mill-ewwel sfidi għalik fl pset7 se tkun biex jimplimentaw il-aħħar lura database, il-spreadsheet jekk inti se, li għaddej biex jaħżnu ismijiet u passwords utenti u finalment dak ħażniet huma stess, u kemm, u kemm flus kemm huma għandhom, hekk mazz ta 'affarijiet oħra tabelli oħrajn, jew spreadsheets. Mela ejja tagħti ħarsa lejn kif dan jista 'jidher mad-daqqa t'għajn. Jien se jmorru lura għall- l-appliance u jien se jmorru għal dan il-URL hawn phpMyAdmin localhost / phpmyadmin u tkun taf tara li jieħu me għal interface eżattament kif rajna fuq il- screen shot, u hawn I jkollhom database addizzjonali sejjaħ lecture għal-lum u let me jimxi 'l quddiem ewwel u kklikkja fuq pset7. I jidhru li jkollhom koppja ta 'għażliet, waħda għal prodotti ġodda, għall-ħolqien ta 'tabella ġdida, u link għall-utenti, li huwa tabella I diġà maħluqa. Allura x'hemm tabella? Mela jekk inti użati Excel qabel, u jekk inti stajt numri użati jew Google Spreadsheets, inti tiftaħ tieqa u ikollok mazz sħiħ ta 'ringieli u kolonni, iżda imbagħad inti normalment ikollhom worksheets tul il-qiegħ, jew tabs separati. Inti tista 'taħseb ta' kull worksheet bħala mejda hekk li database, finalment, huwa kombinazzjoni ta 'tabelli wieħed jew aktar, wieħed jew aktar worksheets, fil- dinja ta 'spreadsheet normali. So let me go l quddiem u ikklikkja fuq din worksheet li I premade, imsejħa l-utenti, a.k.a. Tabella database. U jekk I iscroll stabbiliti hawn, let me zoom out a bit, dan huwa dak phpMyAdmin huwa javżak us huwa ġewwa ta 'din it-tabella dritt issa. Huwa ftit konfuża fl-ewwel t'għajn minħabba li l-UI mhix il-ħaġa prettiest fid-dinja, iżda dak li huwa interessanti huwa din il-parti hawnhekk. ID, username, u hash. Bil-quddiem, u tkun taf tkun f'idha dan il-problema sett seba, aħna nagħtuk fajl li jinkludi super tabella database żgħar, mislufa attwalment mill-Hacker edizzjoni ta 'problema sett tnejn, ġewwa li minnhom hemm sitt ringieli. Waħda għall Belinda kollha mod isfel sa wieħed għal Zamyla, u avviż lejn ix-xellug ta 'dawk usernames huma IDs uniċi bħal wieħed, tnejn, tlieta, erba ', ħames, sitt, interi, u mbagħad lejn il-lemin huma hashes. U jekk, odds huma, inti ma tagħmel il-problema Hacker edizzjoni stabbiliti tnejn, iżda hash huwa biss bħal encrypted password bi ftit caveats. U għalhekk, dak li tara hawn huma il-verżjonijiet encrypted ta 'kull sitt ta 'passwords tagħna minn problema stabbiliti żewġ ta edizzjoni Hacker. Issa biex ix-xellug huwa biss xi għalf GUI, editjar dan ringiela, ikkupjar dan ringiela, tħassar dan filliera. Imma x'hemm interessanti issa huwa kif ġej. I tista 'tabilħaqq tibda jesperimentaw bil din it-tabella. Mela jekk jien tmur u kklikkja l-SQL tab, I nikseb dan kaxxa ta 'test big. U dan mhux kif aħna qed tmur biex tagħmel dan meta attwalment tikteb kodiċi. Biex ikunu ċari, phpMyAdmin huwa biss għodda li l- ser jgħidilna poke madwar id-database u jgħidilna esperiment ma mistoqsijiet. Allura per eżempju, jissoponi I tesegwixxi eżattament dan. Agħżel, li hija waħda minn dawk keywords semmejt qabel, star, li jirrappreżenta kollha l-kolonni tabella. Minn dak tabella? Ukoll, l-utenti. U avviż hemm dan konvenzjoni stramb fil SQL fejn inti attwalment jużaw lura qurdien, tipikament, kwotazzjonijiet ma uniku u kwotazzjonijiet ma doppja meta tkellem dwar ismijiet tabelli, sabiex il-kwotazzjoni lura huwa l-ħaġa fuq il- quċċata xellug tal-tastiera tiegħek aktar probabbli. So let me imorru quddiem issa u biss leave li waħdu u iscroll isfel u kklikkja Mur, u aħna qed attwalment għaddejjin biex tara l-istess ħaġa. Għadna kemm eżegwiti query SQL qal tagħżel star kollox mit-tabella msejħa utenti, u dak ikollok lura huwa dan. Fl-aħħarnett, aħna ser tkun tista ' jagħmlu l-istess ħaġa fil-kodiċi, iżda għal issa kollha jien ridt li do kienet tara li fil-browser tiegħi. Well ejja nagħmlu xi ħaġa ftit differenti. Let me jmorru lura għall-tab SQL, u ejja biss jgħidu li dak li? Zamyla tilef kull tal tagħha flus, u għalhekk huwa ħin għalina biex tħassar tagħha bħala utent. Hi tal m'għadhomx qtugħ fil. Hekk jien se ngħid tħassar from-- ukoll, iżommu kapitalizzazzjoni għall-konsistenza, iħassru mill-utenti fejn. U hekk, nistgħu jkollhom dawn predicates, jew dawn kwalifiki, fl-aħħar tal-istqarrija tiegħi fejn u kif jista I ħassar Zamyla? Bl-isem Zamyla tagħha, sabiex il- kolonna, wieħed mill-kolonni kien imsemmi, dan meta isem = "Zamyla". U hawn I użu doppju kwotazzjonijiet jew kwotazzjonijiet uniku, inti tuża biss id-dahar qurdien meta jitkellem dwar l-ismijiet, per eżempju, ta 'tabelli jew oqsma. U let me ikklikkja Mur hawn. U issa, il-paġna web huwa tkun ftit uptight. Or, do int verament tixtieq li tesegwixxi tħassar minn utenti fejn isem huwa ekwivalenti għal Zamyla? Iva. Allura issa, jekk immorru lura għall-mejda tiegħi mill-utenti tikklikkja, avviż li Hm. I goofed. U fil-fatt, I tip ta ' għafast bogħod daqstant b'mod mgħaġġel inti lanqas biss tara l- messaġġ ta 'żball aħmar, forsi. What did I do wrong? UDJENZA: Inti ma kellhomx bżonn għall-kapitalizzazzjoni isem tagħha. DAVID J. Malan: Yeah I kapitalizzat isem tagħha, iżda tagħha username-- attwalment I għamel żbalji koppja, id-dritt? Waħda, username tagħha huwa zamyla, Z zghar, u l-isem kolonna hija username, mhux isem, hekk ejja tagħmel dan mill-ġdid. Let me imorru quddiem u tħassar mill-utenti fejn username ugwali kwotazzjoni unquote "Zamyla". Kull dritt? Allura dan jistenna ftit aħjar, ejja me go iscroll isfel u kklikkja Go. Huwa għadu għaddej biex Yell fil lili li jkun żgur. I ikklikkja Iva, u issa naraw, franchement dan ġara, verament fast, inqas minn wieħed tieni ċertament, dan huwa eżattament l-mistoqsija li ltqajna esegwiti. Biex tikkonferma, let me ikklikkja utenti u tabilħaqq issa Zamyla hija marret. Issa ejja tagħmel l-oppost. Ejja ngħidu li Gabe trid jirreġistraw għall-websajt. X'hemm-mistoqsija SQL, x'inhu l- kmand I tista tip li jżidu Gabe? Ukoll huwa pjuttost sempliċi. Daħħal in-utenti, u issa jiġrilha ftit cryptic. I bżonn li jispeċifikaw, għall-server, dak oqsma nixtieq li tassenja. I ma verament kura liema ID Gabe tal numru huwa, hekk jien ser skip dan. Jien minflok se ngħid username, hash, u mbagħad il-valuri Irrid li jpoġġu hemm se tkun Gabe. U mbagħad hash tiegħu, I do not know. Allura għal issa, jien ser leave li bħala kbar biex jagħmlu. Aħna ser jiġu lura li fil-problema stabbilita spec kif inti fil-fatt tagħmel dan. Allura avviż, għal darb'oħra, il-sintassi. Daħħal in-isem tal-mejda, imbagħad lista parenthesized 'l-oqsma, il-kolonni tixtieq iżżid valuri għal, u allura biss l-istess tordna eżatt xellug biex dritt tal-valuri li inti trid iżżid, u huwa biss tgeżwir minħabba it-test huwa xi ftit twil. Allura issa let me ikklikkja Go. Wieħed ringiela mdaħħal. U issa jekk immur lura għall utenti, x'hemm interessanti hija li mhux biss huwa Gabe issa fil- database, dak li apparentament huwa ID tiegħu? Ukoll huwa sebgħa. Għaliex hi seba meta I ma żidux dan? Allura dan, wisq, huwa wieħed mill- karatteristiċi ikollok tad-database. A lott ta 'mibnija fil-funzjonalità. Jirriżulta li meta ħolqot din it-tabella, I preconfigured huwa awtomatikament tassenja ID b'tali mod li inkrementi. Mela jekk inti stajt qatt poked madwar, u ħares lejn Facebook ID dak tiegħek numru huwa, dawn il-jiem mhuwiex verament ħaġa li tagħmel, imma Facebook bħala API, Programmazzjoni Applikazzjoni Interface, fejn inti tista 'tikseb lura mazz sħiħ ta 'data dwar yourself, dwar il-ħbieb tiegħek, u l-konnessjonijiet tiegħek. U dak użat biex jkun it-tip ta 'kessaħ, lura fil-ġurnata, kien li tfittex up dak tiegħek Numru ID Facebook kien. Mark Zuckerberg, il per eżempju, huwa ta 'tliet peress li huwa kien l-awtur tas-sit. U kif l-istorja tmur, hu ħoloq żewġ kontijiet tat-test, utent wieħed u żewġ, li huwa mbagħad mħassra. U għalhekk, ZUCK, kif username tiegħu fuq Facebook, huwa numru ID tlieta, u lkoll jkollhom numri ferm akbar minn tlett dawn il-jiem. Fil-fatt, f'xi punt Facebook tbiegħdu minn anki bl-użu ta 'int, li huwa valur 32-bit, għall-użu il-up-pass li jmiss, essenzjalment twil twil hekk li dawn setgħu jakkomodaw Saħansitra aktar utenti li jirreġistraw. Allura fatt storiku ftit gost. Allura dan huwa biss l- sintassi bażika magħhom nistgħu tesegwixxi koppja ta ' mistoqsijiet, iżda nistgħu attwalment do mazz aktar affarijiet ma SQL. U tkun taf tara, finalment, fil-problema stabbilita seba li inti għandek tagħmel numru ta 'deċiżjonijiet tad-disinn, fosthom se tkun liema tipi ta 'data jużaw. Hekk biss bħal fis-C, hemm dejta tipi fil database, bħal MySQL, u t-tipi ta 'data inti għandek tagħżel minn jinkludu dawn l-oqsma hawn. Char, varchar, Int, int big, deċimali u d-data ħin, u ħafna oħrajn. Mela ejja fil-fatt jagħmlu dan. Ejja nippretendu li aħna ma idejn inti tabella dan l-utent u let me imorru quddiem u joħolqu, għal myself, fil-lekċers database-- attwalment let me imorru quddiem u ħassar -tabella I jkollhom fil hawn diġà sabiex inkunu nistgħu attwalment joħolqu din. Whoops. Jien ser qatra dan mejda, u issa jien se jmorru mill-ġdid għall- lecture database minn hawn, Jien ser tinħoloq tabella imsejħa utenti U ejja biss tagħmel tliet kolonni inizjalment u kklikkja Go. Issa, għall-parti l-kbira, għal darb'oħra, dan huwa biss tuża din l-għodda grafika imsejħa phpMyAdmin, u dak li aħna qed tagħmel issa huwa ħolqien ta 'tabella. Allura dan huwa simili File tmur, New, u l-ħolqien ta 'fajl Excel ġdid. Allura huwa tistaqsi lili ftit mistoqsijiet, mix-xellug għal-lemin, x'inhu l-isem tal-ewwel kolonna, u mbagħad l-isem tat-tieni kolonna, u l-isem tat-tielet. Mela ejja jirrikreaw dan. ID, u mbagħad username kienet waħda, u mbagħad hash kien ieħor. Allura dak li għandu l-tip ta 'data tkun issa għal qasam bħal ID? Hawn hi l-lista sħiħa ta 'tipi ta' data disponibbli lilek f'database, u għal issa ejja biss jmorru ma int. Valur 32-bit, I do not think realistikament jien se jkollhom aktar minn 4 biljun utenti fil-kont tiegħi, fis-servizz tiegħi, hekk jien ser iżommu jiċċaqilqu fuq il-mistoqsija li jmiss. Jien ma jmur biex tispeċifika tul jew il-valuri, mhuwiex applikabbli hawn għal int, per se. U issa I tista 'tispeċifika, apparentement, inadempjenza valur, li jien mhux ser jispeċifika. A kollazzjoni, I do not know dak li hu. Attribut. Issa aħna fil-fatt jagħmlu jkollhom deċiżjoni disinn. Allura hemm xi oqsma ftit hawn, mhux kollha li huma applikabbli, iżda mhux iffirmat ifisser biss dak? Li l-int trid tkun? Just mhux negattiv. Hekk għandu jkun 0 fuq up. Le, jien mhux ser jiċċekkja għaliex Irrid kull utent li jkollu ID, ma jistax ikun null. U mbagħad, aħna nikseb xi aktar deċiżjonijiet tad-disinn interessanti bħal dan. Aħna ser terga 'lura għal dan fil-mument, imma dak karatteristika oħra ta 'database hija, hija li inti tista 'tgħid l-server database jimxi 'l quddiem u jottimizzaw lilek innifsek, tiegħek RAM u l-ispazju tiegħek hard disk, hekk li jagħżel, u inserts, u tħassar, u l-aġġornamenti huma verament mgħaġġel. Dan il-kuntrast ma 'pset5. Jekk int riedu li tfittex up xi ħaġa fit-tabella hash tiegħek, li taħseb tal bħala database, li kellha tagħmel l- jaħdmu għat-teħid mejda hash tiegħek malajr. Huwa simili, ovvjament, inti. Dritt? Inti kellhom jitqiegħdu fil kollha-multa ħin irfinar affarijiet, jkollna funzjoni hash dritt, jidhru kif ħafna bramel li jkollhom. Imma x'hemm sbieħ, għal darb'oħra, dwar database hija inti biss Punt kollha ta ' dan għal nies oħra li jkunu ħasbu li dan permezz għalik, u liema Jien se ngħid hawnhekk taħt indiċi huwa f'dak il-qasam ID tiegħi se tkun il-mezz primarju ta ' tidentifika l-utenti f'dan id-database. Jien ma jmur biex jaħsbu ta Zamyla bħala Zamyla, Jien ser jaħseb ta ' tagħha bħala l-numru 6. Għaliex huwa, forsi, aħjar intuwittivament biex jaħsbu u l-mudell kull wieħed mill ringieli individwali tiegħek billi tuża numru minflok ta 'xi ħaġa bħal string, bħall-Zamyla jew Gabe jew string itwal għadhom? Yeah? UDJENZA: An ID huwa uniku? DAVID J. Malan: Say mill-ġdid? UDJENZA: An ID huwa uniku? DAVID J. Malan: An ID huwa uniku, iżda suppose-- skond il-każ b'mod ġenerali ma usernames, jissoponi I qal ukoll jista 'jkun hemm biss wieħed Zamyla fid-dinja, u Gabe wieħed biss. I jistgħu jimponu l-uniċità restrizzjoni fuq kordi, wisq, jekk jien ridt. Allura mhux maħsub ħażin. UDJENZA: Aktar sigura. DAVID J. Malan: Aktar sigura, għaliex? UDJENZA: Inti ma tistax tgħid li huwa li, bħal fil-utent. DAVID J. Malan: OK, inti ma tistax tgħid li l-utent huwa li hekk hemm aspett privatezza lilha, speċjalment jekk l-IDs forsi jidhru fil-URLs. Hekk żgur, li jista tip ta 'xogħol, wisq. Ħsibijiet oħra? Yeah? UDJENZA: Huwa aktar faċli biex iwettqu operazzjonijiet fuq int. DAVID J. Malan: Dik hija l-kicker reali. Huwa biss aktar effiċjenti, jew aktar faċli għall-kompjuter, biex iwettqu ħidmiet fuq integer. Dritt? An int huwa garantit jkun 32-bit, billi Zamyla huwa ftit karattri twil, Gabriel huwa ftit aktar karattri fit-tul, Davenport huwa verament twila, u għalhekk huwa mhux partikolarment effiċjenti għall-użu kordi li jqabblu valuri u ħarsa għall-oqsma, u jaġġorna l-oqsma, jekk inti tista 'tikseb bogħod b'sett wieħed biss numru sħiħ. Just 32 bits. Allura usernames, wisq, dan il-mod, ma għandekx tkun unika, għalkemm probabbilment għandhom jkun, u anke f'dan il-mod wisq utent jistgħu jitħallew tibdel username tiegħu jew tagħha. Mela ejja issa jħallu dan bħala l- mezz primarju ta 'identifikazzjoni tal-utent. Dan huwa javżak-database imorru quddiem u jottimizzaw yourself hekk li tfittex ups fuq ID huma super fast. AI, horribly jismu, biss ifisser Auto Żieda, u dan huwa l-kontroll kaxxa għandna bżonn li jiċċekkja biex jispeċifika li l-qasam identità biex jiġu aġġornati awtomatikament għalija, u mbagħad jien ser iscroll lejn il-lemin hawn u franchement jien ma verament interessati fi kwalunkwe aktar ta 'dawn l-oqsma. Ċertament mhux illum. Hekk jien se jmorru lura hawn, l-ewwel kolonna, fejn I bżonn li jispeċifikaw username u hash, u ejja inqas enfasi fuq il- tieni wieħed għal issa. Int probabbilment ma jkunx l-sejħa dritt, Allura dak li jagħmel aktar sens forsi? UDJENZA: Test. DAVID J. Malan: Say mill-ġdid? UDJENZA: Test. DAVID J. Malan: Test? OK, I smajt test. X'iktar? Aħna tip ta 'jkollhom mazz ta' għażliet li huma testwali fin-natura. Allura meta, u għaliex, do tuża xi wħud minn dawn? Ukoll char, kuntrarjament għal dak li inti tista ' think, mhuwiex karattru wieħed. Huwa numru speċifiku ta 'karattri. Hekk jekk nafu li usernames kollha għandu jkun simili tmien karattri, kif użati biex tkun komuni fl-anzjani sistemi tal-kompjuter, nista 'ngħid char u mbagħad nista 'ngħid 8 hawn. Li meta t-tielet kolonna isir applikabbli meta jinħoloq tabella. Imma dak li tip ta 'annoying minħabba li xi nies jistgħu tixtieq li jkollok username itwal minn tmien karattri, xi nies tista 'tixtieq li jkollhom username iqsar, hekk għaliex jimpenjaw myself għal numru speċifiku? Għaliex ma jkollhom varjabbli numru ta 'Chars u biss jgħidu li t-tul massimu ta 'isem huwa, I do not know, bħal 64 karattri. I can not think ta 'xi ħbieb li għandhom ismijiet itwal minn 64 karattri, u anki jekk dan huwa qasir wisq inti tista ċertament bump up arbitrarju. Allura varchar hija varjabbli numru ta 'Chars. Test mhix istint ħażin, u franchement dik it-tip ta 'ma dak li jgħid, iżda qasam tat-test jista 'jkun bħall 65,000 bytes mill-inqas. Li probabbilment overkill għal qasam, u fil-fatt, Yup, 65535. Li probabbilment overkill għal isem, hekk aħna ser twaħħal, tipikament, ma varchars għall testwali qasam u hash, wisq. Hash, jirriżulta, stajna nagħmlu a varchar kif ukoll jew xi ħaġa bħal dik, iżda aħna mhux se jiffoka llum fuq il- kriptografija hemm u n-numri li aħna tista 'attwalment tixtieq li tuża għat-tul tagħha. Iżda let me iscroll lejn il-lemin. Inti tista 'biss ikollha waħda indiċi primarja għal tabella, imma ma nixtieq li tapplika kwalunkwe minn dawn, issa, biex username, kieku inti tgħid? X'għandu username tkun ibbażata fuq vaga fehim ta 'dawn l-erba' għażliet? Just billi l-ismijiet tagħhom? UDJENZA: Unique. DAVID J. Malan: Allura uniku, id-dritt? Għalhekk jirriżulta li mhux biss tista ' inti tgħid database, bil-quddiem, dan huwa l-mezz primarju jidentifika oqsma. Tista 'wkoll tgħid li dan huwa se jkunu qasam uniku. Huwa mhux se tkun il-ħaġa I jiddependu fuq, imma nixtieq-database li essenzjalment ikollhom li jekk il-kundizzjoni, hekk li jekk jien qatt ppruvaw li jirreġistraw żewġ utenti bl-istess isem, database qatigħ mhux se let me. I jista 'jkollhom xi kodiċi addizzjonali fil-PHP li jipprevjeni kemm, iżda l-database, wisq, tista 'tiżgura li dan qatt ma jiġri. Issa, bħala twarrib, speċjalment fir- taħseb dwar proġetti finali, iżomm indiċi moħħ u sħiħa test huma attwalment pjuttost utli. Jekk ikollok xi database akbar, mhux ma għexieren, iżda ma 'mijiet jew eluf jew saħansitra miljuni ta 'oqsma, inti tista ukoll tgħid il-database bil-quddiem dan huwa qasam jien ser li tkun tiftix fuq lott. Forsi username tagħha, forsi huwa bijo, jekk int teħid ta 'websajt Facebook simili li għandha paragrafi li l-utent tal-permessi biex jiffrankaw, u jekk inti tixtieq li tell-database bil-quddiem Jien ser tkun tiftix fuq il-qasam ħafna, iżda mhux neċessarjament uniku, inti tista 'tispeċifika toħloq me indiċi. Or, inti tista 'tgħid ukoll ippermettuli li tagħmel tip ta 'tfittxijiet arbitrarji bħall Kmand jew Control F, bħalek jista fil-Word Processor, sabiex inti tista 'tfittex kordi arbitrarji jew substrings f'dan il-qasam. Fi kliem ieħor, aħna qed jkollna sal-punt fil-semestru fejn inti ma għandekx għalfejn tinkwieta dwar kif jimplimentaw l-affarijiet b'mod effiċjenti. Inti biss bżonn tkun taf dwar liema deċiżjonijiet tad-disinn biex tagħmel hekk li int jużaw l-għodod adattati għall- kummerċ sabiex lieva karatteristiċi li nies oħra bnew għalik. Allura biex terġa, primarji għandhom biss jkollhom waħda, inti tista 'biss għandek wieħed, u huwa l-ħaġa int tikkommetti jużaw biex jidentifika oqsma unikament. Unique huwa biss simili fl-ispirtu, imma inti tista 'biss okkażjonalment jużaha, imma inti tixtieq-database li timponih. Indiċi ifisser biss preemptively tħaffef affarijiet up fil-futur hekk li I tista 'tfittex għal affarijiet f'dan il-qasam. U allura test sħiħ huwa ġeneralment għal paragrafi, jew esejs, jew korpi kbar ta 'test fejn inti tista 'ukoll tixtieq li jkollok karti selvaġġi bħall-ekwivalenti ta 'stilla. Dritt. Allura li kien tip ta ' ħafna li kollha f'daqqa. Ejja naraw jekk aħna ma tistax jiddistillaw koppja ta 'dawn il-karatteristiċi u mbagħad jibnu xi ħaġa pjuttost sempliċi, imma qawwija. Allura fost l-oħrajn deċiżjonijiet tad-disinn int finalment ser ikollhom hu flimkien il-linji ta 'magni ta' ħażna. U let me biss tagħmel referenza ta 'din fl-antiċipazzjoni ta 'proġetti finali, u l-antiċipazzjoni tal ejja say-- ebda ejja tagħmel dan. Ejjew nibnu dan ftit ewwel applikazzjoni. Jien se jmorru fil terminali tiegħi tieqa, u hawnhekk mhix biss counter.php, li aħna issa qed tmur biex jeħles mill bħala li m'għadhomx germane, iżda aħna għandna mazz sħiħ ta 'direttorji u dan se tkun simili ħafna fl-ispirtu li dak li inti ser tara fil-problema sett sebgħa. Allura għandna tliet direttorji jinkludi pubblika u templates, li huwa eżattament fejn aħna jitħalla 'off fuq It-tnejn ma 'paradigma tagħna MVC kollu. U biex terġa, fil-pubbliku se jmorru kwalunkwe fajl li nixtieq utenti li attwalment v tkun kapaċi li jżuru fil browser tagħhom permezz URL. Template. What did nitfgħu fl templates? Liema tip ta 'għalf? Ma kienx hemm ħafna iżda ftit fajls Tnejn. Yeah. UDJENZA: Header u Footer? DAVID J. Malan: Header u Footer. Allura aħna għandna xi ħaġa llum simili, wisq. Imxejna ltqajna ftit fajls aktar iżda Footer nara, Header nara, u mbagħad mazz ta 'fajls oħra. Allura dan huwa l-ekwivalenti tal-fehma V MVC, li, għal darb'oħra, se jkun xi ftit aktar ċar il-problema stabbiliti seba, iżda din hija biss folder jien tqegħid ħafna estetika tiegħi. A lott ta 'HTML tiegħi, lott ta' forom tiegħi. Sadanittant, jinkludi, hija ieħor direttorju li għandha dawn it-tliet fajls u ejja tagħti ħarsa lejn dawn. Jien ser jimxi 'l quddiem u jiftħu config.php. Kif jirriżulta, ħafna bħall kmieni fit-terminu, inti qawwija inklużi CS50 dot h bil pset7. Fl-eżempju tal-lum, int ser biex jagħmlu l-ekwivalenti ta 'dak bi stqarrija jeħtieġu li effettivament jinkludi dawn diversi linji. Allura biex tkun ċara, dan huwa fajl imsejjaħ config.php. U avviż dak li qed jagħmel. Huwa apparentement tagħmel xi ħaġa cryptic, tidwir fuq messaġġi ta 'żball sabiex inti tista 'tara minnhom fil-browser. Huwa, imbagħad, apparentement jeħtieġu żewġ fajls oħra għalhekk dan huwa simili #include fis-C, u allura dan wieħed aħna ma tara, u konna invokati, din tiddependi fuq li shopping cart bħal funzjonalità. Dan ifisser cookie rieda jintbagħtu quddiem u lura. Allura għaliex dan huwa interessanti? Ukoll, jekk immorru lura għal dan direttorju u jiftħu, per eżempju, constance.php. Avviż li PHP ma kostanti ta 'appoġġ, mhuwiex pjuttost simili #define fil C. Minflok, inti litteralment jgħidu definit, u avviż li stajt maħżuna bil-quddiem erba kostanti f'dan il-fajl. Waħda għal database tal-lum, għal password tiegħi, għal username tiegħi, u għall-isem tas-server. Allura dawn huma fil-fatt se tkun pjuttost simili fil-problema sett sebgħa. U fl-aħħarnett, u dan huwa fejn jien se tikseb xi funzjonalità sbieħ mill-persunal, fl functions.php huwa mazz ta 'kodiċi konna bil-miktub, u I seraq xi ftit minn dan minn problema stabbiliti seba għal-lum, li ma mazz ta 'affarijiet u ejja biss ħarsa lejn waħda minnhom b'mod partikolari. Din il-funzjoni hawn, query, se tkun il-funzjoni PHP nitolbu sabiex tesegwixxi SQL. A mument ilu konna jużaw phpMyAdmin, iżda li biss għal tip ta 'skopijiet ta' tagħlim u skopijiet dijanjostiċi u jinsa sett database tiegħek. Meta inti attwalment jużaw tiegħek database, inti, il-bniedem, huma ovvjament mhux se li għandha ġbid up a web paġna kull darba li xi ħadd reġistri. Int ser jikteb il-kodiċi li inserzjonijiet u tħassar utenti fuq talba, u aħna qed tmur biex tagħmel dan permezz tal-funzjoni query. Jekk I issa iscroll, hemm se jkun ftit aktar karatteristiċi. Idawwru se tkun funzjoni we kiteb għall ninformak li tippermetti li inti jibagħtu lill-utent biex URL ieħor, u jirrendi hija funzjoni, pjuttost simili rajna nhar it-Tnejn, li attwalment jirrendi template, iżda aktar fuq dawn fil- forma ta 'mixja stess pset7 permezz. Għal issa, ejja imorru quddiem u tagħmel dan. Let me go fis mejda lectures tiegħi u tara li bħalissa hemm xejn hawn biss għadhom, u let me wkoll tmur fis f'direttorju pubbliku tiegħi, fejn hemm waħda biss fajl, index.php. Dan il-fajl jidher li sempliċi super fil-mument, jidher biss bħal din. Simili ħafna kif aħna jitħalla 'off nhar it-Tnejn. Jien jeħtieġu dan il-fajl, config.php, li hija fil- l tinkludi direttorju, li huwa dot dot, ġenituri tiegħi, u mbagħad huwa biss tirrendi dan il-fajl. Allura dak li huwa dan il-fajl? Ejja jiftħu fl tiegħi templates form.php, u aħna ser tara dan. Super sempliċi, apparentement dan il-formola hija se jissottomettu minn $ _GET jew $ _POST. Verifika sanità malajr. Litteralment viżwalment tfittex il-fajl. Metodu ugwali post. Allura huwa mhux ser tuża l-URL, bħal Google ma, li għaddej biex issolvi ta hide l-informazzjoni wara l-kwinti u huwa se jissottomettu lil fajl imsejħa register.php, u dak l-fajl aħna għadhom ma miktub iżda dak li dan qed jiġri lill-dehra huwa dan. Jekk immur għal paġna separata Dan huwa dak localhost / index.php Dehra. U għal darb'oħra, il-server biss jekk wieħed jassumi index.php. Ikteb. Allura dak fejn aħna qed fil, u dak I trid tagħmel huwa jkun kapaċi affarijiet tip bħal David, u mbagħad numru tat-telefon tiegħi, li se ngħid 617-555-1212 għal issa, reġistru u issa register.php ma nstabx. So I ħtieġa li jimplimentaw dan. Mela ejja malajr Whip xi ħaġa bħal dan up. Let me go fis direttorju pubbliku tiegħi u jagħmlu gedit ta register.php, u issa jien ser jimxi 'l quddiem u tibda modalità PHP, bħal għamilna nhar it-Tnejn, u tag PHP qrib, u Ejja nagħmlu ftit affarijiet. Allura wieħed, I know, mill- wara li bil-miktub li forma, li nixtieq li jiċċekkja għal dan li ġej. Jekk huwa vojt, ikun x'ikun l-utent ittajpjat fil lill-qasam isem, imbagħad Jien se ngħid xi ħaġa bħal Ruhna nieqsa isem. Ruhna, sadanittant, hija mhux mibnija ħaġa PHP, huwa funzjoni we kiteb fil functions.php għall pset7 sabiex ikollok aċċess għaliha. Else jekk il-qasam ieħor tkun vojta, numru, allura jien ser ruhna għall- utent u jgħidu numru nieqsa. Jiffranka dan il-fajl. Issa ejja mur lura lill-browser tiegħi, mur lura għall-forum erġa 'pprova. Reġistru. OK. Ma ġara xejn, li hija tajba. I ma jiksbu messaġġ ta 'żball. Iżda jekk minflok, ejja rikarigu dan paġna, u ma jipprovdux xejn. Kkritikat dan. Tagħmel dan. Reġistru. What did I do wrong? Jekk vojta, isem $ _POST. Say mill-ġdid? Oh, tal-kors. I nesa l-aktar parti importanti, li huwa jeħtieġu ("../ jinkludi / config.php."). I-ħtieġa li jkollhom aċċess għall- ruhna funzjoni, li huwa għaliex xejn li kien qed jiġri. Il-funzjoni ma jeżistu attwalment. Mela ejja tipprova dan mill-ġdid. Ejja rikarigu-paġna, ikklikkja Reġistru. OK. Hemm hu. Allura, l-output aħna qed jaraw hawnhekk hija r-riżultat ta 'sejħa għal ruhna funzjoni, sempliċi super, u hija biss prints out x'ikun I tagħtiha bħala argument. Kull dritt, hekk ejja jikkooperaw. Ejja jipprovdu l-isem tiegħi bħal David, reġistru, nieqsa numru OK li let jipprovdu li, wisq. 617-555-1212. Reġistru. OK. Allura kollox huwa tajjeb issa, biss xejn interessanti li qed jiġri. Allura issa ejja jagħmlu xi ħaġa aktar interessanti jiġri bħal dan. Let me go fis phpMyAdmin, u ejja attwalment joħolqu tabella msejħa utenti, Jien ser tagħtiha tlieta kolonni, u jien ser malajr joħolqu ID, u mbagħad isem, u mbagħad numru, u l-qasam ID jien ser jitilqu bħala int. Il-qasam isem jien ser li jħallu bħala varchar, u aħna ser ngħidu 64, kemmxejn arbitrarju. In-numru Jien ser biex tagħmel, inti taf liema? Aħna qed tmur fis appoġġ numri Amerikani hawn, hekk jien se jagħmlu xi ħaġa bħall char u mbagħad 10 karattri max għal kodiċi taż-żona u mbagħad seba numri. U mbagħad minn hawn, jien ser tispeċifika inkrement auto f'dan il-qasam, jagħmlu dan kodiċi primarju, u Jien ser jimxi 'l quddiem u mhux check kwalunkwe minn dawn il-kaxxi l-oħra. Allura meta I issa finalment ikklikkja Save, u mmur lura għall-utenti tiegħi, dan huwa dak li jidher qisu jekk I issa ikklikkja struttura ġdida Tab. Allura dan, li jkun ċar, huwa biss mod phpMyAdmin ta ta 'tgħid tabella database tiegħek għandha ID, isem, u numru ma 'dawk il-konfigurazzjonijiet partikolari u aħna ser jinjora l-bqija tal-oqsma hemm għal issa. Allura issa dak li nixtieq do? Hekk jekk immur issa fis tiegħi kodiċi tas-sors, jekk kollox huwa tajjeb Irrid li tesegwixxi l-mistoqsija li ġejja. Daħħal in, u nista 'biss jgħidu utenti jien ma strettament bżonn dawk back-qurdien jekk huwa mhijiex kelma perikolużi bħal utenti. Jien se ngħid isem, numru, u allura hawnhekk jien mhux se kodiċi iebsa l- ċifri tal-valuri għadhom. Jien ser tpoġġi żewġ trade marks in kwistjoni. U dan hija konvenzjoni f'ħafna lingwi li biha jekk inti tixtieq li jkollok placeholder għal string int ser tuża l-kwistjoni marki, għal raġunijiet Aħna ser terga 'lura għal chat dwar sigurtà, u hawn Jien ser jgħaddu f'dawk iż-żewġ oqsma post isem, u mbagħad wara numru, u issa tiffranka l-fajl. U issa jien ser jinżlu hawnhekk huwa super sempliċement jgħidu rendersuccess.php, li se tkun template ieħor. Jien ser toħloq verament mgħaġġel. Geditsuccess.php u jien biss jmorru li jgħidu suċċess H1 f'dak il-fajl. Kull dritt. Allura issa, ejja jmorru lura għall- browser, fejn I miżjura qabel. Ejja imorru quddiem u jikkonfermaw I kiteb fl David, I kiteb fl-numru tat-telefon, reġistru. Kkritikat dan. What did I do wrong? Hekk jien jaraw żball hawn, inti għandek żball fil-sintassi SQL tiegħek. Let me jaqbżu lura lill gedit, let me jmorru lura għall register.php, u dak ma I tħalli barra li kien l-aħħar darba importanti? I bżonn dan. Inti trid tkun taf li minbarra minn li ndunat qabel, iżda I bżonn dan. Allura issa ejja mmorru lura, u dan kien utli biex tara fil-browser u hu għalhekk li fl config.php aħna bżiq out żbalji. Ejja imorru quddiem u rikarigu, ikklikkja Kompli, is-suċċess. Allura issa let me jmorru fuq biex tiegħi database hawn u kklikkja fuq l-utenti, u jibbrawżjaw, u l-avviż I issa jkollhom David fid-database tiegħi hawn. Issa teknikament din il-websajt huwa li għadha ma ġietx fuq l-internet pubbliku, so I ma jista 'jkollhom l-oħra nies fil-tqegħid hawn, imma jekk jien issa riedu, għal eżempju, tibgħat lili nnifsi messaġġ test. Ejja jmorru fuq parti hawn u ara jekk dan attwalment xogħlijiet. Jien ser jimxi 'l quddiem u ħassar dan ringiela u aħna ser ċċajpar dan fl-video aktar tard hekk aħna ma jkollhomx il- internet kollu SMSs lili, u aħna issa se jitla 'sa l- browser u aħna ser jmorru fuq għal taħdita u aħna ser tip fil differenti Numru hawnhekk, jirreġistraw, is-suċċess. Allura issa, numru tiegħi stess preżumibbilment database, u issa l-parti gost. Ejja attwalment jużaw PHP biex tagħmel xi ħaġa programmatically, jew mill-kmand linja jew minn x'imkien ieħor, u għal issa jien biss se jżommha sempliċi u jien se jmorru fil tiegħi direttorju hawn u jagħmlu dan li ġej. Iskrittura gedit ejja ngħidu, aħna ser sejħa hija test, #! / utent / PHP bin / ENV, bħal rajna aħħar darba. PHP. Issa jien ser ma jkunux jeħtieġu jinkludi config.php, anki jekk dan jista ' jinduċi żball żgħir. U issa jien ser jimxi 'l quddiem u jgħidu ringieli, query, star tagħżel mill-utenti, u issa hawn jien se jagħmlu teknika mill-aħħar darba għal kull ringieli kif filliera. U jien se jagħmlu xi ħaġa sempliċi. Printf ejja ngħidu isem huwa dan, u n-numru huwa dan, backslash n. U issa jien ser jgħaddu ringiela nikkwota isem unquote, u n-numru ringiela unquote kwotazzjoni, u issa ejja imorru quddiem u tieqa terminal tiegħi chmod dan a + x biex jagħmlu din l-iskrittura imsejħa eżekutibbli test. U issa ejja run test. OK, hekk progress. Hekk stajt issa miktub linja tal-kmand iskrittura, f'lingwa imsejjaħ PHP, li, minħabba li jeħtieġu linja, għandu aċċess għal dawk kollha konfigurazzjoni kostanti li I speċifikati. L-isem tad-database u ibqa 'sejjer hekk. Fil-fatt, biss biex tkun ċara li dan mhux fluke, let me imorru quddiem u jirreġistraw, verament mgħaġġel, xi ħadd ieħor bħal Rob u se jagħtih l-għadd 555-1212. U issa, jekk I run-iskrittura għal darb'oħra, avviż-qawwa ta 'dak li aħna qed jagħmlu mal-database. Issa stajt immedjatament raw dak li l- żewġ ringieli oħra huma fid-database tiegħi. Allura issa ejja jipprova jagħmel xi ħaġa anki fancier ġewwa ta ', u dan huwa l-parti konna mhux ittestjati bil-quddiem, hekk l-aħħar darba I ma 'dan affarijiet marru horribly awry, għandna video għal dan l-effett. Attwalment, yeah, umoristiċi aside. Allura l-aħħar darba, fil- lecture bħal sentejn ilu, aħna iddeċieda, I iddeċieda, li jkun dan kollu tkun idea kbira li dinamikament jiġġeneraw emails fil klassi, bl-użu CS50 database kollu istudenti, li kien mogħti lilna n-numri tagħhom u t-trasportaturi cellphone tagħhom li inti jista recall minn pset0, kif raġuni, jirriżulta I kellhom bug minuri fil-programm tiegħi u għamlet żbalji koppja fl-2012, I think. Li biha, wieħed kelli għal loop li għamlet eżattament dan it-tip ta 'ħaġa, mtennija fuq l-database, jkollna isem mid-database, isem mid-database, u mbagħad fuq kull iterazzjoni ta 'dak loop I bagħtet email. Iżda minflok jibgħatu email wieħed, I bagħat wieħed email l-ewwel iterazzjoni, u żewġ emails tieni iterazzjoni, mibgħuta tliet emails tieni iterazzjoni, li kif inti tista 'recall minn tagħna diskussjoni ta 'notazzjoni asintotika din O big bad, bħal n kwadrat huwa kif ħafna messaġġi I mibgħuta, iżda ma kienx anke emails kien messaġġi. U kif tafu, attendenza mhuwiex għolja super lejn it-tmiem tal-semestru u so I had ħelu fil il-ħin li jgħidu, "Għaliex mhumiex inti klassi?" Fil-messaġġ test I mibgħuta lill-klassi kollha, u kien umoristiċi li tixtieq 50% tal- klassi, iżda l-oħra ta '50%, li wħud minnhom freaked, I bagħtet oerhört noti ħelu apologetic għall-persunal apologizing għal wara li tilef l-lecture biss dan darba, id-dritt? Allura li kieku horribly awry. Għalhekk fl-ispirtu, ejja ipprova din darb'oħra iżda biss bin-numru tiegħi. Minn qabel, b'mod functions.php, Stajt bil-miktub din il-funzjoni hawn. Huwa sejjaħ test, u jieħu fi tliet argumenti. A numru, trasportatur, u messaġġ. Jien jużaw dikjarazzjoni swiċċ, li wonderfully PHP tieħu kordi, mhux biss interi, u jien ma implimentatx l-appoġġ kollu għal dan suġġett s'issa, Stajt biss għamlu AT & T u Verizon. Għaliex jirriżulta li ma 'dawn it-trasportaturi huma għandhom email biex gateways SMS, fejn inti tista 'attwalment ibgħat email lill-indirizz bħal numru tat-telefon fuq vtext.com u jekk l-utent ma jkunx imblukkat il-messaġġi, dan ser jgħaddu huwa messaġġ b'test. Issa biex tagħmel dan, jien ser ikollhom iżidu qasam wieħed verament mgħaġġel għad-database tiegħi. Jien se jmorru fil istruttura tiegħi, u jien se jmorru 'l quddiem u żid qasam fl-aħħar tat-tabella. Ejja ikklikkja Go, u jien ser sejħa dan it-trasportatur u għal issa jien ser jħallu dan bħala test bar, iżda nistgħu nkunu fancier fil-futur. Jien se jmorru malajr fis mejda tiegħi, u jien se jeħles Rob, għaliex thats numru foloz, Jien se jmorru fil jeditjaw hawn u jien se jibdlu trasportatur tiegħi manwalment li jkun Verizon, li hija, u issa hawn. Ejja tagħmel verifika sanità malajr. Ejja jiftħu iskrittura test tagħna, li tidher bħal dan, trasportatur huwa% s. Li aħna qed tagħmel żball ħafna aktar verifika minn I ma fl-2012, trasportatur. U issa, jien se jmorru quddiem u mill-ġdid għaddi l-iskrittura. OK. Trasportatur huwa Verizon, li jfisser issa nisperaw I tista 'tagħmel dan. Korrett din is-sena, nisperaw, here we go. Allura ġewwa ta 'dan għal loop, jien ser mhux biss ikollhom dan printf, Jien ukoll ser sejħa test u l-użu ta 'dan recall funzjoni kien li tieħu numru, a trasportatur, u messaġġ. Mela ejja ara, numru se jkun ringiela quote unquote "numru," ringiela kwotazzjoni unquote "trasportatur," u l-aħħar wieħed kien messaġġ. Ma screw up din is-sena, punto virgola. OK. Swaba qasmu. Ejja naraw jekk dan jaħdem. Kull dritt, hekk. Here we go. Ejja nisfruttaw-telefon, cross fingers tiegħek, kkritikat dan. May-- varjabbli undefined oh stenna, stenna, stenna, reali fast. Real fast, reali fast. Dan huwa totalment worth it. Let me grab, let me grab, UH-oh. Nirringrazzjak, it-testi jkollhom beda minn xi ħadd ieħor. Let me imorru quddiem u tiftaħ reali fast, dropbox.php / posta fil hawn. Standby. Totalment worth it. Downloads. OK, src8m sors. OK. Bżonn wieħed linja aktar hawn. Oh hemm hu, huwa fil Frosh IMs, huwa fir reġistru fl tlieta. Oh hello, Margo, nirringrazzjak ħafna. OK, u I kienet nieqsa din il-linja hawn. So let me malajr grab din il-linja tal-kodiċi, li tinkludi l-posta jew il-librerija li I attwalment tixtieq li tuża, Jien ser malajr jmorru lura fis-funzjonijiet, Jien ser tmur għall-quċċata ta 'din fajl u jeħtieġu dan il-fajl kif ukoll, u issa jien ser verament jaqsmu tiegħi swaba meta I jmorru lura għall-kmand linja iskrittura, li huwa ġewwa ta ' direttorju ospitanti lokali lum. Test run. Ikteb. Mail. Standby. Standby. Mail. Oh, OK. Here we go. Mail gets mailer PHP ġdid. Ma nagħmel dan id-dritt? Kkritikat dan. To-- oh, stenna, stenna, stenna. Stand by. I wegħda, dan huwa se jkun hekk worth it. Indirizz. Dan huwa għaliex I ma jagħmlu l- Eżempji dritt qabel klassi. Ugh. Ir-riċevituri li ġejjin fallew. Ejja nippruvaw aħħar ħaġa waħda. SMTP stabbiliti minn, żid l-indirizz, l-indirizz huwa tabilħaqq dak. Ejja nippruvaw dan l-aħħar sehem indirizz. Aw, Ninsab verament imdejjaq dritt issa. Grazzi. Imma jien verament japprezzaw kollha it-testi inti kont qed jibgħat. You ħadthom ltqajna dan David. Inti blowing dan. Ejja ħalliha hemm u aħna se jiffissaw nhar it-Tnejn. Ara inti mbagħad. DAVEN FARNHAM: U issa Deep Ħsibijiet mill Daven Farnham. Jekk siġra binarju jaqa fil-foresti u ebda wieħed huwa madwar biex Ċ [chuckling] it--.