[Glazbom] DAVID J. Malan: U redu. Dobro došli natrag. Ovo je CS50. To je kraj tjedna 8. A kao što znate, imamo prilično redovitog radnog vremena u nekoliko od blagovaona dvorana, uključujući Annenberg. A neki od tima ljubazno uzeo neke fotografije u zadnje vrijeme. A u čast Halloween, mislili smo da podijeliti onu koja nam već uhvaćen od strane iznenađenje ovdje u Annenberg dvorani jednostavno neku večer. Vaš kolega Jakov pozirala ova slika, ali je više zabavno bio na Facebooku, uslijedila Razgovor što se dogodilo nakon toga. Njegov prvi post odgovor njegovu fotografiju je to. Nekoliko minuta kasnije, on je odlučio jednom do sebe s tim. On je otišao na onda ići na to, a potom, još više zabavno kad mu je mama zvučale. I onda u konačnici, čini to bio samo prekrasna smicalica za igrati što se događa. Dakle, ako želite vidjeti Jakova i drugima, Među njima Cynthia Meng, koji je Iza kulisa CS50 zone osoblja, glavu na ovaj URL i ove drame ovdje. Dakle, bez dodatnih teškoća, danas smo nastaviti ovaj pogled na web programiranja, i stvarna stvaranje programa koji se ne odvijaju na naredbenog retka, ali umjesto toga pokrenuti unutar preglednika. Vjerojatno je sada, ili vrlo kratko, idete da se usred provedbe vlastiti web poslužitelj, koji se razlikuje od web programiranja. Web poslužitelj u pset6 je sve o pisanje softver koji zna kako se HTTP zahtjeva iz preglednika, ili čak i od tebe, ljudski, s programom pod nazivom Telnet i onda odgovoriti na te zahtjeve bilo tako pljuvanje iz HTML datoteke, ili JPEG ili GIF, ili čak .php datoteke. No, s web server, to nije trebao samo otvoriti PHP datoteku, nešto što završava u php, a zatim ispljune sadržaj. To je trebalo učiniti što da tu datoteku prvi? Tako govoriti. Nije ga sastaviti, rekao nam je u ponedjeljak, ali rather-- Dakle, interpretirati ga. PHP je tumačiti jezik, i tako jedan od ključnih značajki u vašem web poslužitelja, iako provodi nama, je ta sposobnost za svoj web poslužitelj primijetiti, oh. Ova je datoteka završava u php. Dopustite mi ne samo to poslati Korisnik kao da je statičan sadržaj, nego neka mi to pročitao line linije, s lijeva na desno, i interpretirati ga. I to, da vas Dečki će biti čamac na programu u aparat, i na puno računalnih sustava, Upravo zove PHP. To je naziv za PHP Jezik vlastiti tumač. Dakle, taj komad ćemo provesti za ti, i ono što je ostalo za vas, u konačnici, je broj komada, među kojima provodi podršku za statički sadržaj. Ali sada, i Problem postaviti sedam, ti si će početi prijelaz na zapravo pisanje PHP kod koji se tumači U razgovoru s leđa kraj baze podataka koji pohranjuje podatke. Dakle-a neka bolje razumjeti prvi par tih superglobals i koliko snage vam izaći iz kutije za besplatno s jezikom poput PHP. Stvari nemate da se provede. Dakle, vidjeli smo u ponedjeljak $ _GET, što je superglobal, koji je samo PHP govoriti za globalno varijabla možete pristupiti bilo gdje. A što je unutar $ _GET? Što je unutar toga superglobal da vidimo? Sigurno statistički na Najmanje jedna osoba ne zna. Što je unutar $ _GET? Da? PUBLIKA: To su varijable stavite u nizu upita. DAVID J. Malan: Savršeno. To su ti varijable staviti u nizu upita. Dakle, u našem starijem primjeru reimplementing Googleu kada smo imali URL, a zatim upitnik, koji markira početak HTTP parametre, a onda smo imali q jednak nešto, poput q jednak mačke, što bi automatski ući to $ _GET super globalni za vas, zbog PHP, je ključ Q, i vrijednosti njihovih mačaka. Drugim riječima, $ _GET i sve ove stvari su asocijativne nizove, hash tablice sorti, da pohranu ključeva i vrijednosti. Sada, natrag u pset5, mljeveno meso Tablica ste možda provedene, ili ti možda pokušati su provedene, uistinu je zapravo asocijativni polje, struktura podataka gdje možete povezati tipke sa vrijednostima. No, u pset5 su vrijednosti bile beznačajne. Vrijednost je u biti istinito ili lažno. Je li riječ u rječniku? Dakle, kada raspršen riječi poput jabuka da li je jabuka u rječniku, ček funkcija vjerojatno vratio istina ili laž. Dakle, to je učinkovito Vrijednost ćemo dobiti natrag. Ali smo vidjeli u ponedjeljak Ukratko, možete sigurno pridružiti još zanimljivije vrijednosti nego samo istina ili laž s ključevima, poput jabuka. Vi zapravo mogao vratiti proizvoljna string, i doista, to je ono što $ _GET i to druge varijable neka vam je činiti. Dakle _POST $ je sličan u duhu, ali ako pošaljete obrazac poštom, različite HTTP metoda koja je koristiti za stvari kao što su kreditne kartice, i privatne informacije, pa čak i binarni informacije poput fotografija, te stvari završiti unutar _POST $. A zapravo datoteke kao što su JPEG i sitnica, tu je čak i jedan koji nije Ovdje se zove $ _FILES kao dobro. Dakle, poslužitelj nećemo boraviti na previše mnogo, ali to vam daje pristup sortirati detalja niže razine o Sama poslužitelja koji koristite. Cookie i na sjednici, međutim, smo uspješno ćemo vidjeti. Posljednji je ono što ćemo koristiti za provedbu pojam košarici. Super jednostavna, ali opoziv da smo imali ovaj primjer ovdje, računajući koliko puta je prije posjetio tu stranicu. Ali danas, umjesto da samo pogled na Učinak toga, neka se otvaraju Inspektor Chrome, koje možete obično učiniti desnim klikom ili kontrolu klikom bilo gdje na web stranici, a zatim odaberite pregledajte element. Ili možete ići kroz izbornike koje smo opisali u pset6 u spec. I ja idem na kartici Network ovdje, i neka je gledati na trenutak HTTP promet koji je ide natrag i naprijed. Dopustite mi da prije ići naprijed i Isprazni Chrome. Dakle, neki od vas bi moglo biti upoznati s ovom tehnikom već, a mi ćemo ga koristiti za ispravljanje pogrešaka svrhe ovdje. Sada mi kao računalo Znanstvenici će početi to za ispravljanje pogrešaka svrhe, pri čemu ćemo očistiti cache, tipično, tako da se može riješiti stvari zove kolačiće. Dakle, vjerojatno ste upoznati općenito s tim što su kolačići, ili barem da oni postoje, ali ono što je vaše razumijevanje od njih, samo kao korisnika računala, što je cookie? Da. PUBLIKA: To je malo of-- dobro, ne malo u trajanju od računalnih znanosti. To je podatak koji web šalje k ​​vama kako bi da bi mogli snimati statističke podatke o vama. DAVID J. Malan: U redu, dobro. Tako da je dio podataka koji poslužitelja, stavlja na vaše računalo, i neka je to generalizirati i više, to je ključ value-- dobro, da je sve precizniji. To je komad Podaci, podatak, da poslužitelj može staviti na računalu a vrlo često, poslužitelj ne to tako da ne zaboravite tko ste. Tako na primjer, izgledi su vjerojatno ste prijavljeni na stranicama kao što su Facebook, ili Gmail, ili netko drugi prije, a što se prijavite sa svojim korisničko ime i lozinku, i nakon toga, neko broj minuta ili sati ili čak dana, poslužitelja sjeća da je vi ste, u stvari, prijavljeni. Sada, kako se to zapravo događa? Jer ti sigurno ne doradu vaše korisničko ime i lozinku svaki put dođete do različite stranicu na Facebooku. Tako ispada Kolačići su odgovor. Cookie možete misliti kako je, vrsta sviđa, digitalni ruku Pečat koje možete dobiti na zabavu parku ili klub koji u suštini označava da ste bili ovdje prije, a vi ste već pokazali svoj ID na izbacivač, za instanca, a to klub ili park Sada bi trebao pretpostaviti da vas Već su ovjerena. Već su identificirani od strane njega. Dakle, s tim na umu, neka se otvaraju brojač ovdje. Dopustite mi ići naprijed, samo sam učinio, jasno i sve moje kolačiće. I sad ono što ću učiniti je držite Shift, samo za dobru mjeru, i prisilno ponovno učitati stranicu. Shift samo pazite da ništa ne dobiva spremljeno. I ovdje je zahtjev koji je išao naprijed i natrag. Dakle, ovdje imamo zahtjev, i neka ja povećavanje ovdje i puno toga je vrsta nezanimljivo pojedinosti za sada kada preglednik ima automatski poslana, ali neka je kliknuti View Izvor vidjeti sirove zaglavlja. A ako ste zaronili u pset6 već, sigurno ćete prepoznati stvari ovako, a možda i neke od ovih ostalih linija ovdje, ali ono što je još zanimljivije za danas ako sam pomaknite prema dolje, a ne na zahtjev ali na tzv odgovor, ova linija vjerojatno izgleda poznato. To je dobra stvar kada vidite 200 OK. Očito je to Datum i vrijeme na poslužitelju a tu je hrpa stvari. Oh, to je zanimljivo. Ispada da kad god koristite PHP, barem na poslužitelj, poslužitelja pljuje ono verzija PHP koju koristite. Što, zapravo, za sigurnost svrhe, nije dobra stvar. No, mi ćemo se vratiti na to neki drugi put, možda. Ali sada je to sočno linija i danas, i kratko vidjeli smo neke od njih, Mislim Facebook kad smo poked oko inspektora u to vrijeme, Skup Kolačić je ono što je sadnja da je mali dio informacija na vaše računalo. To je HTTP zaglavlja to je učinkovito govori vaš preglednik, Chrome, IE, što god, hej preglednik trgovina na korisnikovom tvrdi disk, ili na korisnikovom RAM, pod nazivom ključ PHPSESSID, koji je skraćenica za ID sesije, i dati mu vrijednost 0vlk8t, točka, točka, točka. Stvarno dugo pseudo slučajni alfanumerički niz. To je samo jako veliki broj, ali to je kodirani slova i brojeva tako da je veličina toga može biti čak i veći od brojeva sama. A onda, usput, Put = /, koji samo znači da je ovaj kolačić trebao biti povezana s cjelokupnost web stranice, ne samo specifičan Stranica cijela stvar. Dakle, to je da virtualni ruku pečat. To je kao da poslužitelj, Facebook, ili u našem slučaju aparat, ima doslovno pisani 0vlk8t i tako dalje, na svoju ruku. Obavijest ono poslužitelja, Ne radi se to nije spremanje svoje korisničko ime, zasigurno Ne spremanje moju zaporku. Umjesto toga, čini se da pohranjivanje pseudo slučajni informacije tako da nitko ne može pogoditi ono što je moja ruka pečat. Na strani poslužitelja, U međuvremenu, poslužitelj će se sjetiti, vjerojatno u bazi podataka ili nešto, da korisnik, koji u budućnosti predstavlja ruku pečat 0vlk8t, dot, dot, dot, treba biti povezan s ovim Konkretno košarica, da se tako izrazim. Drugim riječima, ako ja sad ići ovamo i ponovno ovu stranicu, kako se poslužitelj zna da Posjetio sam jedno vrijeme? Ili, ako sam to učiniti opet, kako se poslužitelj znam da sam ga posjetio dva puta? Pa ako idem dolje na to Najnoviji zahtjev, koji je sada je treći koji sam poslao ukupno, primijetit moj zahtjev sada. Još uvijek to zatražiti ovdje, isto kao i prije, tu je još cijela hrpa stvari koje smo ignorirao kao i prije, ali vrlo posljednja zaglavlja, to vrijeme, jer sam bio ovdje, je predstavljanje Ova virtualna ruka pečat. Čime ta crta ovdje, nije postavljen kolačić ali Kolačić debelog PHPSESSI = 0vlk8t, to je samo moje preglednika i automatski Predstavljanje ove ruku pečat, tako da Sada poslužitelja, čim se ostvari, Oh, to je user 0vlk8t dot, dot, dot, Ja sada mogu sjetiti tko je on ili ona je i reassociate s tom korisnika god Informacije želim, a sve da se informacije mogu biti pohranjeni po vama, programer, u $ _SESSION. Dakle, da bude jasno, ako sam otvoriti vrlo brzo U gedit da stvarna datoteka, counter.php, u mom lokalna domaćina javni imenik kao i prije, primijetiti da je, doista, Ja sam u konačnici spremanje u $ _SESSION Citat citat "kontra" vrijednost brojača koji je prethodno JA dobiti iz ovih redaka ovdje da mi Pogledao je posljednji put plus jedan. Dakle, ispod haube, to je sve kolačiće jesu. To je samo vrsta digitalnih Ruka pečat ide naprijed i natrag, a iskreno ako otvorite Chrome-a Inspektor na bilo koju web stranicu posjetite danas, s super visoka vjerojatnost, ti ćeš vidjeti možda jednu, možda pola tuceta kolačići biti zapamćena po vama. I još gore, ako su oni web stranice koje posjećujete svi imaju reklame, koje svakako je vrlo čest i danas, a ako ti oglasi dolaze iz neke središnje stranke, netko kao što je Google AdWords ili kako su nazvati jedan od njihovih proizvoda ili druge takve tvrtke koje prodavati oglase, ono što je zanimljivo, i iskreno što je malo zabrinjavajuće, o tome kako HTTP radi, je da ako imate oglas ugrađen U Facebook.com, i Google.com, i Harvard.edu, bilo koji broj internetskih stranica, pa je tako da postoji srednji čovjek koji je služio up oglasa za sve tri od tih web stranica, ispada da kolačići su po šumi. Dakle, ako imate oglas dolaze iz Ista tvrtka na različite web stranice, da tvrtka može učinkovito pratiti tko vi ste u svim tim web stranice. Harvard možda ne znaju posjećujete Facebook. Facebook možda ne znaju i posjećujete Harvard. No, bez obzira na servis oglasa oni koriste ako je domena prisutna u oba Harvard.edu webu stranice i web stranice, Facebook.com ovaj srednji čovjek sigurno zna tko si Zbog ove kolačiće se dijeli preko, odnosno da se, da je tzv posrednik. Tako ćemo se vratiti na to sigurnost njihove posljedice, ali postoji puno informacija pohranjene o vama bilo koje vrijeme posjetite najviše bilo koju web stranicu na Internet i to stvarno smanjuje na ovaj vrlo jednostavan mehanizam. Što će se dogoditi, a zatim, ako je ti si super paranoičan a vi odlučite ići u Chrome ili IE ili što god i isključite kolačiće? Što se događa? Da? Vi really-- ste učinili to pravo? U redu. Ne, samo naprijed. PUBLIKA: Određene web stranice nemaju funkcija bez nje sviđa Facebook. DAVID J. Malan: Da! Dakle, određene web stranice samo će prestati raditi. I u većini web stranice ovih dana koje iz temelja oslanjaju na kolačiće, pogotovo ako imaju se prijavite u, oni samo ćeš slomiti. Zato razmislite alternativa, ako web stranice nema načina da se prisjetimo tko ste, i stoga vaš web preglednik ne predstavlja sa svakim HTTP Zahtjev RUKE pečata, učinkovito web stranice poput Facebooka odlazeći moramo Vas obavijestiti da prijaviti svaki darn put promijenite stranice, ili kliknite na link, koji sigurno nije osobito dobar korisnik iskustvo. Tako da je, također, među trgovačkim off. Dakle, bez dodatnih teškoća, neka je uzme zdravo za gotovo da je s web programiranja, u jezicima kao što su PHP, možete se sjetiti Informacije kao da je u problemu postavljena sedam kada provesti svoj E * Trade-poput web stranice s kojom kupiti i prodavati dionice, vi ćete se točno sjetiti ono što je korisnik kupio i prodao a tko je on ili ona je putem ove sjednice. Ali ćemo morati ljubitelj način nego e-mail za početak čuvanje informacija okolo. Pravo? U ponedjeljak, razgovarali smo o Frosh IM i kako je u verziji jedan od toj stranici, prije nekoliko godina, sve što smo radili bilo e-mail Proctor tko je zadužen za intramuralnih sportova Program, ime i spol, i da li ili ne oni kapetan, i spavaonica nekoga tko je registracije za intramuralnih sport. Dakle, to nije loše, ali on ili ona tada morao trol kroz svoje e-mail, napraviti tablicu ili nešto slično da, da bi sve organizirali. Dakle, sigurno mi kao programera mogu to učiniti za tu Proctor. I tako ući u SQL, Strukturirani jezik upita, koja će izgledati lijepo razlikuje oba C i PHP, a vi ćete roniti u puno više ruku na PHP i problema postaviti sedam, ali i SQL, ili SQL, to je jezik koji koristite za razgovor s bazom podataka. No, ono što je baza podataka? Pa što mislite o baze podataka, barem za sada, kao upravo se kao Excel datoteke, ili Ako ste Mac korisnik a brojevi datoteka, ili ako ste Google Apps Korisnik Google proračunske tablice, to je učinkovito baze podataka, ili stvarno posebno relacijskih baza podataka. Relacijskih baza podataka je samo nešto što ima redaka i stupaca, i možete spremiti bilo kakve Informacije u tim retke ili stupce. No, ono što je lijepo o SQL, i o aktualnim bazama podataka, a ne samo tablice ili Google proračunske tablice, je da možete koristiti jezik zapravo izvršavanje upita umetanje podataka, ukloniti podatke, tražiti podatke, čak i što je najvažnije, i ti Ne morate ga koristiti prilično ručno kao što ste možda obično Google proračunske tablice kao što je ovaj. Tako je u SQL, postoji hrpa temeljne izjave ili komada funkcionalnosti izgrađen. Tu je još mnogo više od toga, ali možete ići veliku udaljenost samo znajući da je taj jezik zove SQL ima najmanje četiri izvještaji možete utjecati. Obriši, za uklanjanje podataka, Umetnite, za dodavanje redaka, Update, za promjenu redaka, i odabirom, za dobivanje natrag redaka i to je upravo ono što SQL radi. Ona djeluje isključivo na redovima tako da kada stavite ili ukloniti, ili ažurirati, ili odaberite ono što ste vratimo kao tzv rezultata set, kao i niz redaka. Hrpa redaka iz tablice. Dakle, natrag u dan, pa čak i do današnjeg dana, možete komunicirati s baze podataka pomoću naredbenog retka, ali to nije osobito zabavan za korištenje ovo crno-bijeli stil prozor i zapravo izvršavati naredbe i guranje oko baze podataka. Grafičko korisničko sučelje, ili GUI, je puno više preferira, nedvojbeno, pa alat preporučujemo i predinstaliran za vas na aparatu naziva phpMyAdmin. To je ukupno slučajnost da Ime ove stvari ima PHP u njemu, to samo znači da su ljudi koji je napisao ovaj program se Napisao ga je u PHP. No, to je u konačnici o primjeni poslužitelj baze podataka, poput MySQL poslužitelja da ste možda, kao ti ne, u CS50 aparata. Dakle, postoji više detalja ovdje nego moramo voditi brigu o tome danas, ali ono što je ključno je da na lijevoj strani Ruka strana je popis baza podataka da imate na računalu, na svom CS50 aparata, ili dolaze završne projekte koji bi mogli imati na treće osobe, tvrtke web stranice ili web poslužitelj, koji možda se plaćati za prostor. Dakle, na lijevo je baze podataka, od kojih je jedan je pset7 koje sam posudio od iduće pset tjedana, a zatim na vrhu postoji primjetiti postoji hrpa kartica, od kojih jedan je baza podataka, SQL, status, Korisnici, izvoz i tako dalje. Na taj način možete ići dug Način samo ostvarivanje da je većina od korisničkog sučelja je u gornjem lijevom stupcu i na vrhu sve do tamo. Dakle, što možemo zapravo učiniti s tim? Pa, krenimo stvarajući malo informacija kako slijedi. Pretpostavimo sljedeće je slučaj, kao što će se u samo nekoliko dana, Želite li provesti web stranice, pod nazivom CS50 financija, i ove web stranice omogućuje kupnju citat citat i prodati dionice. I to će shvatiti cijena tih dionica, konačnici kao što ćete vidjeti, u razgovoru za Yahoo Finance. Koji, predivno, ima besplatnu uslugu gdje možete proći u burzovni kao što je GOOG za Google, a to će daju ti natrag Googleov trenutne zalihe Cijena u prošlosti Nekoliko minuta najmanje. Tako ćete koristiti da, u konačnici, pretvarati za korisnika kupiti i prodati stvarna dionice koje koriste virtualni novac, ali vrlo prva stvar Korisnik će vidjeti je to prijava zaslon koji ih traži za svoje korisničko ime i lozinku. I tako, jedan od prvih izazovi za vas u pset7 koja će se provoditi na leđa kraj baze podataka, proračunske tablice, ako hoćete, to će pohraniti korisnička imena i lozinke i na kraju ono dionica koje posjeduju, i koliko, i koliko novca imaju, pa hrpa drugih stvari u druge tablice, ili proračunske tablice. Tako ćemo pogledati kako je to Možda se na prvi pogled. Ja ću se vratiti aparata, a ja sam ići na ovaj URL ovdje phpMyAdmin localhost / phpMyAdmin i vidjet ćete da je to vodi me na sučelje baš kao što smo vidjeli na zaslon metak, a ja ovdje imaju dodatnu bazu podataka pozvao predavanje za danas i neka mi ići naprijed Prvi i kliknite na pset7. Čini mi se da ima nekoliko opcija, jedan za novo, za stvaranje nove tablice, i link na korisnike, koji je tablica sam već stvorio. Dakle, ono što je stol? Dakle, ako ste koristili Excel prije, a ako ste korištenih brojeva ili Google Proračunske tablice, otvorite prozor a vi dobili hrpu redaka i stupaca, ali onda obično imaju listove po dnu, ili zasebnim karticama. Možete misliti svaki list kao tablicu tako da baza podataka, u konačnici, je Kombinacija jedne ili više tablica, jedan ili više radnih listova, u Svijet normalne tablice. Pa neka mi ići naprijed i kliknite na ovu listu da sam premade, zvani korisnici, A.K.A. Tablica baze podataka. A ako sam dođite ovamo, neka mi smanjili malo, to je ono što se govori phpMyAdmin nama je unutar tog stola upravo sada. To je malo zbunjujuće na prvi Pogled jer UI ne najljepša stvar na svijetu, ali ono što je zanimljivo je to dio ovdje. ID, korisničko ime i mljeveno meso. U unaprijed, a vi ćete biti u ruku to je u problemu postaviti sedam, dajemo vam datoteku koja sadrži super mala tablica baze podataka, posudio je zapravo iz hakerske izdanju Problem je postaviti dva, unutar koje postoji šest redaka. Jedan za sve Belinda je putu prema dolje kako bi jedan za Zamyla, i obavijest s lijeve strane onih korisnička imena su jedinstveni ID kao jedan, dva, tri, četiri, pet, šest, cijeli brojevi, a zatim na desnoj strani su presjeke. A ako, izgledi su, što nije učinio Problem haker izdanje postaviti dva, ali mljeveno meso je isto kao šifrirana lozinku s nekoliko upozorenja. I tako, ono što vidite ovdje su su šifrirane verzije svih šest naših lozinke iz problema postaviti dva je haker izdanje. Sada s lijeve strane je samo neki GUI stvari, uređivanje ovaj redak, kopirati ovaj redak, brisanja ovaj redak. No, ono što je zanimljivo Sada je sljedeći. Ja zapravo mogu početi eksperimentiranje s ovim stolom. Dakle, ako odem i kliknite na SQL karticu, ja dobiti ovaj veliki okvir za tekst. A to nije kako ćemo to učiniti kada se zapravo pisanje koda. Da bude jasno, phpMyAdmin je samo alat koji je će neka nam probiti oko baze podataka i neka nam eksperimentirati s upitima. Tako na primjer, pretpostavimo Ja izvršiti upravo to. Odabir, što je jedan od onih Ključne riječi što sam spomenuo ranije, zvijezdu, što predstavlja sve stupci u tablici. Iz onoga što tablica? Pa, korisnici. I tu obavijest je ovo čudno konvencija u SQL gdje se zapravo koristiti natrag krpelja, obično, Ne jednostruke navodnike, a ne dvostruki navodnici Kada govorimo o imenima tablice, pa natrag citat je stvar na Gornja lijeva ruka tipkovnici najviše vjerojatno. Pa neka mi ići naprijed sada i samo ostaviti na miru i pomaknite se dolje i kliknite Idi, a mi smo zapravo će vidjeti istu stvar. Upravo smo izvršiti SQL upit govoreći odaberite Sve zvijezdu od stol pod nazivom korisnicima, a ono što se vratite je to. U konačnici, mi ćemo biti u mogućnosti učiniti da istu stvar u kodu, ali za sada sve što sam želio to je bio vidjeti ga u svom pregledniku. Pa neka je učiniti nešto malo drugačiji. Pusti me da se vratim na SQL kartici, i neka je samo reći da je što? Zamyla je izgubio sve o njoj novac, i stoga je vrijeme za nas da joj izbrisati kao korisnik. Ona više ne prijave. Zato ću reći brisanje from-- dobro, održavanje kapitalizaciju dosljednost, brisanje od korisnika gdje je. I tako, možemo imati tih predikati, ili oni kvalificiraju, na kraju moje izjave gdje i kako mogu izbrisati Zamyla? Po njezinim imenom Zamyla, tako stupcu, jedan od stupova je dobio ime, pa gdje name = "Zamyla". I ovdje sam koristiti dvostruka citati ili jednostruke navodnike, koristite samo vratiti krpelja kada govoriti o imenima, primjerice, tablica ili polja. I neka mi kliknite Idi ovdje. A sada, web stranica kao malo napet. Ili, da li vi stvarno želite izvršiti brisanje od korisnika gdje ime jednak Zamyla? Da. Pa sad, ako se vratimo na moj stol Klikom korisnika, primijetiti da hm. Goofed sam. A u stvari, ja vrsta kliknuli daleko tako brzo niste ni vidjeli crvena poruka o pogrešci, možda. Što sam učinio krivo? PUBLIKA: Niste potrebno kapitalizirati svoje ime. DAVID J. Malan: Da sam kapitaliziraju njezino ime, ali joj korisničko ime-- zapravo sam napravili par grešaka, zar ne? Jedan od njih, njezin korisničko ime zamyla, mala slova Z, i ime stupac korisničko ime, Nije ime, pa ćemo to učiniti opet. Pusti me naprijed i izbrisati iz korisnike gdje korisničko ime jednak citat citat "Zamyla". Sve u redu? Dakle, ovo izgleda malo bolje, neka da odem pomaknite prema dolje i kliknite Idi. Još uvijek će vikati na mene kako bi bili sigurni. Ja kliknite Da, a sada vidimo, iskreno se to dogodilo, stvarno brzo, manje od jedne Druga sigurno, ovaj Upravo upit koji je dobio pogubljeni. Za potvrdu, neka mi kliknite korisnike i doista je sada Zamyla je otišao. Sada ćemo učiniti suprotno. Pretpostavimo da je Gabe želi Registrirajte se za web stranicu. Što je SQL upit, što je Naredba bih mogao upisati dodati Gabeu? Pa to je prilično jednostavan. Umetnite na korisnike, a sada to dobiva malo zagonetan. Moram navesti, na poslužitelj, ono polja želim dodijeliti. Ja stvarno ne briga što Gabe je ID broj, pa ću preskočiti to. Ja sam umjesto toga reći korisničko ime, mljeveno meso, a zatim vrijednosti Želim staviti tamo će biti Gabe. A onda mu je mljeveno meso, ne znam. Dakle, za sada, idem ostavite da se kao velika učiniti. Mi ćemo se vratiti da je set problema spec kako ste zapravo učiniti. Dakle primijetiti, opet, sintakse. Uložite u ime tablice, a zatim zagradi popis polja, stupci želite dodati Vrijednosti u, i onda samo Isto točno naručivanja prepušteno Pravo vrijednosti koje želite dodati, a to je samo zato što omatanje Tekst je malo dugo. Pa sad neka mi kliknite Go. Jedan red umetnuta. I sad kad bih se vratiti Korisnici, ono što je zanimljivo da ne samo da je sada u Gabe baze podataka, što je očito njegov ID? Pa to je sedam. Zašto je sedam godina kad nisam ga dodati? Dakle, to je, također, jedna od značajke ste dobili od baze podataka. Puno izgrađen u funkcionalnosti. Ispada da kada stvorio ovu tablicu, Konfigurirano sam to automatski pridružiti ID tako da koracima. Dakle, ako ste ikada poked okolo, i pogledala što vaš Facebook ID broj je, ovih dana to je zapravo i nije stvar za napraviti, ali Facebook kao API, Application Programming Interface, gdje možete dobiti natrag cijela hrpa podataka o sebi, o svojim prijateljima, i vaše veze. A ono što je nekad bila neka vrsta cool, natrag u dan, je pogledati što je vaš Facebook ID broj bio. Mark Zuckerberg je, na primjer, je tri jer je on bio autor stranice. A što se priča, on je stvorio dva računa ispitivanja, korisnik jedan i dva, koji je zatim izbrisan. I tako, Zuck, kao što je njegovo korisničko ime na Facebooku, je ID broj tri, a svi od nas imaju puno brojeva veći od tri ovih dana. U stvari, u nekom trenutku Facebook odmaknuo od čak pomoću int, koji je 32-bitne vrijednosti, na korištenje Sljedeći korak, u biti dugo dugo, tako da bi mogli smjestiti čak i više korisnika registracije. Tako zabavno malo povijesna činjenica. Dakle, to je samo Osnovna sintaksa kojom bismo mogli izvršiti par upita, ali možemo zapravo to hrpa više stvari sa SQL. I vidjet ćete, u konačnici, u problemu postaviti sedam koje morate napraviti broj dizajnerskih rješenja, Među njima će biti koje vrste podataka za korištenje. Dakle, baš kao u C, postoje podaci vrste u bazi podataka, kao što su MySQL, te vrste podataka morate odabrati od tih polja su ovdje. Char, varchar, Int, veliki int, decimale vrijeme i datum, i mnogi drugi. Pa neka je zapravo to. Ajmo se pretvarati da nismo Ruka što ovaj korisnički stol i neka mi ići naprijed i stvoriti, za Osobno, u predavanjima database-- zapravo neka mi ići naprijed i brisanje stol sam ovdje već tako da mi zapravo može stvoriti to. Ups. Idem da ispadne ovo stol, a sad sam ići opet predavanje baze podataka ovamo, Ja ću stvoriti tablicu nazivaju korisnici i neka je Upravo to tri stupca početku i kliknite Idi. Sada, za najveći dio, opet, to je samo koristeći ovaj grafički alat nazvan phpMyAdmin, i što radimo sada stvara tablicu. Dakle, ovo je poput odlaska File, New, i stvarajući novu Excel datoteku. Dakle, to pita me malo Pitanja, s lijeva na desno, što je naziv prvog stupca, i naziv drugom stupcu i naziv trećinu. Tako ćemo stvoriti ovo. ID, a zatim korisničko ime bio je jedan, a zatim mljeveno meso je još jedna. Pa što bi trebao tip podataka se sada za području poput ID? Ovdje je cijeli popis tipova podataka dostupne u bazi podataka, i za sada neka je samo ići s int. 32-bitne vrijednosti, ja ne mislim realno sam će imati više od 4 milijarde Korisnici na mom računu, u mojoj službi, pa ću se nastaviti kretati na sljedeće. Neću navesti duljina ili vrijednosti, to ne odnosi Ovdje za int, sama po sebi. I sad ja mogu odrediti, očito, zadani vrijednost, što neću navesti. Uspoređivanje, ne znam što je to. Atribut. Sada smo zapravo učiniti imaju dizajn odluku. Dakle, postoji nekoliko polja ovdje, nisu svi od kojih su primjenjivi, ali nepotpisano samo znači što? To int mora biti? Samo ne-negativni. Dakle, ona mora biti 0 na gore. Ne, ja ne idem provjeriti, jer Želim svaki korisnik imati iskaznicu, to ne može biti nula. A onda smo dobili nešto više zanimljive dizajnerske odluke kao što je ovaj. Mi ćemo se vratiti na to u ovom trenutku, ali ono još jedna značajka baze podataka je, je da možete reći poslužitelj baze podataka ići naprijed i optimizirati sebe, vaš RAM-a i tvrdi disk prostor, tako da odabire i umetci i briše, i nadogradnje su jako brzo. Usporedite to s pset5. Ako biste željeli potražiti nešto u svom hash tablici, koji mislite kao baze podataka, koji su morali učiniti sve raditi za izradu vaš hash tablicu brzo. To je kao, očito, vi. Pravo? Morao si staviti u sve vrijeme kazne tuning stvari, uzimajući hash funkciju U redu, figuring out kako mnogi kante imati. No, ono što je lijepo, opet, o baza podataka ti samo čamac sve ovo drugim ljudima koji su mislili da kroz za vas, a što Ja ću reći ovdje u Indeks je da moje osobne polju će biti primarni način identificiranje korisnika u ovoj bazi podataka. Neću razmišljati od Zamyla kao Zamyla, Ja ću misliti ju kao broj 6. Zašto je to, možda, bolje intuitivno misliti i modela svaki od vaših pojedinačnih redaka pomoću Broj umjesto da nešto poput niza, poput Zamyla ili Gabe ili duže string dalje? Da? PUBLIKA: ID je jedinstven? DAVID J. Malan: Recite opet? PUBLIKA: ID je jedinstven? DAVID J. Malan: ID je jedinstven, ali suppose-- kao što je slučaj u cjelini s korisničkim imenima, pretpostavljam Također sam rekao da može biti samo jedan Zamyla u svijetu, a samo jedan je Gabe. Mogao sam nametnuti jedinstvenost ograničenje na žice, također, ako sam htjela. Dakle, nije loša misao. PUBLIKA: Više sigurna. DAVID J. Malan: Više sigurna, zašto? PUBLIKA: Ne mogu reći što koji je, kao i kod korisnika. DAVID J. Malan: U redu, vi Ne mogu reći koji korisnik je što tako da privatnost aspekt na njega, posebno ako IDS možda pojavljuju u URL-ova. Pa jeste, da bi vrsta posla, previše. Ostali misli? Da? PUBLIKA: To je lakše obavljaju poslove na int. DAVID J. Malan: To je pravi buntovnik. To je samo učinkovitije, ili jednostavnije za računalo, za obavljanje poslova na cijeli broj. Pravo? Int je zajamčeno biti 32-bitni, dok Zamyla je duga nekoliko znakova, Gabriel je dug još nekoliko znakova, Davenport je stvarno dugo, i tako to nije osobito učinkovito koristiti žice za usporedbu vrijednosti i gledati za polja, i unapređivanje poljima, Ako možete dobiti daleko sa samo jednom cijeli broj. Samo 32 bita. Dakle korisnička imena, također, na taj način, ne moraju biti jedinstveni, iako su vjerojatno trebali biti, pa čak i na taj način previše Korisnik može biti dopušteno promijeniti svoje korisničko ime. Tako ćemo sada ostaviti ovo kao primarni način identifikacije korisnika. To govori baze podataka ići naprijed i optimizirati sebe tako da izgled up na ID su super brzo. AI, užasno zove, samo znači Auto Pomak, a to je provjera okvir trebamo provjeriti navesti da je ID polje automatski ažurira za mene, a onda ću pomaknite udesno ovdje i iskreno nisam stvarno zanima U više od ovih područja. Dakako, ne danas. Zato ću se vratiti ovdje, u prvom stupcu, gdje Moram navesti ime i mljeveno meso, i neka je na najmanje naglaskom na Druga za sada. Int vjerojatno nije pravo poziva, pa što ima više smisla možda? PUBLIKA: Tekst. DAVID J. Malan: Recite opet? PUBLIKA: Tekst. DAVID J. Malan: Tekst? U redu, čuo sam tekst. Što još? Mi vrste imaju hrpu izbora da su tekstualne u prirodi. Dakle, kada i zašto, ne koristite neki od njih? Pa char, suprotno onome što možda mislim, nije jedan lik. To je određeni broj znakova. Dakle, ako znamo da su svi korisnička imena mora biti poput osam znakova, kao što je nekada bilo uobičajeno u starija računalni sustavi, mogao bih reći char a onda bih mogao reći 8 ovdje. Tada je treći stup postaje primjenjuje prilikom stvaranja tablice. No, to je vrsta neugodno jer neki ljudi mogu Želite imati duži korisničko ime od osam znakova, neki ljudi možda žele imaju kraći korisničko ime, pa zašto sam počinio na određeni broj? Zašto ne imati varijablu broj znakova i jednostavno kažu da je maksimalna duljina ime je, ne znam, kao što je 64 znakova. Ne mogu se sjetiti bilo kojeg prijatelja koji imaju imena dulje od 64 znakova, pa čak i ako je to prekratko ste mogli Sigurno ga naletjeti proizvoljno. Tako je varchar promjenjiva broj znakova. Tekst nije loša instinkt, a iskreno da vrsta čini ono što kaže, ali riječi može biti kao i 65.000 bajtova najmanje. To je vjerojatno overkill za polje, i zapravo, Yup, 65.535. To je vjerojatno overkill za ime, pa ćemo se držati, obično, s varchars za tekstualnog polje i mljeveno meso, previše. Mljeveno meso, ispada, mogli bismo napraviti varchar kao dobro ili nešto slično, ali ne danas će se usredotočiti na kriptografija tamo i brojevi da mi zapravo želite koristiti za svoje dužine. No, dopustite mi da se pomaknite prema dolje udesno. Možete imati samo jednu Primarni indeks za stolom, ali ne želim primijeniti bilo koju od njih, Sada, s imenom, biste rekli? Ono što treba korisničko ime se temelji na neodređeno razumijevanje tih četiri opcije? Samo po njihovim imenima? PUBLIKA: Jedinstveni. DAVID J. Malan: Dakle jedinstven, zar ne? Tako ispada da su ne samo mogla kažeš bazu podataka, unaprijed, To je primarni način identificiranja polja. Također možete reći da je ovo će biti jedinstveno polje. To neće biti što sam se osloniti na, ali ja bih baze podataka u u biti ima da ako stanje, tako da da li sam ikada pokušao registrirati Dva korisnici s istim imenom, Baza stan ne će me pustiti. Možda ću imati neki dodatni kod u PHP koja sprečava koliko, ali baza podataka, također, može osigurati da to nikad neće dogoditi. Sada, kao što je na stranu, pogotovo što mislite o završnim projektima, imajte na umu da indeks i puna Tekst su zapravo vrlo korisna. Ako imate veću bazu podataka, a ne s desetine, ali sa stotinama ili tisućama ili čak milijune polja, možete Također reći baze podataka unaprijed ovo polje idem da se u potrazi za puno. Možda svoje korisničko ime, možda je to bio, ako si izrade Facebook-poput web stranicu koja ima stavke koje korisnik je dopušteno spasiti, a ako želite reći baze podataka unaprijed Idem se traži na tom području puno, ali to nije nužno jedinstveno, možete odrediti stvoriti mi indeksa. Ili, možete izgovoriti dopustiti da učinim vrsta proizvoljnih pretraživanja kao što su zapovjedništva Kontrola ili F, poput tebe možda u Word Processor, tako da bi mogao izgledati proizvoljne žice ili podnizova u ovom području. Drugim riječima, mi smo dobivanje do točke u nastave gdje se ne morate brinuti o kako učinkovito provesti stvari. Vi samo trebate znati o tome što dizajn odluke kako bi, tako da ste pomoću pravih alata za trgovina kako biste iskoristili značajke da su drugi ljudi su izgradili za vas. Tako da rekapitulacija, primarni je samo trebalo imaju jednu, možete imati samo jedan, i to je stvar koju je počinio koristite za identifikaciju polja jedinstveno. Jedinstvena je samo sličan u duhu, ali možda samo povremeno ga koristiti, ali želite baze nametnuti. Indeks samo znači preventivno ubrzati stvari u budućnosti tako da mogu tražiti stvari u ovom području. A onda puni tekst je općenito za stavci, ili eseja, ili velika tijela teksta u kojem vas Možda također žele imati divlje kartice poput protuvrijednosti zvijezde. Pravo. Dakle, to je vrsta puno odjednom. Idemo vidjeti ako ne možemo destilirati Nekoliko tih značajki a zatim izgraditi nešto prilično jednostavan, ali moćan. Dakle, među drugima dizajn odluke da ste u konačnici će morati se zajedno linije za pohranu motora. I neka mi samo spomenuti ovo U očekivanju završnih projekata, i predviđanje neka je say-- ne učinimo to. Ajmo izgraditi taj mali Zahtjev prvi. Ja ću otići u moju terminal prozor, a ovdje nije Samo counter.php, koji sada ide riješiti što više nije povezan, ali imamo hrpu imenika i to će biti vrlo sličan u duhu onome što ćete vidjeti u problemu postaviti sedam. Dakle, imamo tri imenika uključuje javni i predloške, koji upravo tamo gdje smo stali na Ponedjeljak s našim cijeli MVC paradigma. I da recap, u javnosti će ići bilo koja datoteka koja želim korisnike da se zapravo v moći posjetiti u njihov browser preko URL. Predložak. Što smo stavili u predložaka? Kakve stvari? Nije bilo puno, ali par datoteka barem u ponedjeljak. Da. PUBLIKA: Zaglavlje i podnožje? DAVID J. Malan: Zaglavlje i podnožje. Dakle, imamo nešto slično i danas, previše. Imamo još nekoliko datoteka, ali Podnožje vidim, zaglavlja vidim, a onda hrpa drugih datoteka. Dakle, ovo je ekvivalent pogleda V MVC, koji, opet, bit će malo više jasno problema postaviti sedam, ali to je samo mapa sam stavljajući puno mojih estetike. Puno mojih HTML, puno mojih oblika. U međuvremenu, uključuje, još je jedan katalog koji ima ove tri datoteke i neka je uzme brzi pogled na njih. Ja ću ići naprijed i otvoriti config.php. Kao što se ispostavilo, mnogo kao što je ranije u roku, li oštar uključeno CS50 dot hs pset7. U današnjem primjer, idete učiniti ekvivalent da s izjavom zahtijevati koji učinkovito uključuje ove nekoliko redaka. Dakle, da bude jasno, ovo je file config.php. I primijetiti ono što radi. To očito radi nešto grobni, okreće se na poruke o pogreškama tako da ih se može vidjeti u pregledniku. To je, dakle, očito zahtijevaju dvije druge datoteke pa to je kao #include u C, i onda je to onaj koji smo vidjeli, a mi smo se oslonili na to uzbuđuje da košarica poput funkcionalnosti. To znači kolačić volju biti poslan natrag i naprijed. Pa zašto je to zanimljivo? Pa, ako se vratimo na to katalog i otvoriti, primjerice, constance.php. Uočite da PHP radi podrške konstante, to nije baš kao u C # define Umjesto toga, doslovno kažu definirana, a obavijest da sam pohranjeni u unaprijed četiri konstante u ovu datoteku. Jedan za današnje baze podataka, za moja lozinka, za moje korisničko ime, i ime poslužitelja. Dakle, to su zapravo će biti prilično slični u problemu postaviti sedam. I na kraju, a to je mjesto gdje sam će dobiti neke lijepe funkcionalnost od osoblja u functions.php je hrpa koda smo pismeni, i ja ukrao neke od ovoga od problema postaviti sedam za danas, da se hrpa stvari i neka je samo pogled na jedan od njih posebno. Ova funkcija ovdje, upita, će biti PHP funkciju zovemo kako bi se izvršiti SQL. Maloprije smo bili pomoću phpMyAdmin, ali to je samo za kakve svrhe učenja i dijagnostičke svrhe i zaboravljajući svoj set baze podataka. Kada zapravo koristiti svoje baze podataka, što, ljudski, se očito ne ide da se povlačenjem mrežu stranica svaki put kad netko registrira. Ideš napisati kod koji ulošci i briše na zahtjev korisnika, i mi ćemo to učiniti putem funkcije upita. Ako ja sada pomaknite prema dolje, postoji će biti još nekoliko mogućnosti. Preusmjeravanje će biti u funkciju što je napisao za vas koji vam omogućuje da slanje korisnika na drugi URL, i učiniti je funkcija, kao što je prilično što smo vidjeli u ponedjeljak, koji zapravo čini predložak, ali više na njih u oblik pset7 vlastite šetnju. Za sada, idemo naprijed i to učinili. Pustite me u moj stol i predavanja vidim da je trenutno ništa Ovdje samo još, i neka mi ići u moj javni imenik, gdje su postoji samo jedna datoteka, index.php. Ova datoteka se čini super jednostavno u ovom trenutku, to izgleda ovako. Vrlo slično kako smo stali u ponedjeljak. Ja zahtijevaju ovu sliku, config.php, koji je uključuje katalog, koji u dot dot, moji roditelji, i onda je samo renderiranje ovu datoteku. Dakle, ono što je ovu sliku? Idemo se otvoriti u mojim predložaka form.php, pa ćemo vidjeti. Super jednostavno, očito ovaj obrazac je će se predati do $ _GET ili $ _POST. Brzo duševne ček. Doslovno vizualno traži datoteku. Metoda jednak posta. Dakle, to neće koristiti URL, kao što su Google ne, to će sortirati od kože Informacije iza scene i to će dostaviti Datoteka naziva register.php, i to je datoteka mi smo još uvijek nije zapisano ali što se to događa izgledati kao što je to. Ako idem na posebnoj stranici To je ono localhost / index.php izgleda. I opet, i poslužitelja Samo pod pretpostavkom index.php. Unesite. Dakle, to je gdje smo na, a ono što želim napraviti se moći upisati stvari kao David, a zatim moj broj telefona, što će reći 617-555-1212 za sada, registrirajte a sada register.php nije pronađen. Dakle, moram provesti ovo. Tako ćemo brzo bič nešto poput ovog gore. Pustite me u moj javni imenik i to gedit od register.php, a sada ću ići naprijed i pokrenuti PHP način, kao što smo učinili u ponedjeljak, i zatvorite PHP-tag, i neka je učiniti nekoliko stvari. Tako je jedan, znam, iz da je pisao taj oblik, da želim provjeriti u nastavku. Ako je prazna, bez obzira korisnik upisali na terenu ime, a zatim Ja ću reći nešto kao što se ispričavam nedostaje ime. Ispričavamo se, u međuvremenu, je nije izgrađen u PHP stvar, to je funkcija smo napisali U functions.php za pset7 tako da ćete imati pristup do njega. Inače, ako drugom području prazan, broj, onda sam će se ispričati Korisnik i reći nedostaje broj. Spremite ovu datoteku. Sad idemo natrag u svom pregledniku, povratak na forumu pokušajte ponovno. Registrirajte se. U redu. Ništa se nije dogodilo, što je dobro. Nisam se poruka o pogrešci. Ali ako umjesto toga, neka je ponovno ova stranica, a ne daju ništa. Prokletstvo. Učinite to. Registrirajte se. Što sam učinio krivo? Ako je prazna, $ _POST ime. Opet kažem? Oh, naravno. Zaboravio sam najvažniji dio, koji je potrebno ("../ uključuje / config.php."). Moram imati pristup Ispričavamo funkciju, što Zato se ništa nije događalo. Funkcija zapravo ne postoji. Dakle, pokušajmo to opet. Idemo ponovno učitati stranicu, kliknite registar. U redu. Tamo je. Dakle, izlazni smo vidim ovdje je rezultat pozivanja ispričati funkcija, super jednostavan, i to samo ispisuje god Ja ga dati kao argument. U redu, tako da ćemo surađivati. Idemo dati moje ime poput Davida, registrirajte, Broj nestalih redu neka je propisano je da, previše. 617-555-1212. Registrirajte se. U redu. Dakle, sve je dobro danas, baš ništa Zanimljivo se događa. Dakle, sada ćemo napraviti nešto više Zanimljivo dogoditi ovako. Pusti me u phpMyAdmin, i neka je zapravo stvoriti tablicu pod nazivom korisnik, Ja ću mu dati tri stupaca, a ja ću se brzo stvaraju ID, a zatim ime, a zatim broj, i ID polje sam će otići kao int. Ime polje idem ostaviti kao VARCHAR, a mi ćemo reći 64, nešto proizvoljno. Broj Idem da, znate što? Idemo u Podrži nas brojeve ovdje, pa ću napraviti nešto kao char a onda 10 znakova max za predbrojem a zatim sedam znamenaka. A onda ovdje, ja ću odrediti auto prirast ovom području, čine ovaj primarni ključ, a Ja ću ići naprijed, a ne provjeriti bilo koju od ovih drugih kutija. Dakle, kada sam sada konačno kliknite Spremi, i ja vratiti na moj stol korisnika, to je ono što izgleda kao da sam Sada kliknite na New Tab strukturu. Dakle, to, da bude jasno, je samo phpMyAdmin je način govoreći svoju tablicu baze podataka ima ID, ime i broj s tim određenim konfiguracijama a mi ćemo zanemariti ostatak polja tamo za sada. Pa sad ono što želim učiniti? Dakle, ako ja odem sada u mom izvorni kod, ako je sve u redu Želim izvršiti sljedeće upit. Umetnite u, a ja mogu samo kažu korisnik ne mislim strogo potrebna onima koji su krpelja, ako je to Nije opasna riječi poput korisnicima. Ja ću reći ime, broj, a onda ovdje sam Ne ide se tvrdi koda znamenka vrijednosti još. Ja ću staviti dva upitnika. A to je konvencija u mnogim jezicima pri čemu, ako želite imati rezervirano mjesto za niz idete koristiti pitanje maraka, iz razloga što ćete vratiti na razgovor o tome sigurnost, a ovdje Ja ću proći u onima dva polja objaviti ime, a onda postavljati broj, a sada spremite datoteku. A sada ću ići ovdje dolje je super jednostavno reći rendersuccess.php, koji će biti još predloška. Ja ću napraviti jako brzo. Geditsuccess.php a ja sam samo idući reći H1 uspjeh u toj datoteci. U redu. Tako sada, idemo natrag preglednik, gdje sam posjetio prije. Idemo naprijed i potvrdite sam napisao u Davidu, napisao sam u telefonskom broju, registrirajte. Prokletstvo. Što sam učinio krivo? Pa vidim pogrešku ovdje, Vas ima grešku u vašem SQL sintakse. Dopustite mi da skok natrag u gedit, neka ja vratiti u register.php, i što sam propustio da je važno zadnji put? Trebam to. Želite znati da osim iz ima primijetio prije, ali moram to. Tako sada idemo natrag, a to bilo korisno vidjeti u pregledniku i to je razlog zašto u config.php smo ispljunuti pogreške. Idemo naprijed i ponovno, kliknite Nastavi, uspjeh. Pa sad neka mi ići preko na moj Baza podataka ovdje i kliknite na korisnike, i pregledavati, i primjetiti ja sada imaju Davida u mojoj bazi podataka ovdje. Sada je tehnički ovaj website još nije na javnom internetu, pa ne mogu imati druge ljudi u stavljajući ovdje ali ako sam sad htjela, za instanca, pošalji si tekstualnu poruku. Idemo u raskoraku ovdje i vidjeti je li to zapravo radi. Ja ću ići naprijed i izbrisati ovaj redak a mi ćemo to zamagliti u videu kasnije tako da nemamo Cijeli internet me tkanina, a sada će ići i do preglednik i mi ćemo prijeći na predavanje a mi ćemo upisati različita broj ovdje, registrirajte se, uspjeh. Tako sada, moj broj je vjerojatno u baze podataka, a sada zabavni dio. Idemo zapravo koristiti PHP učiniti nešto programatski, bilo iz naredbe linije ili od negdje drugdje, i za sada sam samo će ga zadržati jednostavan a ja ću otići u moju katalog ovdje i napraviti sljedeće. Gedit skriptu recimo, mi ćemo zovu ga tekst, #! / Korisnik / bin / ENV PHP, kao što smo vidjeli posljednji put. PHP. Sada ću potrebna uključuje config.php, iako to izazivaju blagi pogrešku. A sada ću ići naprijed i reći redaka, upita, odaberite zvijezda od korisnika, a sada ovdje ću napraviti tehniku od prošlog puta za svaku redovima kao zaredom. A ja ću učiniti nešto jednostavno. Printf recimo ime je to, a broj je to, backslash n. A sada ću proći u redu citiram citat ime, i red citat citat broj, a sada idemo naprijed i moj prozor terminala chmod to + x napraviti Ova skripta zove tekst izvršna. A sada ćemo pokrenuti tekst. U redu, tako da napredujete. Tako sam sada sam napisao naredbenog retka skripta, u jeziku zove PHP, da, zbog toga zahtijevaju liniju, ima pristup svim tim konfiguraciji Konstante da navedene. Naziv baze podataka i tako dalje. U stvari, samo da bude jasno da to nije slučajnost, neka mi ići naprijed i registrirati, jako brzo, netko poput Rob i da će mu dati broj 555-1212. A sada, ako sam pokrenuti skriptu Ponovno, primijetiti moć onoga što radimo s bazom podataka. Sada sam odmah vidio što Druga dva reda su u mojoj bazi podataka. Dakle, sada ćemo pokušati učiniti nešto ni ljubitelj unutar, i to je dio mi smo nije testirano unaprijed pa zadnji put sam to učinio što je otišao užasno krivim putem, imamo video za tu svrhu. Zapravo, da, smiješno stranu. Tako je posljednji put, u predavanja kao i prije dvije godine, odlučili smo, odlučio sam, da se Sve to će biti velik ideja dinamički generirati e-pošte u klase, koristeći cijelu bazu podataka CS50 studentima, koji su nam dali svoje brojeve i njihovi nositelji mobitel koji vam Podsjetimo od pset0, kako urazumiti, ispada Imao sam manju grešku u mom programu i učinio par pogrešaka u 2012, mislim. Čime, jedan sam imao petlje za to učinio upravo takve stvari, iterating preko baze podataka, uzimajući ime iz baze podataka, ime iz baze podataka, a zatim na svakoj iteracija te petlje sam poslao e-mail. No, umjesto slanja e-mail, ja poslao jedan e-mail prva iteracija, i dvije e-mail druga iteracija, poslao tri e-mail druga iteracija, koja kao što ste mogli sjetiti iz naše rasprava o asimptotsku zapis ovaj veliki O je loše, kao što je n kvadrat je koliko poruka sam poslao, ali to nije bilo ni e-mail to je bio tekstualne poruke. A kao što znate, posjećenost nije super visoka prema kraju semestra pa sam mislio da će to biti slatko na Vrijeme je da kažem: "Zašto nisi klase?" U SMS poruci I. poslan cijelom razredu, i to je smiješno da se sviđa 50% klase, ali drugih 50%, od kojih su neki izbezumio, ja poslao nevjerojatno obranaške slatke note za osoblje ispričava nakon što je propustio predavanje upravo ovaj put, zar ne? Tako da bi užasno krivim putem. Dakle, u tom duhu, pokušajmo ali opet samo s mojim brojem. U unaprijed, u functions.php, Ja sam napisao ovu funkciju ovdje. To se zove tekst, i to traje u tri argumenata. Broj, prijevoznik, i poruka. Ja sam koristeći izjavu prekidač koji predivno PHP uzeti konce, a ne samo cijeli brojevi, a nisam implementirati Sve podrška za to još, Upravo sam učinio AT & T i Verizon. Zbog ispada da je s tim prijevoznicima imaju e-mail na SMS gateway, gdje možete zapravo poslati e-mail na adresu kao i broj telefona na vtext.com a ako korisnik nije blokiran poruke, to će proći je SMS poruka. Sada to učiniti, ja ću morati dodati jedno polje jako brzo u moju bazu podataka. Ja ću ići u moja struktura, a ja sam ići naprijed i dodati polja na kraju stola. Idemo kliknite Idi, a ja sam nazvati ovaj nosač a za sada ću ostaviti to kao bar teksta, ali možemo biti ljubitelj u budućnosti. Ja ću brzo otići na mom stolu, a ja sam će se riješiti Rob, jer to je lažni broj, Ja ću ići u uređivanju ovdje, a ja sam ide ručno promijeniti svoju karijeru biti Verizon, što ga je, a sada ovdje. Idemo napraviti brzu provjeru razum. Otvorimo naš tekst skriptu koja izgleda ovako, nosač je% s. Radimo puno više pogrešku provjeru nego što sam učinio u 2012., nosač. A sada, ja ću otići naprijed i ponovno pokrenuti skriptu. U redu. Prijevoznik je Verizon, što znači Sada nadamo se ja mogu učiniti upravo to. Ispravno ove godine, nadam se, ovdje mi ići. Dakle, unutar toga za petlju, ja sam će ne samo ovaj printf, Ja sam također nazvati teksta i uporaba ove funkcije opoziv Bio je potrebno broj, Nosač i poruka. Tako ćemo vidjeti, broj će se biti red citat citat "broj" red citat citat "nosač" a zadnja je bila poruka. Nemojte zeznuti ove godine, zarez. U redu. Fige. Idemo vidjeti ako to radi. U redu, tako. Ovdje ćemo ići. Idemo otključavanje telefona, fige, k vragu. Neodređeno promjenjiva may-- oh čekajte, čekajte, čekajte, jako brzo. Jako brzo, jako brzo. Ovo je totalno isplati. Dopustite mi da zgrabite, dopustite mi da zgrabite, uh-oh. Hvala vam, tekstovi imaju počeo od nekog drugog. Dopustite mi ići naprijed i otvoriti stvarne brzo, dropbox.php / mail ovdje. Standby. Totalno isplati. Preuzimanja. U redu, izvor src8m. U redu. Trebate još jedan redak ovdje. Ma tu je, to je u Frosh IM, to je u registar u tri. Oh hello, Margo, puno ti hvala. OK, i ja je nestalo ovu liniju ovdje. Pa neka mi brzo zgrabite ova linija koda, koja uključuje mail ili knjižnicu da sam zapravo želite koristiti, Idem brzo vratiti u funkcijama, Ja ću ići na vrh ove podnijeti i zahtijevaju ovu sliku kao dobro, i sad ću stvarno prijeći mom prstima kad sam se vratiti na naredbu Linija skriptu, što je unutar danas lokalni domaćin katalog. Trčanje tekst. Unesite. Mail. Standby. Standby. Mail. Oh, u redu. Ovdje ćemo ići. Mail dobiva novu PHP cirkularnu. Je li ja to pravo? Prokletstvo. To-- oh, čekaj, čekaj, čekaj. Stand by. Obećajem, ovo je će biti tako isplati. Adresa. To je razlog zašto ja ne bi primjeri pravu prije klasi. Uh. Sljedeće primatelji nije uspio. Pokušajmo još jednu stvar. SMTP postavljene, dodajte adresu, adresa je doista to. Pokušajmo ovaj zadnji dio u adresi. Ah, stvarno sam tužna sada. Hvala Vam. Ali ja stvarno poštovati sve tekstovi ste slanja. Imaš ovu Davida. Vi ste ga puše. Ostavimo to tamo i mi ćemo popraviti u ponedjeljak. Vidimo se onda. DAVEN FARNHAM: A sada duboko Misli po Daven Farnham. Ako binarno stablo padne u šumi i nitko se oko C it-- [smijeh].