[Powered by Google Translate] [8 nedēļa, Turpinājums] [David J. Malan] [Hārvarda] [Tas ir CS50.] [CS50.TV] Tas ir CS50, tāpēc šī ir beigas 8 nedēļa šeit. Mums, protams, bija mazliet viesuļvētra šonedēļ, tāpēc tagad tas patiešām ir tikai tu un es šajā lekciju zālē, bet šodien mēs turpinām mūsu saruna par PHP un par web programmēšanas vispār, kā mēs arī ieviest ideju datubāzu, īpaši viens sauc MySQL, kas ir diezgan populārs šajās dienās, lielā mērā tāpēc tās mērogojamību, kā arī tāpēc, ka tā pagaidām bezmaksas un atvērtā koda. Bet vispirms, apskatīt, kur mēs left off pēdējo reizi. Atgādina, ka mēs meklējām pie vairākiem Frosh IMS piemēriem, un tas bija pretīgs forma, kas man nāca klajā ar apmēram 15 + gadiem lai būtu skolēnus par Campus reģistrā par pirmkursnieks klātienes sporta bez faktiski pārgājiens vairs pāri pagalmam uz Wigglesworth slīdēt fizisko papīra zem daži Proctor durvīm. Tā vietā mēs pārcēlās visu tiešsaistē, bet darīt, ka mums vajadzēja izmantot no dažām tehnoloģijām, tāpēc viens, mums vajadzēja HTML, hiperteksta iezīmēšanas valoda, kas atkal ir šis iezīmēšanas valoda, ar kuru jūs veicat interneta lapas strukturāli. Izmantojot mazliet CSS šajās dienās, kaskādes stila lapas, kad mēs izmantojam stilizācijas no tīmekļa lapas, izmantojot nedaudz atšķirīgu sintaksi, tā kā HTML viss bija par savu struktūru. Mums arī ir nepieciešams ieviest tīmekļa programmēšanas valodu. Šajā gadījumā, mēs izmantot PHP un PHP gatavojas ļaut mums dinamiski izejas saturu, kā arī darīt programmatiskās lietas, piemēram nosūtot e-pastus, kā tas bija gadījumā uz piezīmi mēs atstājām pagājušajā nedēļā. Atgādināt, ka attiecībā uz šo kodu bija 2 daļās. Viens, mums bija froshims3.php, un tas lielā mērā bija iezīmēšanas ar HTML formu iekšpusē no tā, niecīga mazliet CSS šeit stilā atribūti lai forma pati būtu vērsta uz lapu, bet tālāk, ka Mums bija dažas reprezentatīvas forma ieejas, teksta lauks, rūtiņas, Daži radio pogas, izvēlieties izvēlni, un pogas Iesniegt. Un, izmantojot šo veidlapu, mēs iesniedzām uz failu, kas acīmredzot bija sauc register3.php, kas pats par sevi izskatījās mazliet kaut kas līdzīgs šim. Tagad lielākā daļa no koda register3.php, atceros, bija visu par pastu. Tas bija mazliet atzīšana par formu, kas tika iesniegts, lai pārliecinātos ka lauki tika faktiski sniedz kas tika gaidīts. Tad mēs sauc dažas PHP funkcijas, izmantojot nedaudz jaunās sintakses, pat ja tas ir aizgūts no C. Tas bultu operators ļauj izmantot kaut ko sauc objektorientētā programmēšanā. Mēs neiešu, ka jebkurā detalizēti šeit, bet zinu tagad tas ir veids, kam funkcijas, kas saistītas ar priekšmetiem, kas ir īpaša veida struktūra, kā mēs redzējām C. Bet tagad, tikai pieņemt ticībā, ka tas ir pareizs sintakse izmantot ja izmanto bibliotēku, piemēram, šo PHPMailer bibliotēkā. Un tad gada beigās šo failu mēs bijām dinamiski radīts-pastu kas ieguva nosūtīts uz manu jharvard@cs50.net kontā no mana jharvard@cs50.net konta, un mēs informēja lietotājam attiecīgi, ka tās bija reģistrētas šajā sporta veidā. Tas ir diezgan daudz, ko Frosh IP vietā darīja visus šos gadiem kad es to īstenoja, kas piešķirts, citā valodā, bet tas parāda, varbūt varu, kas jums ir tagad, ka jūs varat izteikt sevi ne tikai programmatiski pie zema līmeņa valodā, piemēram, C, bet daudz augstākā līmenī ar šiem ļoti reālās pasaules pieteikumus, piemēram e-pastu uz faktiski atrisinātu dažas reālās pasaules problēmas. Tagad, protams, lai gan es izmantot šo skriptu, lai radītu dažus e-pastus dinamiski no jharvard@cs50.net, kas ir patiešām konts ka man ir pieeja, tie ir diezgan uzmanīgi, lai nosūtītu pastu tikai no kontiem, kas ir faktiski jūsu pašu, citādi lietas iegūt jums mazliet karsta ūdens dzīvē. Ar to teica, pieņemsim tagad pāreja uz risināšanai cita problēma vispār, ka ir svarīgi saglabāt valstīm. Tagad, ko tas patiesībā nozīmē? HTTP, tas hiperteksta pārsūtīšanas protokols, faktiski bezvalstnieks protokolu, un ko tas nozīmē, ka kad jūs uzvilkt kaut ko līdzīgu Google.com tad hit ienākt Parasti jūsu pārlūkam ir sava veida vērpšanas ikonas, kas pēc tam rezultāti dažās mājas lapā tiek lejupielādēti, un tad, ka maz ikona apstājas vērpšanai, un ka patiešām iesaka ka HTTP ir pabeigusi sava veida savienojumu ar serveri, un tas arī viss. HTTP ir bezvalstnieks, kas nozīmē, ka tā neuztur pastāvīgs savienojums ar serveri tādā pašā veidā Skype dara vai Gchat nav, jo ar HTTP pieņēmums ir, ka tad, kad jūs esat atnesa mājas lapu, kas ir tā. Tagad, patiesībā šīs dienas vietnēs, piemēram, Facebook un Google Maps un Twitter un kā tur ir daudz vairāk dinamisms kuru pat pēc šī ikona apstājas vērpšanai jūs varat faktiski iegūtu vairāk atjauninājumus no servera, vairāk tweets, vairāk statusa atjauninājumus par Facebook un tamlīdzīgi. Bet pat tas ir, izmantojot metodi, kas mēs runājam par nedēļu vai divām pazīstams kā Ajax, izmantojot valodu sauc JavaScript, bet beigās, dienā, HTTP joprojām bezvalstnieki. Un vēl, ja jūs vēlaties, lai kaut kā atcerēties lietas par lietotāju pat pēc to esmu atvienots no servera PHP nav atļauties jūs līdzekļus darot jo, kā mēs redzējām pēdējo reizi, PHP ir vairākas superglobals, un superglobal ir, atkal, īpašu globālo mainīgo kas ir nodots jums ar web serveri un PHP pati. Jums nav jādara nekas, lai vērtības tajā, un starp superglobals mēs esam redzējuši līdz šim, ir iegūt un pēc, kas ir, ja lauki tiks likts automātiski jums, kā arī pāris citiem, ka mēs neesam redzējuši vēl. Iekšpusē $ _SERVER ir dažas īpašas mainīgie, kas saistīti ar servera pati. Kas IP adrese, ko protokols, HTTP vai HTTPS jūs izmantojat, Ko pieprasījuma metodi jūs izmantojat, un tamlīdzīgi, tāpēc tur ir dažas interesantas, sulīgs ziņas par serveri, un patiesībā, tur lietotājs, kā arī. Tur $ _COOKIE, kas ir, ja šīs lietas sauc sīkdatnes tiek glabāti. Mēs ne tērēt laiku uz cookies sevi šodien, bet zinu tagad, ka cookie ir tikai neliela daļa no informācijas ka web serveri var stādīt uz tīmekļa pārlūkprogrammu un savukārt tās RAM vai savas datora cietā diska uzglabāt informāciju par lietotāju, piemēram, savu lietotāja vārdu lai tie nav ierakstiet to katru reizi tie ienāk vai kādu unikālais numurs vai par šo lietotāja identifikatoru tā, ka jums nav, lai apgrūtināt tos ar tādus pašus jautājumus par preferences nākotnē, bet lielākā daļa no interešu tiesības tagad ir $ _SESSION. Šis superglobal, kas, tāpat kā citiem, ir nodota jums automātiski PHP , rakstot PHP balstītas mājas var glabāt kaut ko vēlaties, stīgas, integers, peldošas punktiem, vērtības, masīvi objekti, tiešām kaut ko vēlaties, un tas ļauj jums saglabāt to tādā veidā ka pat tad, ja lietotājs apmeklē jūs tagad un tad nāk atpakaļ minūti no šī brīža vai 5 minūtes no tagad, jo tās veic savu laiku pirms noklikšķinot kādu citu saites PHP nodrošinātu, ka neatkarīgi jūs nodot šo sesija superglobal Pēc minūtes vai 5 minūtēm joprojām būs tur, kad lietotājs atgriežas. Un zem motora pārsega šis superglobal īsteno ceļā šīs lietas sauc sīkfailus, bet tagad, tas ir tikai abstrakcija ar ko tā ir sava veida programmatisko ekvivalenta iepirkumu grozam. Neatkarīgi no jums, programmētājs, nodot, ka superglobal asociatīvā masīva būs tur daži skaits minūtes vēlāk līdz dzēst to, vai līdz lietotājs aizveras savu pārlūkprogrammu pavisam. Pieņemsim apskatīt, piemēram, kā šī lieta faktiski tiek izmantots. Jo counter.php Starp šodienas gabalu koda mums ir šādu līniju. Sākumā šo failu mēs esam ķekars zilā komentāriem, kas ir neinteresanti tagad. Bet 13 līnijā mums ir jauna līnija, session_start, un kas faktiski dara tieši to, ko tā saka. Tā sākas sesijas. Tas ļauj izmantot ka liels superglobal $ _SESSION, un tas ir tik vienkārši. Tagad, ja mēs turpinātu skatīties pie 16 līnija, pieņemsim mēģināt izdomāt, ko šī tīmekļa lapa ir gatavojas darīt. Ja (isset ($ _SESSION ["skaitītājs"]), tad iet uz priekšu un veikals counter mainīgo, mazie skaitītājs, $ _SESSION ["Skaitītājs"]. Šī, šķiet, ir atzīta par vietējo mainīgo sauc skaitītājs iekšā kas tas liekot kopiju kāds ir iekšā superglobal aicināja sesija vietas "letes". Cits, acīmredzot, tas maz vietējo mainīgais skaitītājs, ir inicializēts līdz 0. Bet tad dažas rindiņas vēlāk 26 paziņojumā ka sesija eksemplārs no letes, tā atslēga, ir jauna piešķirtā vērtība, kas ir tās pašreizējā vērtība plus 1. Īsāk sakot, šis fails šķiet atjaunināšanu skaitītājs, kas glabājas iekšpusē sesijas superglobal pēc palielināšanai to ar 1, bet tā vispirms saglabā kopiju iepriekšējā vērtība , saglabājot to vietējo mainīgo sauc $ skaitītājs, un tad uz leju šeit redzēsim, ko vēl. Izrādās, tā ir diezgan daudz tikai HTML. Pēc šīs lapas apakšā mēs redzēt 37 līnija, kas Es esmu apmeklējis šo vietni skaitītājs vairākas reizes, tāpēc tur ir pāris interesantas iezīmes šeit. Viens, tas ir acīmredzami mainīgs, taču tas nav pietiekami, lai tikai likt $ Skaitītājs organismā jūsu HTML, jo, protams ja tas ir tikai tur, starp jūsu HTML PHP gatavojas pieņemt, ka ir tikai HTML. Jūs burtiski vēlaties $ skaitītājs, lai iespiež uz ekrāna. Bet tā vietā krītot uz PHP režīma ar šo gabals sintaksē mēs varam dinamiski ievietot vērtība šeit ļoti līdzīga garu, ko mēs darījām iepriekšējā reizē ar Ievietojot vērtības uz stīgām. Faktiski, tas ir tikai stenogrāfija nošu sakot kaut kas līdzīgs šim burtiski, print ($ skaitītājs), vai pat, piemēram printf (% s, letes) kaut ko, vai pat, kā jūs varētu būt redzējis tiešsaistē vai mācību grāmatās, tur PHP funkcija sauc atbalss kas nav tas pats, un visi no tiem ir vienkārši vairs aizdusu veidi , sakot <=.? Šajā vienā gadījumā jums nav nepieciešams, lai vārdu PHP pēc jautājuma zīmes. Tas ir saīsinājums nošu, atkal, ko mēs tikko redzējām pirms brīža kas atbalsojoties kādu vērtību. Paskatīsimies, ko gala rezultāts ir tas patiesībā ir. Ļaujiet man iet pār mūsu counter.php failā, un mēs redzam, ka Deivids tikko kļūdījies, spēlējot ar kodu tur. Iesim noteikt kāds viņš ieskrūvē augšu, un kļūda, šķiet, ir tur, aizgāja, par 37 rindā. Saskaņā ar šīs lapas augšpusē Es esmu apmeklējis šo saitu 0 reizes. Nu, iesim uz priekšu tagad, un augšpusē pārlūku noklikšķiniet uz papildināšanas ikonu, un es noklikšķiniet papildināšanas, un tagad es esmu apmeklējis vietnes 1 reizi, 2, 3, 4, 5, 6, 7, 8. Un tiešām, ja mēs skatāmies uz avotu šīs lapas faktiskais pirmkods mainās, un paziņojums pilnībā nav PHP, un tas ir tāpēc, PHP kods tiek vērtēta vai interpretē servera pusē, un lai tas nozīmē, ka PHP skriptu izejas ir tas, ko galu galā nosūtīts pārlūku, kas šajā gadījumā ir daži neapstrādātu HTML un dažas neapstrādāta teksta. Kas šeit notiek? Nu, ar salīdzinoši dažas rindiņas kodu es esmu spējīgs uzglabāt neatlaidīgi gaitā vairākas sekundes, vai arī ja mēs gaidījām pietiekami ilgi, minūtes, pat stundas, dažas vērtības tādā veidā, kas padara HTTP Šķiet konekcijas stāvokļa parametriem bāzēts, it kā mēs esam saglabāti Tas savienojums ar serveri, un tas ir tikai atcerēties to, ko es teicu to pēdējo reizi, bet patiesībā tur ir viss sarežģītības ķekars notiek zem pārsega iesaistot sīkdatnes, kas ir ļauj PHP man šo ilūziju Šīs iepirkumu grozā līdzīgu funkciju. Tagad, triviāls piemērs, kad mēs esam tikai glabāšanai skaitlim, bet iezīme nāks atpakaļ būs ļoti vērtīgas kad mēs sākam runāt par vairāk sarežģītu projektu, Starp tiem problēma noteikti 7. Tas ir jūsu ļoti pēdējā problēma noteikti CS50. Es zinu, tas ir tik skumji, bet tas, ko jūs atradīsiet, ka mēs spēsim noslēgt šī daļa no semestra ko faktiski pārejot no konteksta, C protams kontekstā ar PHP bet vienlaikus izmantojot dažus no pašiem pamatiem Mēs esam runājuši par kādu laiku. Ar 7 PSET mērķis ir īstenot CS50 Finance, kas ir jūsu pašu versiju Yahoo Finance vai Google Finance vai pat Etrade.com kurā jums ir spēja meklēt akciju cenas dotas simboliem, bet vēl vairāk nekā Jums ir iespēja "pirkt" un "pārdot" krājumi kas tiek tirgoti dažādi biržās, jo kā šajā mājas lapā šeit liecina, kas ir patiešām apmērs, kuru mēs esam sākuši problēma komplekts jums, jums ir login formu, kurā lūgts lietotāja vārdu un paroli. Tā ir iesniegt pogu, bet pēc tam, kā mēs beidzot redzēt, nekas īsti notiek zem motora pārsega vēl jo tā joprojām, lai jūs varētu īstenot spēju reģistrēt jaunus lietotājus, spēja iegādāties krājumus, pārdot krājumus, faktiski meklēt pašreizējās akciju cenas. Un tiešām, tas būs kā reālajā pasaulē, kā iespējams, jo mēs darījām ietver mazliet kodu, kas ļaus jums ar vienu funkciju vaicājumu Yahoo Finance, kas lieliski padara pieejamus bezmaksas datu meklē up akciju cenas, pamatojoties uz akciju simbolu vai svārsts simbols, un jūs saņemsiet atpakaļ pašreizējo akciju cenu dienā. Šie dati jūs faktiski redzēt šajā konkrētajā PSET būs apmēram tikpat reālajā pasaulē, jo tā var iegūt tā, ka jūs faktiski saskarsme ar reālās pasaules krājumiem, reālās pasaules cenām, un mēs redzēsim, cik daudz naudas jūs varat darīt varbūt pār tuvāko dienu laikā, spēlējot ar savu problēmu kopumu. Bet pieņemsim vispirms noteikts posms, kā veidot kaut ko, kas noteikti daudz sarežģītāka nekā counter.php, kas ir daudz sarežģītāka nekā jebkurš no Frosh ARS piemēriem līdz šim, un pieņemsim mēģināt ieviest dažas paradigmas šeit, kas ļauj mums gan par 7 PSET un varbūt savu galīgo projektu, ja jūs kaut ko darīt, balstoties web lai saglabātu savu kodu labi organizēta, lai saglabātu sev normāls, un spert soli pretī sadarbību, gan CS50 galīgajā projektu vai aiz ja jūs turpināt, lai programma kaut ko nākotnē. Tur tas ir vispārējs dizains paradigma datorzinātnēs un programmatūras izstrādes kopumā pazīstams kā MVC, modelis skats kontrolieris, un tas ir muļķīgi akronīms, kas raksturo ļoti jauka ideja, kas ir atdalīšana dažādiem aspektiem programmas, īpaši saglabājot atsevišķu loģika vai biznesa loģika, mājas lapā tā, ka jebkas, kas saistīts lietas, piemēram, zvana funkciju un vaicājumiem datu bāzes un līdzīgi notiek nav starp jūsu HTML bet atsevišķos failos, un, protams, tur ir tas viens fails parasti, ka esat sauc kontrolieris tas tiešām smadzenes aiz darbību, un mēs redzam piemēru Šī tikai brīdi. Tur modeli, kas ir programmēšana kodu kas dara to runāt ar jūsu datu bāzēm, kas runā ar Yahoo Finance un tamlīdzīgi, un tad tur ir arī MVC V viedokli, visi sīkumi, kas ir saistīts ar estētiku, faili, kas faktiski satur jūsu HTML, varbūt jūsu CSS un līdzīgi. Ideja, kā šī aina liecina, ka kontrolieris ir fails, kā mēs drīz redzēt, kā jūs īpaši redzēt 7 PSET, ka pasaule runā ar izmantojot savu tīmekļa pārlūkprogrammu. Tas ir fails, kas izpaužas apmeklēja publisko interneta, bet kontrolieris runā ar potenciāli modeli, kas ir viens vai vairāki citus failus, kas satur kodu, kas saistītas ar datiem, kods, kas saistīti ar datu bāzēm un tamlīdzīgi, un tad runā ar datu apstrādātāju vienu vai vairākiem citiem failus pazīstams kā viedokļiem, kas ir par mājas lapu estētika, šabloni veidu, kas varētu veikt dažus datus kā ievade, bet beigās, dienā vienīgais loģika iekšpusē mērķi būtu sniegšana šiem datiem, atkārtojot pa cilpu un faktiski spitting dažus HTML bāzes gūstekņus tās vai pat kaut kā PDF. Kas ir jauka par MVC ir tas, ka jums var būt dažādi viedokļi pamatojoties uz tipa ierīces, pamatojoties uz tipa faila formātā, kas jums faktiski vēlas, lai parādītu lietotājam. Pieņemsim to apskatīt dažas arvien vairāk sarežģītu un labi izstrādāta piemēriem , sākot vispirms ar versiju 0 Šeit. Ļaujiet man iet uz priekšu un atvērt mūsu MVC direktorijā šodien failu sauc index.php pieejama 0 direktorijā. Pamanīt tas ir super vienkāršs un ļoti underwhelming mājas Tas ir sava veida uz mājas 0 versiju par CS50, un paziņojums, kā mums ir saite uz Lekcijas, mums ir saikne ar mācību, un ja es sekot saiti uz lekcijām paziņojumu, ka URL līdz top gatavojas mainīt uz lectures.php. Ja es pēc tam sekojiet saitei, lai nedēļa 1 paziņojumu, ka URL izmaiņas week1.php. Šķiet, ka diezgan vienkāršs hierarhiskā struktūra šeit. Pieņemsim veikt ātri apskatīt zem motora pārsega, kā tas ir izklāstīts, un patiešām, ja es paskatos index.php tas ir diezgan vienkārši. Faktiski, lai gan es sauc šo PHP failu tur nav reāla programmēšanas kodu. Tur komentārs, ka es uzrakstīju šeit PHP tikai tāpēc lietotājam nav galu galā redzēt to. Protams, tāpat kā iepriekš, kaut kas ir starp PHP tagiem izpaužas interpretēt, pat ja tas ir komentārs, un interpretēt komentāru nozīmē tikai mest to prom beigās, dienā, un faktiski nav nosūtīt to uz pārlūku, tāpēc viss šeit ir tikai estētika. Ja es atvērt līdzīgi lectures.php tas arī ir tikai grūti kodētu failu. Tā notiek, ir kaut kas ko sauc. PHP, bet tas tiešām ir tikai. html, un week1.php, week2.php Tāpat ir tikai atzīmes, tāpēc tur ir nepilnības šo dizainu ķekars. Viens, tas ir milzīgs daudzums copy / paste. Kaut gan vienīgais, kas mainīsies no šiem failiem ir Nekārtots saraksts, Li tagus, es tomēr ir dok veidu, HTML, galvas, virsraksts, tuvu ķermeņa, netālu HTML un vairāk katrā atsevišķā failā, kas nozīmē, ka, ja es kādreiz gribu pārstrukturēt Šī tīmekļa lapa vai restylize to man iet un mainīt visi šie faili manuāli vai ar kādu masveida atrast un nomainīt. Paņemsim solis ir gudrāki, vairs domāt dizaina versijā 1 šeit kuru kā vienu lasīt man, ka mēs esam iekļāvuši, lai jūs varētu spēlēt kopā ar Tie vairāk nesteidzīgs mājās paziņojums, ka mēs esam šeit kopsavilkumu par failiem 1 versijā no šīs vietas, un šķiet, ka es esmu veikusi to uz sevi, lai faktors, kas dažas kopīgas kods, header.php un footer.php. Nu, pieņemsim apskatīt to, kas ir iekšā pirmais no tiem. Header.php izskatās pazīstams, bet paziņojums, ja tas nogriezta? Tiesības pēc 19 līnijas, tā ka viss, kas bija izplatīta no failiem index.php, lectures.php, week1 un no iepriekšējā piemēra week2.php. Ko es darīju bija kopija un sagriež viss, kas bija kopīgs visām šīm failiem, ielieciet to atsevišķā galvenes failu, un līdzīgi arī footer.php Vai es piemērot tādu pašu principu, kas paredz tikai interesantas līnijas kas footer.php ir šie divi, netālu ķermeņa un cieši HTML. Bet ko tas nozīmē tagad ir, ka jaunajā versijā gada index.php paziņojuma cik daudz vienkāršāka tā var iegūt. Piešķirts, nedaudz vairāk mistisks meklē, nedaudz mazāk intuitīvu sekot augšas uz apakšu, bet mans Dievs, visa šī atlaišana tagad ir pagājis. Mēs pieprasām, izmantojot PHP funkciju burtiski sauc prasa līdz top, kas ir ļoti atgādina, atgādināt, no C ir # ietvert mehānismu. Mēs pieprasām header.php augšpusē. Mēs pieprasām footer.php apakšā, un vienīgā lieta, kas ir atšķirīgs vai īpašu par šo failu ir saturs, kas ir domāts, lai būtu unikāls ar to. Ja es pēc tam iet, teiksim, lectures.php, pats princips attiecas. Atkal, daži pat augšas komentārus, bet tad man prasa header, prasa kājene un starp tas ir tikai saturs, kas patiesībā mainījies. Un, ja mēs ieskatījās nedēļa 1 un nedēļa 2 mēs gribētu redzēt ka pats princips būtu piemērots tur. Nu, mēs neesam gluži darīts tur. Pieņemsim to apskatīt 2 versiju, kas ir līdzīga struktūra, bet pamanīt tagad es esmu ieviesusi kaut ko citu. 10 Saskaņā es esmu ieviesusi helpers.php, kas acīmredzot ir palīgs funkcijas. Palīgs funkcija parasti samērā īss funkcija kas jums rakstīt, lai palīdzētu jums, kas dažādās vietās, un pieņemsim redzēt, kas ir iekšā no helpers.php. Šajā gadījumā izskatās, ka tas ir 2 funkcijas. Atgādināt no citu dienu ar mūsu kuba piemēru Jūs varat noteikt savu funkciju PHP, un ko es esmu darījusi tagad ir es esmu definētas funkcijas sauc padarītu kājeni un padarīt header, no kuriem pirmais notiek parametru sauc datus, kuru sākotnējā vērtība ir tukša masīvs, kā ierosināts tur, un mēs faktiski var rakstīt tas vēl kodolīgi jaunāko versiju PHP pasakot atvērto kvadrātiekavas, slēgta kvadrātiekavas. Tas nozīmē tukšu par 0 izmērs masīvu, bet tomēr masīva. Šis ekstrakts funkcija ir nedaudz īpašs ar to, ka kas tas ir nepieciešams, jo tās argumentu asociatīvā masīva kas ir 0 vai vairāki galvenie vērtību pārus, un, ja jums ir atslēga foo un vērtību joslā Izraksts funkcija rodas situācija, kas tagad, kā 11 līnijas, jums ir vietējās mainīgo sauc $ foo kuru vērtība ir bārs. Un, ja jums bija vairāk atslēgas un vērtības datu masīvs, Tāpat tie būs ekstrahē vietējā jomu vai nosaukums telpa, lai footer.php un pati ideja noteikti šeit, lai header.php piekļuvi šiem mainīgajiem. Faktiski, ļaujiet man atvērt atkal header.php un pievērst uzmanību tam, ko tagad tas izskatās šajā versijā. Nevis grūti kodēšanu CS50 par virsrakstu katru lapu pamanīt dinamisma, kas ir iespējams tagad. 5 Saskaņā es esmu atbalsojoties virsrakstu mainīgo, bet vispirms es esmu iet, ka nosaukums mainīgo funkciju sauc htmlspecialchars. Stulba nosaukumu funkciju, kamēr tā ir, bet tas tiešām dara to, ko tā saka. Tas tiek panākts, ka speciālās rakstzīmes virknē, kas ir izdoti, tiek pienācīgi izbēguši HTML. Tas ir faktiski izvairīties no kaut kā, ko sauc par Cross Site Scripting uzbrukums kad kāds var ļaunprātīgi vai nejauši injicēt savu HTML savā mājas lapā ar ielīmētu kādā veidā, piemēram, kaut kas jums nav gluži gaidījis, īpaši JavaScript kodu, kā mēs runājam par nedēļu vai diviem gadiem. Tas tagad header.php, tas ir viedoklis tādā ziņā, ka tā ļauj jums apskatīt estētiski saturu dažu datu kopas. Bet jo īpaši, tas veidni. Tas ir sava veida plānam tagad par to, ko mēs vēlamies no katras lapas galvenē izskatās, bet tur ir dažas dinamisma ka mēs vēlamies titula būtu dinamiski ievietota pamatojoties uz virsraksta mainīgā , kas tika iegūts, kad mēs sauc, atkal, apmetuma galvenes funkcija. Tagad, ja mēs paskatījās apmetuma kājeni, tur tiešām nav daudz izmantot šīs tiesības tagad jo footer.php tur nav dinamika whatsoever. Tur varētu būt, bet šobrīd tas ir grūti kodēta sarakstu no 2 tagiem, bet pati ideja attiecas, lai faktiski liecina kādēļ vai mēs tērēt laiku, kam apmetuma galveni un apmetuma kājenes funkcija? Ļaujiet man iet nevis tagad uz 3 versiju, un ar palīgiem 3 versiju es nolēmu to vienkāršot vēl vairāk. Ļaujiet man ir viena apmetuma funkcija. Man ir tas uzņemtu citu argumentu, šoreiz sauc veidni, kas ir domāts, lai būtu nosaukums veidnes, un tad es būs saķēdēt pārgalvīgi php ka mainīgās vērtības., un tad, ja tā eksistē foo.php, bar.php vai header.php un footer.php, tad es esmu gatavojas iet uz priekšu un iegūt mainīgās datus un tad prasa šo ceļu. Citiem vārdiem sakot, lai izmantotu šo tagad, ja es atvērt index.php ievēroju, ka man nav aicinu apmetuma header vairs. Es tikai aicinu padarīt, bet es iet ar citētajā vērtībā header lai būtu skaidrs, kuru paraugu es tiešām gribu, lai slodze. Tad nekā šeit pamanīt to, ko es daru. Es esmu dodas, dinamiski atslēgu īpašumtiesību, vērtību CS50, un tas arī, kā mēs redzējām iepriekš, varētu būt vairāk kodolīga ar jaunāko versiju PHP kur es varētu aizstāt masīvs funkcija ar kvadrātiekavās, ko es ierosinu ir vēl lasāms un noteikti mazliet vieglāk rakstīt. Un, protams, ar apmetuma kājenes zvanu apakšā, mums nav apnikt iet ar otro argumentu vispār, ne asociatīvais masīvs, jo tur nekas dinamisks iekšā šī kājeni. Tas ir tikai daži tuvi tagus HTML. Labi, mēs esam ņemot soļus tiešām tīrīšanas lietas šeit, bet ļaujiet man atvērt 2 galīgais piemērus. Tas viens, skaitlis 4, paziņojums, ka es esmu izdarījusi apzināti tagad uzlabot uz iepriekšējo piemēram, beidzot izmantojot dažus hierarhiju ar failiem. Ievērojiet, ka šajā kopsavilkumā, jo tas lasa mani, es esmu ieviesusi ietver direktoriju un veidnes direktoriju , kuru saturs ir būs lietas, es gribu, lai iekļautu un veidnes, kas es gribu sniegt, attiecīgi. Tas ir tiešām mani ir anālais un cenšas, lai saglabātu lietas sakārtot, glabāt saistītos failus kopā, bet gala rezultāts ir tas, ka mums tagad ir nedaudz tidier iestatīšanu, bet mums ir jāatceras tagad jo, piemēram, index.php kad mums ir nepieciešama failu helpers.php mums ir tagad pieprasa to, izmantojot includes / helpers.php nevis tikai pasakot helpers.php jo tagad tas tiešām ir sub direktorijā. Tagad, kā malā, jūs redzēsiet šos piemērus un daži citi funkcijas, piemēram, pieprasīt, prasīt vienu reizi. Tur tiešām funkcija pati sauc iekļaut, un viņi visi ir nedaudz atšķirīga uzvedību. Šeit es saku pieprasīt vienu reizi, lai padarītu super skaidrs, ka es tikai gribu tos palīgi iekļauti manu projektu vienreiz. Bet, ja es esmu uzmanīgs un, ja es esmu patiešām domāju caur manu loģiku pareizi To vajadzētu pietikt pārāk vienkārši pateikt prasīt līdz top tik ilgi, kā es nav nejauši nepieciešama to pašu failu citur. Faktiski, tas ir nedaudz efektīvāks veids, kā darīt lietas, tad, izmantojot prasa vienu reizi, tāpēc es ņemšu apdares to uz leju, lai tikai prasīt. Paņemsim vienu soli tālāk. Šis pēdējais piemērs tagad, 5 versijas, ir pat tīrāks mapi hierarhiju. Pamanīt to, ko es esmu darījusi šeit vienu lasīt man šajā gala versijā Tagad man ir mana HTML direktoriju, kas man bija visu šo laiku, bet iekšpusē tur tagad ir tikai index.php, lectures.php, week1.php un week2.php. The ietver katalogs tagad dzīvo līdzās HTML direktorijā, tāpēc tajā pašā līmenī kā brālis, lai runāt. Tāpēc nav Veidnes. Galvenais takeaway šeit ir es esmu ieviesusi mazliet vairāk struktūru, bet galvenais elements tagad ir tā, ka tikai failus kas nepieciešams, lai būtu interneta pieejamiem, publiski adresējamā ar URL uz publisko internetā ir manā HTML direktorijā. Tikmēr citi faili, helpers.php, footer.php, header.php, kas ir apstrīdami varbūt jutīgāka, varbūt palīgi faktiski ir dažas lietotājvārdus un paroles vai dažas intelektuālā īpašums raktuves, darbojas es tiešām nevēlos pasauli redzēt, pat ja nejauši. Tā ir laba prakse, lai saglabātu no valsts HTML direktorijā visiem dokumentiem, kas nav nepieciešams sevi publiski. Viss, kas Jums jādara šajā gadījumā, ja aplūko, piemēram, par HTML directory index.php fails, pamanīt mums vienkārši ir jābūt nedaudz uzmanīgiem, pieprasot vai pieprasīt reizi šo failu. Man vajag, lai vispirms darīt .. iet uz mātes direktorijā, tad do / includes / helpers.php nirt atpakaļ uz leju, lai iegūtu failu, kas man rūp. Visus jautājumus, tad par MVC vai šī salīdzinoši vienkāršs iemiesojums to? Un ļaujiet man skaidrs, ka mēs vērsta diezgan daudz par V šeit, uzskati un faktoringa no šīm veidnēm. Mēs esam īsti atšķirt M no C tikai yet. Patiesībā, tur tiešām nav M šeit, un pat mūsu C kontrolieris, nav īsti dara visu, ka daudz, bet jūs saņemsiet daudz vairāk iepazinušies ar abiem šiem 2 vēstules no MVC, vai drīzāk, jūs saņemsiet daudz vairāk pazīstams ar C jo MVC par problēmu kopumu 7, tāpēc tur ir vairāk, ka pie horizonta. Jautājumi? Tur tiešām neviens šeit. Labi, pieņemsim tagad pāriet uz otro un galīgo tēmu šodien. Tas ir ieviest datu bāzē. Līdz šajā punktā mums bija dažas iespējas datu glabāšanai. Mēs esam izmanto mainīgos. Atpakaļ mūsu C failu, I / O diskusija sākām izmantot teksta failus un izmantojot failus, piemēram fprintf, un tad mēs pat sākām runājam par CSV failus mazliet, komatiem atdalītas vērtības, tāpēc visi šie ļāva mums ir dati glabājas nu nav pastāvīgi vai nemitīgi. Bet pat CSVs nav īsti veicina meklēšanu un ievietojot un dzēšana. Tas patiešām ir tikai stulba teksta failu atdalītas ar komatiem rindu pēc rindas ar pa vienai rindai, tādēļ, ja jūs vēlaties, lai meklēt, ka fails vislabāk varat darīt, tiešām ir lineāra meklēt. Jums ir jāsāk augšpusē lietas, lasīt visu lieta, un meklēt kādu vērtību interesi. Ja jūs vēlaties ievietot to jums ir darīt to pašu, atkārtojot pār to un ievietojot noteiktā vietā, un patiesībā, jums ir darīt visu, kas meklē loģiku sevi. Jūs nevarat darīt gudrs modelis saskaņošanas ar CSV failā, ja vien tu pats uzrakstīt kodu. Jūs nevarat darīt filtrāciju CSV faila ja vien tu pats uzrakstīt kodu. Vai tas ir jauki, ja kāds cits nodot visas pūles lai faktiski padarītu meklēšanu viegli un ievietošanas viegli un dzēšanu un atjaunināšanu un tā tālāk? Tas ir tieši tas, ko datu bāze. SQL, strukturēta vaicājumu valoda, ir vēl viena valoda ka mēs ieviest šeit šodien, bet tas arī ir diezgan pieejamas, un ko mēs tiešām gatavojas darīt, ir tikai raut no tā dažus no visvairāk izvirzītajā īpašības, lai par 7 PSET, un, ja jūs kaut ko darīt, balstoties web, savu galīgo projektu, jums ir iespēja izteikt sevi attiecībā uz datu vaicājumiem. Jums ir iespēja saglabāt maz vai daudz datu jo daudz strukturētā veidā, kas būs beigās, dienā padarīt savu dzīvi vieglāku, jo ar SQL, jūs varat izteikt sevi daudz precīzāk, daudz metodiski lai saņemt atpakaļ kādu datu apakškopu no lielāka kopuma datu. Jūs varat domāt par datubāzē, jo šajā gadījumā, SQL datu bāzē, tiešām, piemēram, Excel vai numurus, ja tas ir izklājlapu, vai varbūt vairākas izklājlapas, un izklājlapu, protams, ir rindas un kolonnas, un tas ir tāpēc, SQL datu bāzes ir relāciju, relāciju tādā nozīmē ka tās uzglabā datus ziņā šo tabulu, rindas un kolonnas. Tie ir augstākas veiktspējas nekā kaut kā izklājlapu, un izklājlapu ir paredzēts izmantot cilvēku. Datubāze ir paredzēts izmantot ar programmētājs rakstot kodu pret to, tāpēc iemiesojums datubāzes būs vai nu komandrindas. Viens no populārākajiem relāciju datubāzēm, kas tur ir, atkal, MySQL kas ir lieliski bezmaksas, ļoti jaudīga, un tas ir tas, ko Facebook lieto ļoti agri un zināmā mērā vēl šodien uzglabāt daudz tās datiem, un mēs redzēsim pēc brīža ka, izmantojot salīdzinoši vienkāršus komandas mēs varam izvēlēties datus, ievietotu datus, atjaunināt datus, dzēst datus un tamlīdzīgi, bet par laimi, tur ir vairāk lietotājam draudzīgs interfeiss nekā tikai rakstīt pie melnā un baltā prompt šeit. Mēs izmantosim par 7 PSET un aiz bezmaksas rīks sauc phpMyAdmin. Nosaukums ir nejaušs. Līdzeklis notiek īstenot PHP, bet tas ir būtiski svarīgs. Kas ir noderīgi par phpMyAdmin, ka tas ir tīmekļa lietderība. Mēs esam iepriekš instalēta to ierīci jums, un līdz ar to jūs varat izveidot tabulas datu bāzē, Jūs varat ievietot datus, dzēst datus un vispār redzēt Jūsu dati diezgan lietotājam draudzīgu vidi. Lietotājiem nav gatavojas izmantot phpMyAdmin. Tas ir patiešām vienkārši administratīvu vai izstrādātāja rīku ar ko redzēt un kule ap jūsu datiem un izdomāt, kā to iekārtot, daudz, kā jūs pats varētu izmantot Excel vai numuri, bet tas būs lielisks veids, kā vizualizēt to, kas notiek zem pārsega lai jūs varētu koncentrēties uz interesantu problēmu risināšanas un ne tik daudz uz mistiskā komandas. Pieņemsim to apskatīt piemēru datu, kas varētu tikt uzglabāti tabularly kas relāciju datu bāzē. Lūk, viens šāds piemērs. Tagad, diemžēl, phpMyAdmin kļūdījusies uz pusi mešanas veidā pārāk daudz vārdu un grafikas pie jums, bet, ja jūs asināt tikai par ID kolonna, lietotāja vārds kolonna un hash kolonna, Tas ir efektīvi izklājlapu, bet tas notiek, ir fragments no tabulas iekšpusē ierīces izmantojot failu, mēs nodrošinām Jūs ar problēmu kopumu 7. Jo īpaši, mēs jums failu, kas pārstāv bija lietotāja galda, tāpēc izklājlapu satur lietotājus ar 3 kolonnām, no kuriem viens ir unikāls ID sākas ar 1 un tiek palielināts pēc tam. Otrajā ailē ir lietotāja vārds, un tiem no jums, kas bija Hacker, Hakeru izdevums par 2 PSET, varētu atpazīt dažus no šiem lietotāju nosaukumus vismaz. No labajā pusē ir paroles, bet viņi nav burtiski paroles. Viņi hashes pantu, tāpēc izrādās ka uzglabājot paroles datu bāzē ir ļoti slikta ideja. Jūs visi esat iespējams izlasīt kādā brīdī kādu mājas lapu vai daži uzņēmuma datubāzē tiek apdraudēta, un tad jums ir nomainīt savu paroli, jums ir nepieciešams, lai saņemtu kompensācijas par lietām jo daži slikts puisis tiešām izcēlās savā kontā, kā rezultātā. Uzglabājot paroles skaidrā tekstā, nešifrētu datu bāzē ir pilnīgi muļķīgs, un tomēr tas ir ievērojami uzjautrinoši tad lasīt par dažiem ļoti labi zināmiem uzņēmumiem dažkārt presē kuru datubāzes ir apdraudēti, un šī daļa nav smieklīgi, bet fakts, ka datubāzes satur nešifrētā paroles ir smieklīgi, jo burtiski ar vienu līniju kodu Jūs varat aizsargāt pret šo īpaši apdraudēta, un tas, ko mēs esam darījuši šeit. Pat mūsu viltus maz CS50 Finance versiju mums ir šifrējot paroles tikai labs pasākums, un fakts, ka visi šie paroles sākas ar $ 1 $ ir tikai konvencija. Tas tikai nozīmē, ka viņi kodēti vai tiešām sajaukts, kas ir kā vienvirziena šifrēšanas funkcija kurā jūs nevarat mainīt savu ietekmi ar kaut ko sauc MD5. Fakts, ka 50 ir pēc tas nozīmē, ka sāls vērtība gada 50 tika izmantota sajaukšanai visām šīm parolēm, izņemot vienu. Mine, protams, jo jūs varat redzēt, tur, HA, bija izmantojot citu sāls, lai tie no jums, kas palika nedaudz paklupa uz augšu varbūt 2 Hacker, kas varētu būt rezultāts mūsu ir izmantojuši atšķirīgs hash par citiem, jo ​​mana parole ir faktiski tāds pats kā daži citi lietotājs tur. Patiesībā, ja jūs esat gaidījis visus šos nedēļas, lai uzzinātu kādi ir šie paroles tika šeit bija paroles, kas jums bija apstrīdēti kreka kas Hacker izdevumā problēmu kopumu 2, tāpēc nav pārāk grūts. Faktiski, Malan s bija tāds pats kā jharvard, bet, ja mēs ejam atpakaļ viņi izskatījās citādi. Koncentrējieties uz jharvard ar Crimson jo viņi sālīšanu atšķirīgi. Algoritms tika perturbed tādā veidā, ka jaucējvērtība, šifrētu vērtība izskatās nedaudz atšķiras jo ieguldījumi bija nedaudz atšķirīgi, taču parole zem pārsega vēl galu galā sārtināt. Tagad, kas rūpējas par šo? Nu, mēs sniedzam jums parauga lietotājiem, izlases lietotājvārdi un hashes viņu paroles, lai jūs tiešām ir dažas Klienti par CS50 Finanšu kad jūs pirmo reizi iegūt pie zemes ar savu kodu. Jums ir jāīsteno vairāk tabulām iekšpusē MySQL, iekšpusē no datubāzes. Jums ir radīt vairāk izklājlapas, efektīvi, bet mēs nolēmām dot jums šo vienu lai iegūtu Jums sākusies, un jūs redzēsiet, ka problēma komplekts specifikācija pastaigas Jūs, izmantojot procesu, kas importē šo tabulu un arī izskaidrojot to, ko daži no īpašībām ir, un jūs arī redzēt, ka mēs sniedz jums ar kodu rīkoties sajaukšanai vai šo paroles šifrēšanu, tāpēc jums nav jāuztraucas pārāk daudz par to, ko MD5 vai līdzīgi ir faktiski visu par. Tātad, SQL, strukturēta vaicājumu valoda. Tas ir, gluži vienkārši, valodu, mēs esam par to, lai sāktu lietot 7 PSET un varbūt pat ilgāk pieprasīt datus no dažiem bāzē. Dati ir, atkal, uzglabā tabularly šajās relāciju tabulām, kolonnas un rindas, bet izmantojot dažus salīdzinoši vienkāršus sintaksi, piemēram, dzēst, ievietot, atjaunināt un izvēlieties mēs varam darīt tieši to. Mēs varam izdzēst no datubāzes, ievietot, atjaunināt datus, kā arī izvēlēties, tas ir, iegūt datus no datu bāzes. Kā mēs iet par to izdarīt? Ļaujiet man iet uz priekšu ierīcē. Ļaujiet man uzvilkt http://localhost, kas, atkal, ir vietējais pati ierīce. Tas ir tās noklusējuma segvārdu. Un ļaujiet man iet / phpMyAdmin. Tas notiek, ir īpašs URL ka ierīce ir konfigurēta, lai saprastu ka uzreiz liek man par lietotājvārdu un paroli. Kā ierasts, es esmu gatavojas rakstīt jharvard un tumšsarkanā, bet saprast, ka ir administratora konts uz datora. Tas ir tikai sagadīšanās, ka tur ir arī jharvard reģistrēti CS50 Finance. Jharvard, tumšsarkanā, ievadiet dod man lietotāja interfeiss, kas mēs redzējām ieskatu brīdi atpakaļ, un tas ir nedaudz milzīgs sākumā, bet drošs, jūs nekad nāksies klikšķiniet lielāko no saitēm šo rīku. Jūs galu galā, izmantojot nelielu apakškopu, kas ir super noderīga, no kuriem pirmais ir datubāzes šeit. Ja es eju līdz datubāzēm, pamanīt, ka es esmu piedāvāts izveidot datu bāzi. Tas ir, piemēram, izveidojot jaunu Excel failu, efektīvi. Es iešu uz priekšu un zvanu šo lekciju, es esmu tikai gatavojas ignorēt lauku tur, salīdzināšanai. Tas ir jādara ar pārstāvību datiem tajā, un es esmu gatavojas uz radīt, un tagad paziņojums, kā es let aiziet no radītu kreisajā pusē, kur ir teikts nav datubāzes Es drīz redzēt lekciju bāzi. Ja es tagad noklikšķiniet uz kreisajā pusē, lekciju datu bāzes, pamanīt mani cilnēm mainīt mazliet. Man struktūra, SQL, eksporta, importa un dažas citas lietas. Struktūra ir diezgan daudz tukšu. Nav tabulas atrast datubāzē, kā tas teikts šeit, tāpēc pieņemsim izveidot tabulu, un iesim uz priekšu un izveidot tabulu patīk studentiem, un cik kolonnas mēs vēlamies? Pieņemsim glabā šo vienkāršo, un pieņemsim ieraksts katram studentam ID numurs, nosaukums, un e-pasta adresi. Mēs turpināsim to vienkārši tāpat, tāpēc 3 kolonnas, iet. Forma, ka jūs redzēt šeit ir tagad mazliet netīrs un milzīgs, bet mums vienkārši ir jāiet caur to rindu pēc rindas, tik tiešām ātri dosim pirmā kolonna šajā datubāzē nosaukums ID, lai unikālo identifikatoru. Tas būs skaitlim. Es patiesībā var ignorēt garumu un vērtības. Int būs 32 biti vienalga, ko jūs rakstīt tur, tāpēc pieņemsim atstāt to tukšu. Noklusējuma vērtība, es varētu darīt to null, kā noteikts. Es esmu gatavojas atstāt, ka atsevišķi. Pieņemsim nav jāuztraucas par noklusējuma vērtībām. Pieņemsim ritināt nekā šeit uz labo, atribūtiem. Tas ir interesanti. Iesim uz priekšu un nedaudz patvaļīgi teikt, ka ID ir jābūt neparakstītu. Pieņemsim nav atkritumi jebkurā negatīvus skaitļus. Iesim 0-4000000000, sniegt vai pieņemt, un tad pieņemsim nav pieskarties kāds no šiem laukiem tikai vēl tur, bet tad man rakstīt vārdu šeit lejā, un tad otrs bija e-pastu, tāpēc nozvejas ir e-pastu un nosaukums, protams, nav veseli skaitļi, tāpēc pieņemsim mainīt tos citā jomā. Izrādās varchar, mainīga garuma char, ir kā virknes SQL datu bāzē bet dažāda garuma, un jūs faktiski ir pateikt to iepriekš ar maksimālais garums string, tāpēc es esmu gatavojas nedaudz patvaļīgi Pēc vienošanās veida 255 rakstzīmes. Es varētu pilnīgi teikt 32. Es varētu teikt 1000. Jūs veida nepieciešamību lemt par sevi, pamatojoties uz jūsu demogrāfiju kādi ir Garākais studenta vārdu un iet ar šo numuru, vai nedaudz lielāks, bet kas ir jauki, par varchar tas nav gatavojas atkritumiem 255 baiti par katru studenta vārdu. Ja tas ir David tas nav gatavojas izmantot veselu 255 baiti, bet tas ir augšējo robežu, tāpēc es iešu ar 255 tikai pēc vienošanās, bet mēs varētu diskutēt, kas ir dažas zemākas cenas, un e-pasta adresi tikai, lai būtu konsekventi 255, bet atkal, mēs varētu būt tāds pats debates. Bet es esmu gatavojas darīt viena cita lieta nekā šeit uz labajā pusē. Kas ir spēcīgs par datubāzi ir, ka tā var darīt daudz smago celšanas vai sarežģītas darbu jums. Jo īpaši es tiešām vienalga, ko mana studentu ID numuri ir. Tas ir tikai domāts, lai būtu unikāls identifikators datu bāzē tāpēc man ir 32 bitu kodolīgu pārstāvību šī studenta tāpēc, ka man ir kaut kādā veidā unikāli identificē tos citādi tur būs 2 Davids, piemēram, klasē. Patiesībā, es esmu gatavojas, lai pārbaudītu šo AI lodziņu, auto pieaugumu, lai datubāzes, MySQL, skaitļi, ko katrs tikko ievietotās studenta ID būs. Man nav pat rūp, ka manā kodu, un es esmu arī gatavojas izvēlēties kaut zem indeksa izvēlnē. Indekss nolaižamo šeit ir galvenais, unikāla, indeksu un pilna teksta. Jūs varat varbūt uzminēt, ko no šīm lietām pāris ir, bet izrādās relāciju datubāzēs Jūs programmētājs vai datu bāzes administrators nokļūt preemptively dod padomus, lai bāzē par to, kādi lauki tabulā ir nedaudz īpašs. Piemēram, šajā gadījumā es esmu gatavojas teikt, ka ID būs galvenais rādītājs, kas pazīstama arī kā primāro atslēgu. Ko tas nozīmē pēc definīcijas ir tas, ka ID turpmāk būs unikāli identificē studenti šajā tabulā. Neviens students ir tāds pats ID, jo es esmu uzlikt šo ierobežojumu vai šo indeksu. Turklāt, ko tas gatavojas darīt man tas notiek, lai pateikt MySQL, ka ID ir īpašs. Man rūp īpaši par ID, tā iet uz priekšu un darīt jūsu iedomātā datu struktūra ir maģija, veidot kādu koku. Parasti tas ir kaut ko sauc par B-koks, kas mums nav apskatīt nedēļas atpakaļ, bet tas ir vēl viens šāds datu struktūra līdzīgs garā ar bināro koku un mēģina ka mēs paskatījās, bet tas notiek teikt datubāzē šis lauks ir tik svarīgi, ka es, iespējams, vēlas, lai varētu meklēt par to, iet uz priekšu un izveidot kādu iedomātā datu struktūra atmiņā, lai paātrinātu meklēšanu, lai ideāli viņi nemainīgs laika vai vismaz tik tuvu, ka pēc iespējas lai tas nepāriet uz lineāru meklēšanu, kas nebūs visvairāk labākajām pieeju. Savukārt, e-pasta adresi varētu būt primārā atslēga. Teorētiski, ikviena e-pasta adrese ir unikāla, ja jūs dalīties dažas kontu, bet tas vispār nav labs, lai izmantotu kaut ko līdzīgu virknes kā primāro atslēgu, jo, ja tās mērķis dzīvē ir unikāli identificē rindas jūsu galda nav iemesls, lai izmantotu 255 baiti maksimāli lai unikāli identificētu kādu, ja jūs varat iegūt prom ar tikai 4 baiti vai 32-bitu int. Kopumā, primārā atslēga būtu īss un kodolīgs un ideāli kaut kas līdzīgs skaitlim vai liels int, kas notiek, ir 64 biti. Bet e-pasta adrese ir unikāls, un no datubāzes iezīmēm pārāk ir īstenot unikalitāti par mani. Izvēloties unikālu šeit blakus uz e-pastu, lai gan e-pastu sevi ir apskatus pie ekrāna, es saku ar datu bāzi nav ticiet man. Neļaujiet man ievietot datu bāzē pats pasta adresi divreiz, pat ja es esmu idiots un neesmu ļoti labi ar manu IF un citur IFS un faktisko PHP kodu un es nejauši let lietotājs reģistrēties ar esošo e-pasta adresi datubāze ir vēl viens līmenis aizstāvību pareizību lai nodrošinātu, ka dublikātu e-pasta adrese nebeidzas līdz tabulā. Tagad, turpretim, lai vārdu jūs, iespējams, nevēlaties, lai šo unikālo jo tad varētu nekad būs 2 Davids vai 2 Mike Smiths, piemēram, datu bāzē, tādējādi, ka viens mēs vienkārši atstāt vienatnē. Es iešu uz priekšu un noklikšķiniet ietaupīt apakšējā labajā, un viss izskatās labi, bet paziņojums šeit šī ir daļa, kas tagad mums nebūs tērēt pārāk daudz laika jo sintakse ir mazliet sarežģīta, un mums nav izveidot tabulas tik bieži, bet SQL pati valoda, sintakse, kas ir tepat, ka es esmu izcelti. Ko phpMyAdmin tiešām tas ir tas rada tīmekļa GUI jums ar kuru jūs varat ietaupīt laiku un nav manuāli rakstīt out diezgan ilgi SQL vaicājumu, piemēram, ka. Citiem vārdiem sakot, ja jūs vēlaties, lai manuāli izveidotu šo tabulu, nu tajā melnā un baltā tūlītēju vai pat phpMyAdmin izmantojot šo citu cilni, šis SQL tab, kur jūs varat ierakstīt jebkuru SQL vaicājumus Jūs vēlaties, atklāti sakot, tas būtu jāņem man minūti faktiski atcerēties visu sintaksi un pat tad es droši vien būtu guvusi typos, tāpēc šis rīks ir noderīgs tādām lietām, un tas ir arī pamācošs. Jūs varat sākt, lai secinātu kāda sintakse ir tikai ar jauku krāsu kodēšana, ka phpMyAdmin ir pievienojot mūsu vizuālo ērtības. Bet tagad pieņemsim darīt vietā. Ļaujiet man iet uz cilni Ievietot augšā, un ļaujiet man iet uz priekšu un ievietojiet piemēram gada pieņemsim ID saka-patiesībā man vienalga. Tas notiek, lai auto pieaugumu. Es esmu gatavojas let datubāzes galā ar šo. Bet es ir Dāvids, un mans e-pasts ir jābūt malan@harvard.edu. Iesim uz priekšu šeit un nodot Maiks Smits kā viens otru. Es došu sev uzvārdu, kā arī, un mēs esam viņam būs smith@example.com, un tad, kad man iet tālāk? Nu, izskatās, ka iet ir poga klikšķi, un voila. Pamanīt to top 2 ievietotās rindās. Tas ir faktiskais SQL vaicājums. Tas ir phpMyAdmin līdzeklis izpildīts par mani, bet gala rezultāts, paziņojums, ja es tagad aiziet uz pārlūkot tab, ir redzēt 2 rindas šajā tabulā, ļoti atgādina estētiski tabulas mēs redzējām agrāk mūsu lietotājiem no 7 PSET, no kuriem viens ir David Malan, no kuriem viens šobrīd ir Mike Smith. Bet tikai, lai būtu skaidrs, man nav nepieciešams izmantot phpMyAdmin, un, protams, jūs gatavojas drīzumā rakstot kodu uz 7 PSET kas automatizē procesu, pievienojot rindas, dzēšot rindas, atjauninot rindas un tamlīdzīgi, tāpēc ļaujiet man tā vietā doties uz SQL cilni šeit un tips izvēlieties * no studentiem kur e-pasts = "malan@harvard.edu." Citiem vārdiem sakot pieņemsim tagad jums ir dažas HTML formu, un lietotājs savā e-pasta adresi, starp citām jomām, un mērķis tagad ir PHP par atpakaļ beigās kodu faktiski meklēt šī lietotāja citas detaļas. Kāda ir jūsu pilnais vārds? Kāds ir jūsu ID numurs? Jūs varētu uzrakstīt SQL vaicājumu, piemēram, tas, izvēlieties * no studentiem kur e = "malan@harvard.edu." Un, ja es pēc tam uz iet, ievēroju, ka es būtu, un patiešām man, saņemt atpakaļ tikai vienu rindu. Mike ir izlaista no šī rezultātu kopas, kā vākšanai rindās parasti sauc, jo viņš nav to pašu e-pasta adresi, kā man. Tagad, atkal, šeit ir par 7 PSET jums izmantot phpMyAdmin kā administratīvs instruments un pedagoģisko instruments, lai uzzinātu savu ceļu visā pasaulē SQL, bet beigās, dienā Jūs esat būs rakstiski šos vaicājumus iekšā faktisko PHP kodu, un tāpēc sekojiet līdzi arī Zamyla s walkthrough īpaši kur jūs saņemsiet tūre izplatīšanas kods šo problēmu kopumu kur mēs esam dota jums ne tikai estētika par pieteikšanās lapu un jauka sexy logotips, kas saka CS50 Finance, bet mēs esam arī devis jums ķekars funkcijas, kas padarīs jūsu dzīvi mazliet vieglāk. Mēs esam arī rakstiskā daļa no PSET jums, pieteikšanās daļa no tā, jo īpaši, lai dotu jums sajūtu pārstāvniecības dizaina kas faktiski izmanto kontrolieris, piemēram, index.php, login.php un līdzīgi, un tad jūs redzēsiet PSET arī veidnes direktoriju kas ir visas jūsu viedokli, visi estētiku. Un tā kopējais darbplūsma 7 PSET būs, ka lietotājiem apmeklēt kontrolieris caur URL pārlūkprogrammā. Ka kontrolieris satur PHP kodu, kas jūs rakstījāt, un iekšā jūsu PHP kodu varētu būt daži no SQL līnijas ligzdot starp dubultās pēdiņas un nodots funkcijai mēs rakstīja sauc vaicājumu kas palīdzēs jums runāt ar datubāzes bez izmantojot kaut ko līdzīgu administratīvais instruments, piemēram phpMyAdmin. Jūs varēsiet rakstīt SQL paziņojumus PHP kodu un saņemt atpakaļ PHP masīvs rezultātu kopu, no rindām, kas faktiski atbilst šo vaicājumu. Un tāpat jūs varētu darīt ieliktņi vai dzēš vai vai atjauninājumus tamlīdzīgi sintakses, par kuru ir diezgan līdzīgs, un jūs redzēsiet no dažiem tiešsaistes atsaucēm, no izplatīšanas kodu un no PSET pack sevi kā tieši iet par darot to. Realizēt galu galā mēs esam patiešām tikai nesaskrāpē virsmas SQL un MySQL, bet tā jauda patiešām ir, ka tas atbrīvo jūs koncentrēties uz problēmām, ko vēlaties atrisināt, lietošanas gadījumi jūs vēlaties, lai īstenotu neraizējoties tik daudz, vismaz sākumā, par to, kur un kā glabāt un meklēt savu datu bāzi, un tas ir diezgan burtiski kur Facebook pati ieguva tās sākuma izmantojot MySQL un tad, izmantojot vairāk MySQL serveri un tad vairāk MySQL serveri pirms ilgi, līdz tie pēc tam bija tiešām sākt domāt grūti par to, kā glabāt datus, kā uzglabāt lietas vēl efektīvāk, Tātad, pat ja mēs uzskatām par pašsaprotamu, ka indeksi un unikāls ierobežojumi un tā tālāk vienkārši strādāt tur ļoti interesanta saruna ka tas var visu galu galā noved pie, lai saprastu, ka mēs esam vienkārši nesaskrāpē virsmu par to, ko varētu beidzot par jums vai jūsu projekti kļuvuši diezgan mazliet lielo datiem. Ar to teica, pieņemsim galu šeit, un mēs redzēt jūs nākamajā nedēļā. [CS50.TV]