[Přehrávání hudby] DAVID J. Malan: Dobře. Vítejte zpátky. To je CS50. To je konec týdne 8. A jak víte, máme dost pravidelné úřední hodiny v několika z jídelny, včetně Annenberg. A někteří z týmu laskavě udělali pár fotek v poslední době. A na počest Halloween, mysleli jsme, že bychom sdílet ten, který nás spíše vystihuje překvapení tady v sále jen Annenbergova v noci. Váš spolužák Jacob pózovala pro Tato fotografie, ale zábavnější byla na Facebooku, následující rozhovor, co se stalo potom. Jeho první příspěvek v odpovědi jeho fotografie byla tato. O několik minut později, když se rozhodl jeden až sebe s tím. To šlo a pak jít na to, a pak, ještě zábavně je, když jeho máma přizvukoval. A pak konečně, zdá se, to byl jen skvělý trik pro hrát, co se děje. Takže pokud byste chtěli vidět Jacoba a další, mezi nimi Cynthia Meng, který je zákulisí CS50 zóny zaměstnanců, zamířit na tuto adresu URL a této hře zde. Takže bez dalších okolků, dnes pokračovat v tomto Podívejte se na webové programování, a skutečné tvorba programů že neběží na příkazovém řádku, ale místo toho použít uvnitř prohlížeči. Pravděpodobně teď, nebo velmi krátce, budete být uprostřed provádění vlastní webový server, který se liší od webové programování. WWW server v pset6 je vše kolem psaní software, který ví, jak se Požadavky protokolu HTTP z webového prohlížeče, nebo dokonce z vás, člověk, s programem s názvem Telnet, a pak reagovat na tyto žádosti buď by vyplivl HTML soubor, nebo jpeg, nebo gif, nebo dokonce .php soubor. Ale s webovým serverem, není to předpokládá, že stačí otevřít soubor PHP, něco, co končí v .php, a pak vyplivnout obsah. To má dělat co do tohoto souboru první? Abych tak řekl. Ne zkompilovat, jsme si řekli v pondělí, ale rather-- Takže interpretovat. PHP je interpretovaný jazyk, a tak jedním z klíčových funkcí ve Vašem webovém Server, i když prováděna námi, je tato schopnost pro váš webový server všímat, oh. Jedná se o soubor končící .php. Dovolte mi, abych nejen poslat na Uživatel, jako by to statický obsah, ale dovolte mi, abych ho četl řádek po linka, zleva doprava, a interpretovat jej. A k tomu, že vás kluci budou v podstatě pramici na programu v zařízení, a na mnoha počítačových systémů, Právě volal PHP. To je název PHP Jazyk vlastní interpret. Tak, že kus realizujeme pro vy, a to, co zbylo pro vás, nakonec je číslo kusů, mezi nimiž je provádění podpory pro statický obsah. Ale teď, a problém nastavit sedm, jste začnou se přechodu na vlastně psát PHP kód který se interpretovat v rozhovoru s back-end databáze, která ukládá informace. Tak ať je lepší nejprve pochopit, pár těchto superglobals a jak moc moc vás dostat ven z krabice zdarma s jazykem, jako je PHP. Věci, které nemají realizovat sami. Takže jsme viděli v pondělí $ _GET, což je superglobal, který je právě PHP mluvit za globální Proměnná můžete přistupovat kdekoliv. A to, co je uvnitř $ _GET? Co je uvnitř tohoto superglobal, co vidíme? Jistě statisticky na Nejméně jedna osoba ví. Co je uvnitř $ _GET? Jo? Diváků: Je to proměnné si dát v řetězci dotazu. DAVID J. Malan: Perfect. Je to na vás proměnné dal v řetězci dotazu. Takže, v našem příkladu starší reimplementing Google, když jsme měli URL, a pak otazník, který vymezuje počátek HTTP parametry, pak jsme měli q rovné něco, jako q se rovná kočky, co by automaticky dovnitř z toho $ _GET Super globální pro vás, protože PHP, je klíčovým Q, a hodnoty jejich koček. Jinými slovy, $ _GET a všichni tyto věci jsou asociativní pole, hashovací tabulky druhu, že ukládat klíče a hodnoty. Nyní, v roce pset5, hash Tabulka jste mohli realizovat, nebo pokusu může zavedly, opravdu byl účinně asociativní pole, datová struktura kterým můžete přiřadit klíče s hodnotami. Ale v pset5, hodnoty byly triviální. Hodnota byla v podstatě pravdivý nebo nepravdivý. Je slovo ve slovníku? Takže, když hash slovo, jako jablka aby zjistil, jestli jablko je ve slovníku, šek funkce pravděpodobně vrátil true nebo false. Takže, to je účinně hodnota se dostáváme zpět. Ale my jsme viděli v pondělí Stručně řečeno, můžete samozřejmě spojit zajímavější hodnoty než jen true nebo false s klíči, jako jablko. Dalo by se dokonce vrátit libovolný řetězec, a opravdu, to je to, co $ _GET a tyto ostatní proměnné vám to. Takže $ _POST je podobný v duchu, ale pokud odešlete formulář poštou, jiný způsob HTTP, která je používá pro věci, jako je kreditní karty, a osobní údaje, a to i binární informace, jako jsou fotografie, ty věci, skončí uvnitř $ _POST. A vlastně soubory jako JPEG a kdoví co ještě, je tu i jiný, že to není sem volal $ _FILES stejně. Takže serveru nebudeme zabývat příliš moc, ale to vám dává přístup třídit nižších detailech úrovni o samotný server, který používáte. Cookie a zasedání, i když, budeme skutečně vidět teď. Poslední je to, co použít k implementaci pojem nákupního košíku. Super jednoduchý, ale odvolání že tento příklad zde měli, počítat, kolikrát jste už tuto stránku před navštívili. Ale dnes, spíše než jen se podívejte na účinek tohoto, pojďme otevřít Chrome Inspector, které můžete obvykle provést kliknutím pravým tlačítkem myši nebo kontroly klepnutím na libovolné místo na webové stránce, a pak zvolte příkaz Prozkoumat prvek. Nebo můžete jít přes menu které popíšeme v pset6 se spec. A já jdu na kartu Síť tady, a pojďme se dívat na chvíli HTTP provoz, který je tam a zpět. Dovolte mi, abych nejprve pokračovat a cache Smazání Chrome. Takže někteří z vás mohou být obeznámeni s touto technikou již, a budeme ji používat tady účely ladění. Nyní se jako počítač vědci začnou Přitom pro ladění účely, přičemž budeme vymazat vyrovnávací paměť, typicky, abychom Můžete se zbavit věcí, označované jako cookie. Takže jste asi obecně seznámeni s tím, co jsou sušenky, nebo alespoň že existují, ale to, co je vaše pochopení z nich, jen jako uživatel počítače, co je to soubor cookie? Jo. Diváků: Je to trochu of-- dobře, ne bit v období informatiky. Je to údaj, že Webové stránky pošle na vás, aby aby bylo možné zaznamenávat statistiky na vás. DAVID J. Malan: OK, dobře. Takže je to údaj, že serveru, dá do počítače, a pojďme zobecnit, i víc, je to klíč value-- dobře, že je stále přesnější. Jedná se o kus Informace, údaj, že server je schopen aby na vašem počítači a velmi často, server dělá to tak, jak si uvědomit, kdo jste. Tak například, kurzy jsou pak jste pravděpodobně přihlášen do lokalit, jako je Facebook, nebo Gmail, nebo jiní před, a přihlaste se pomocí svého uživatelské jméno a heslo, a pak po které se z nějakého počtu minut nebo hodin nebo dokonce dnů, Server si zapamatuje, že jste ve skutečnosti přihlášen. A teď, jak se to vlastně děje? Vzhledem k tomu, že jste rozhodně není přepisování Vaše uživatelské jméno a heslo pokaždé, když přejdete na jinou stránku na Facebooku. Tak to dopadá Cookies jsou odpovědí. Cookie si můžete myslet, as, Něco jako, digitální ruku razítko, které můžete získat za pobavení parku, nebo klub, který v podstatě indikuje jste tady dříve, a vy jste již zobrazeno Vaše ID na vyhazovače, pro instance, a to klub nebo park by nyní předpokládat, že vás byly ověřeny již. Už jste byly identifikovány tím. Takže s tím na mysli, pojďme otevřít čítače zde. Nech mě jít napřed, jen jsem to udělal, a zrušte zaškrtnutí všech mých cookies. A teď, co budu dělat, je podržte klávesu Shift, jen pro jistotu, a násilně obnovte stránku. Shift jen se ujistěte, že se nic mezipaměti. A tady je žádost že šel tam a zpět. Takže tady máme požadavek, a nechat me přiblížit tady, a hodně z toho je trochu nezajímavé údaje pro Nyní, že prohlížeč má automaticky poslal, ale pojďme na položku Zobrazit Zdroj vidět syrové hlavičky. A pokud jste skočil do pset6 již, budete jistě poznat, co takhle, a možná některé těchto dalších řádcích, ale co je ještě zajímavější pro dnešní den když jsem se posunout dolů, nikoliv na žádost ale tzv odpověď tento řádek pravděpodobně vypadá povědomě. To je dobrá věc, když vidíte 200 OK. Zřejmě to je datum a čas na serveru a je tu spoustu věcí. Ach, to je zajímavé. Ukázalo se, že při každém použití PHP, alespoň v tomto serveru, Server vyplivne to, co Verze PHP používáte. Což vlastně k bezpečnosti účely, není dobrá věc. Ale budeme se vracet k tomu jindy možná. Ale teď je to šťavnaté linka dnes, a stručně viděli některé z nich, Myslím si, že se s Facebook účtem, když tropil kolem inspektora v té době, soubor cookie je to, co je výsadba že malý kousek informací na vašem počítači. Toto je záhlaví HTTP to je účinně vyprávění prohlížeče Chrome, IE, cokoliv, hey prohlížeč obchod na uživatele pevný disk, nebo do paměti RAM uživatele, klíč s názvem PHPSESSID, což je zkrácený zápis pro ID relace, a dát mu hodnotu 0vlk8t, tečka, tečka, tečka. Opravdu dlouho pseudo náhodný alfanumerický řetězec. Je to jen opravdu velké číslo, ale to je kódován s písmeny a čísly tak, aby velikost to může být dokonce větší než samotné čísla. A pak, jen tak mimochodem, Path = /, že prostě znamená, že tato cookie měla být spojené s celistvost webových stránek, nejen konkrétní strana celá věc. Tak tohle je to, že virtuální ruku razítko. Je to, jako by se na serveru, Facebook, nebo v našem případě spotřebičů, má doslova písemného 0vlk8t a tak dále, na své ruce. Všimněte si, co se na serveru, ne dělat je, že to není ukládání moje uživatelské jméno, určitě není ukládání své heslo. Místo toho se zdá být ukládání pseudo náhodný informací tak, že nikdo nemůže odhadnout, co moje ruka razítko. Na straně serveru, Mezitím server bude mít na paměti, pravděpodobně v databázi nebo tak něco, že uživatel, který v budoucnu představuje ruční razítko 0vlk8t, tečka, dot, dot, by měl být spojen s tímto zejména nákupní košík, abych tak řekl. Jinými slovy, když jsem teď jít sem a znovu načtěte tuto stránku jak se server vědět že jsem navštívil jednou? Nebo pokud bych to znovu, jak se na server vím, že jsem ho navštívil dvakrát? No, pokud bych šel do této poslední požadavek, který Nyní je třetí, kterou jsem poslal celkem, všimněte si, moje žádost nyní. Stále je to požádat až sem, stejný jako dříve, je tu ještě celá parta z věcí, které jsme ignorovali jako dříve, ale úplně poslední záhlaví, to čas, protože jsem tu byl, je prezentace tento virtuální ruční razítko. Přičemž tato linie zde, není nastavena cookie ale cookie tlustého střeva PHPSESSI = 0vlk8t, to je jen můj prohlížeč je automatické Prezentace této straně razítko tak, aby Nyní server, jakmile si uvědomí, ooh, je to uživatel 0vlk8t dot, dot, dot, Nyní mohu vzpomenout, kým je a reassociate s tímto uživatelem cokoliv Informace chci, a všichni že informace mohou být uloženy Vámi, programátor, v $ _SESSION. Tak, aby bylo jasno, když jsem otevřít opravdu rychle v gedit, že skutečný soubor, counter.php, v mé místní hostitelské veřejném seznamu stejně jako předtím, všimněte si, že skutečně Já jsem nakonec ukládání $ _SESSION Citace konec citátu "pult" hodnota čítače, které předchozí Mám z těchto řádků tady, že my Podíval se na poslední dobu plus jeden. Tak pod kapotou, to všechny cookies. Je to přesně ten typ digitální ruční razítko tam a zpět, a upřímně řečeno, pokud otevřete Chrome je Inspektor na jakýchkoli webových stránkách, navštívit dnes, Super vysoká pravděpodobnost, budete vidět možná jeden, možná půl tuctu sušenky vzpomíná vás. A ještě hůř, pokud ti, Webové stránky jste na návštěvě všichni mají reklamy, které je jistě docela běžné dnes, a pokud tyto reklamy se blíží z nějakého centrálního strany, někoho jako je Google nebo AdWords, jak se zavolejte na jedno z jejich produktů nebo jiných takových prodejců, že prodej reklamy, co je zajímavé, a upřímně řečeno, to, co je trochu znepokojující, o tom, jak funguje HTTP, je, že pokud máte ad vložený v Facebook.com a Google.com, a Harvard.edu, libovolný počet webových stránek, takže je to takový že existuje střední člověk, který si odpykává up reklamy na všech třech těchto webových stránek, Ukazuje se, že Cookies jsou na doméně. Takže pokud máte reklama pocházející z Stejná společnost na různých internetových stránkách, že společnost může účinně sledovat, kdo jste na všech těchto webových stránek. Harvard možná nevíte jste na návštěvě Facebook. Facebook nemusí vědět a jste na návštěvě Harvard. Ale ať už ad servis Používají-li, že je doména přítomen v obou Harvard.edu webu stránky a Facebook.com webové stránky, tento střed muž jistě ví, kdo jste protože tyto soubory cookie sdíleny celé, nebo spíše, že tzv prostředníka. Takže se vrátíme k tomu v bezpečnostní důsledky z nich, ale je tu spousta informací jsou uloženy informace o vás, kdykoliv budete navštívit největší libovolnou webovou stránku na internet a je to opravdu redukuje na tento velmi jednoduchý mechanismus. Co se stane, pak, pokud jste super paranoidní a vy se rozhodnete jít do Chrome nebo IE nebo co a vypnout soubory cookie? Co se stane? Jo? Můžete really-- jsi udělal toto právo? OK. Ne, jděte do toho. Diváků: Některé webové stránky nemají funkce bez ní, jako je Facebook. DAVID J. Malan: Yeah! Takže některé webové stránky se prostě přestane fungovat. A ve většině webových stránkách v těchto dnech které zásadním způsobem spoléhají na cukroví, zejména mají-li se přihlásit v, oni jen tak zlomit. Vzhledem k tomu, vzít v úvahu alternativa, v případě, že webové stránky nemá žádný způsob, jak si pamatovat, kdo jste, a proto je webový prohlížeč není představuje s každým HTTP Požadavek této straně razítko, efektivní webové stránky jako je Facebook se děje mít s výzvou k přihlásit každý zatraceně čas změníte stránek, nebo klikněte na odkaz, který je jistě nijak zvlášť dobrý uživatel zážitek. Tak to tam taky je Mezi kompromisy. Takže bez dalších okolků, pojďme se za samozřejmé, že se programování pro web, v jazycích jako PHP, můžete si uvědomit, informace, jako že v problému nastavení sedm let, když se rozhodnete svůj vlastní E * Trade-jako webové stránky, se kterými koupit a prodávat akcie, budete pamatovat přesně, co uživatel koupil a prodal a který on nebo ona je prostřednictvím tohoto zasedání. Ale budeme potřebovat milovník způsob, než e-mail na začátek uchovávání informací kolem. Je to tak? V pondělí jsme si povídali o Frosh IM a jak ve verzi jednoho z těchto webových stránek, Před lety, všechno, co jsme udělali, bylo e-mailem Proctor, který je na starosti intramurálních sportů programu, jméno a pohlaví, a zda nebo ne oni jsou kapitán, a koleji někoho, kdo je registraci intramurálním sportu. Takže to není špatné, ale on nebo ona pak musel troll přes jejich e-mailu, vytvořit tabulku, nebo něco takového to, aby vše zorganizovat. Tak určitě my, programátory to může udělat pro tento Proctor. A tak vstoupí v SQL, Structured Query Language, který bude vypadat pěkně liší jak C a PHP, a budete potápět mnohem více rukou PHP a problém nastavit sedm, ale také SQL nebo SQL, je to jazyk, který Používáte mluvit do databáze. Ale co je to databáze? Dobře si myslíte, že databáze, alespoň pro tuto chvíli, jak jen být jako soubor aplikace Excel, nebo Pokud jste uživateli čísla souborů Mac, nebo pokud jste Google Apps uživatel tabulky Google, je to efektivní databáze, nebo opravdu konkrétně relační databáze. Relační databáze je jen něco, co má řádků a sloupců, a můžete ukládat jakékoliv Informace uvedené v těchto řádcích nebo sloupcích. Ale to, co je hezké o SQL a o aktuálních databázích, a to nejen tabulky nebo Google tabulky, je, že můžete použít jazyk skutečně provádět dotazy vložit data pro odstranění dat, hledat dat, a to i co je nejdůležitější, a ti Nemusíte používat poměrně ručně Jak jste si možná běžně Google tabulkový takhle. Tak v SQL, je to banda základní příkazy nebo kusy funkčnosti postavena v roce. Je tu mnoho více než ti, ale můžete jít na velkou vzdálenost jen tím, že věděl, že tento jazyk nazývá SQL má alespoň čtyři prohlášení, že můžete využít. Odstranit pro odstranění dat, Vložte, pro přidávání řádků, Aktualizace pro změnu řádky, a výběr, pro získání zpět řádků a že je to opravdu to, co dělá SQL. Působí pouze na řádcích tak že při vložení nebo odstranění, nebo aktualizace, nebo vybrat, co jste dostat se zpátky jako tzv sady výsledků, jako pole řádků. Banda řádků z tabulky. Takže zpět v den, a dokonce k tomuto dni, můžete komunikovat s databáze pomocí příkazového řádku, ale není to nijak zvlášť zábavné to černé a bílé okno styl a vlastně spustit příkazy a hrabat kolem databázi. Grafické uživatelské rozhraní, nebo GUI, je mnohem výhodnější, pravděpodobně, a tak se nástroj doporučujeme a předinstalované na vás na spotřebiče se nazývá phpMyAdmin. Je to celkem náhoda, že Název této věci má PHP v tom, znamená to, že lidé, kdo napsal tento program se napsal v PHP. Ale je to nakonec o správě databázový server, jako server MySQL že byste mohli mít, jak ano, v CS50 spotřebiče. Takže tam je více podrobností zde než musíme se starat o dnes, ale to, co je klíčové je, že na levé straně straně je seznam databází že máte na svém počítači, na vašem CS50 spotřebiče nebo přijít závěrečné projekty, které byste mohli mít na třetí strany, společnost je webové stránky nebo webový server, který můžete platit za prostor. Takže na levé straně je databází, z nichž jedna je pset7, který jsem si půjčil od vedle týdny pset, a pak na vrcholu tam si všimnout, že je banda karet, z nichž jeden je databáze, SQL, stav, uživatelé, export a tak dále. Takže můžete jít dlouhou způsob, jen tím, že si uvědomil, že většina z uživatelského rozhraní je v levém horním sloupci a přes vrchol až tam. Takže to, co můžeme skutečně udělat s tímhle? Dobře, pojďme začít vytvářet bit informace takto. Předpokládejme, že následující situace, jak bude za pár dní, Chcete-li implementovat webové stránky s názvem CS50 Finance, a tyto stránky vám umožní koupit citovat konec citátu a prodávat akcie. A to bude přijít na to, cena těchto akcií, nakonec, jak uvidíte, tím, že mluví do Yahoo Finance. Které nádherně, má bezplatnou službu kterým můžete projít v burzovní jako GOOG pro Google, a to bude vám zpět aktuální zásoby společnosti Google cena v minulosti několik minut nejméně. Takže budete používat, že nakonec, předstírat, že pro uživatele nakupovat a prodávat skutečné zásoby pomocí virtuálních peněz, ale první věc, uživatel to bude vidět to je přihlašovací obrazovka, která je žádá pro jejich uživatelského jména a hesla. A tak, jako jeden z prvních výzvy pro vás pset7 bude realizovat zadní část databáze, tabulky chcete-li, že to bude ukládat uživatelské jména a hesla a nakonec to, co zásoby, které vlastní, a kolik, a kolik peněz mají, tak spoustu dalších věcí jiné tabulky nebo tabulky. Takže pojďme se podívat na to, jak to by se mohlo na první pohled zdát. Chystám se vrátit do zařízení a já jsem jít na tuto adresu URL zde phpMyAdmin localhost / phpMyAdmin a uvidíte, že to vezme mě do rozhraní přesně tak, jak jsme viděli na screen shot, a tady jsem mají další databáze volal přednáška pro dnešek a nech mě jít napřed První a klikněte na pset7. Zdá se mi, že mají několik možností, jeden pro nové, pro vytvoření nové tabulky, a odkaz na uživatele, který je tabulka již jsem vytvořil. Takže to, co je tabulka? Takže pokud jste použili Excel dříve, a pokud jste použité čísla nebo Google Tabulkové procesory, můžete otevřít okno a dostanete spoustu řádků a sloupců, ale pak obvykle mají listy po dně, nebo samostatných záložkách. Můžete myslet na sebe list jako tabulku aby databáze, v konečném důsledku, je kombinace jedné nebo více tabulek, jedna nebo více listů, v svět normální tabulky. Tak nech mě jít dopředu a klikněte na tento listu že jsem premade, tzv uživatelé, také známý jako Databázové tabulky. A kdybych přejděte sem, dovolte mi, abych oddálit trochu, To je to, co říká phpMyAdmin nás je uvnitř této tabulky právě teď. Je to trochu matoucí na první pohled pohled, protože UI není nejkrásnější věc na světě, ale to, co je zajímavé, je tato část zde. ID, uživatelské jméno a hash. Předem, a budete rukou To problém nastavit sedm, my vám soubor, který obsahuje super malé databázové tabulky, půjčil si vlastně od hackera vydání o problém nastavit dva, uvnitř které je šest řádků. Jeden pro Belinda všechny způsob, jak se k jednomu pro Zamyla, a všimněte si na levé straně těch, uživatelská jména jsou jedinečné ID jako jeden, dva, tři, čtyři, pět, šest, celá čísla, a pak se na pravé straně jsou hodnoty hash. A pokud jsou šance, že jsi to neudělal Problém hacker vydání nastavit dva, ale hash je stejně jako zašifrovaný Heslo s několika výhradami. A tak to, co vidíte zde šifrovaná verze všech šest z našich hesel z problému nastavit dva je hacker vydání. Nyní na levé straně je jen pár GUI věci, editaci tohoto řádku, kopírování tento řádek, odstranění tohoto řádku. Ale co je zajímavé, Nyní je následující. Mohu skutečně začít experimentování s touto tabulkou. Takže když jdu a klepněte na tlačítko SQL karta, jsem si tuhle velkou textové pole. A to není, jak budeme to, když vlastně psaní kódu. Aby bylo jasno, phpMyAdmin je jen nástroj, který je bude nám hrabat kolem databázi a dejte nám experimentovat s dotazy. Tak například, že I spustit právě tento. Select, který je jedním z těch, klíčová slova jsem již zmínil, hvězda, která se podílí sloupce v tabulce. Z toho, co stůl? No, uživatelé. A upozornění, že je to divný konvence v SQL kde jste skutečně používat zpět klíšťata, typicky, Není jednoduché uvozovky a ne dvojité uvozovky když mluvíte o tabulky jmen, takže zpět citace je věc na Horní levá ruka na klávesnici nejvíce pravděpodobné. Tak nech mě jít napřed nyní a nech to samo o sobě a přejděte dolů a klepněte na tlačítko Přejít, a my jsme vlastně bude vidět to samé. Jen jsme realizovali dotazu SQL říká vybrat vše hvězdu z tabulky s názvem uživatele, a to, co dostanete zpět, je to. Nakonec budeme moci udělat to samé v kódu, ale teď vše, co jsem chtěl to bylo vidět, že ve svém prohlížeči. Tak pojďme něco udělat trochu jinak. Nech mě jít zpátky na kartu SQL, a řekněme, že to, co? Zamyla ztratil vše o ní peníze, a proto je čas pro nás, aby ji smazat jako uživatel. Ona už není přihlášení. Takže jsem chtěl říct smazat from-- dobře, udržovat kapitalizaci konzistence, vymazat od uživatelů, kde. A tak můžeme mít tyto predikáty, nebo tyto kvalifikace, na konci svého prohlášení kde a jak bych mohl smazat Zamyla? Její jméno Zamyla, tak sloupec, jeden ze sloupců byl jmenován, tak kde name = "Zamyla". A tady jsem použít double citace nebo jednoduché uvozovky, použít pouze zadní klíšťata, kdy mluví o jménech, například, tabulek a polí. A dovolte mi, abych na tlačítko naleznete zde. A teď, webová stránka je být trochu nervózní. Nebo opravdu chcete provést smazat od uživatelů, kde název odpovídá životnosti Zamyla? Ano. Takže teď, když se vrátíme k mému stolu klepnutím na možnost uživatele si všimněte, že Hm. Podělal já. A ve skutečnosti, jsem tak trochu klikli pryč tak rychle, jste ani vidět červené chybové hlášení, možná. Co jsem udělal špatně? Diváků: Nemusel jsi využít její jméno. DAVID J. Malan: Jo, já vydělával její jméno, ale její username-- Vlastně jsem udělal pár chyb, ne? Jeden z nich, její jméno je zamyla, malá písmena Z, a název sloupce je uživatelské jméno, nejmenoval, tak se pojďme to udělat znovu. Nech mě jít napřed a odstranit ze uživatelům, pokud Uživatelské jméno rovná citovat unquote "Zamyla". V pořádku? Takže to vypadá o něco lépe, ať mě jít přejděte dolů a klepněte na tlačítko Přejít. Je to stále bude křičet na mě pro jistotu. I klepněte na tlačítko Ano, a teď vidíme, Upřímně řečeno se to stalo, opravdu rychlá, méně než jeden Druhý jistě, to je přesně dotaz, který dostal popraven. Chcete-li potvrdit, dovolte mi, abych na tlačítko uživatele a opravdu teď Zamyla je pryč. Nyní se pojďme udělat pravý opak. Předpokládejme, že Gabe chce zaregistrovat na internetových stránkách. Co je to SQL dotaz, co je Příkaz bych mohl psát přidat Gabe? No je to docela jednoduché. Vložit do uživatelů, a teď to je trochu tajemný. Musím upřesnit, na server, co pole chci přiřadit. Nemám opravdu jedno, co Gabe ID číslo, takže budu přeskočit, že. Já místo toho chtěl říct uživatelské jméno, hash, a pak hodnoty Chci vložit tam bude Gabe. A pak jeho hash, nevím. Takže teď jdu nechat to jako velký dělat. Vrátíme se k že v nastavení problém spec, jak vlastně udělat. Takže si všimnout, opět, syntax. Vložit do názvu tabulky, pak závorkách seznam polí, sloupce, které chcete přidat hodnoty, a potom jen stejný přesné uspořádání zleva přímo z hodnot, které chcete přidat, a to jen proto, že balení text je poněkud delší. Takže teď mi dovolte klepněte na tlačítko Přejít. Jeden řádek vloží. A teď když jsem se vrátit do uživatelé, co je zajímavé je to, že není pouze Gabe nyní v databáze, což je zřejmě jeho ID? No to je sedm. Proč je to sedm let, když jsem se přidat? Takže i to je jeden z funkce, které dostanete v databázi. Mnoho vestavěný funkčnosti. Ukazuje se, že při tuto tabulku vytvořili, I přednastavena, že je to automaticky přidělí ID takovým způsobem že se zvýší. Takže pokud jste někdy strčil kolem, a podíval se na to, co jsi heslo? číslo, v těchto dnech je to opravdu co dělat, ale Facebook jako API, Application Programming Interface, kdy můžete získat zpět celá parta údajů o sami, o své přátele, a vaše připojení. A co býval druh v pohodě, zpět v den, Byl se podívat na to, co vaše Facebook ID číslo bylo. Mark Zuckerberg je, Například, je tři protože on byl autorem těchto stránek. A jak příběh pokračuje, on vytvořil dvě testovací účty, uživatelé jedna a dvě, které pak smazány. A tak, Zuck, jak je jeho jméno na Facebooku, je ID číslo tři, a každý z nás má moc čísel větší než tři v těchto dnech. Ve skutečnosti, v určitém okamžiku Facebook se vzdálil ze i pomocí int, která je 32-bitová hodnota, k používání Dalším krokem, v podstatě dlouhá tak dlouho že by mohly pojmout i více uživatelů registraci. Tak trochu legrace historický fakt. Tak to je právě Základní syntaxe, se kterými můžeme provést několik dotazy, ale můžeme skutečně dělat spoustu dalších věcí s SQL. A uvidíte, nakonec, v problému nastavit sedm že budete muset provést Počet rozhodnutí o návrhu, mezi nimi bude jaké typy dat použít. Takže stejně jako v C, jsou údaje typy v databázi, jako je MySQL, a datové typy si musíte vybrat ze tato odvětví zde. Char, varchar, Int, velký int, decimal a datum, čas, a mnoho dalších. Takže pojďme to skutečně udělat. Pojďme předstírat, že jsme neměli ruka vám tabulka tohoto uživatele a nech mě jít dopředu a vytvořit pro sám, na přednáškách database-- vlastně nech mě jít dopředu a odstraňte tabulka mám tu již takže můžeme vlastně vytvořit to. Jejda. Chystám se tento pokles stůl, a teď jsem jít znovu přednáška databáze sem, Chystám se vytvořit tabulku tzv uživatelů a pojďme prostě tři sloupce zpočátku a klepněte na tlačítko Přejít. Nyní, z větší části, Znovu, toto je jen pomocí tohoto grafického nástroje s názvem phpMyAdmin, a to, co děláme teď je vytvoření tabulky. Takže to je jako jít na Soubor, Nový, a vytvoření nového souboru aplikace Excel. Takže to mě ptá, málo otázky, zleva doprava, to, co je název prvního sloupce, a poté na název druhého sloupce, a název třetí. Takže pojďme znovu to. ID, a pak jméno bylo jedno, a pak hash byl jiný. Takže to, co by měl datový typ být nyní pro pole, jako je ID? Zde je celý seznam datových typů pro vás k dispozici v databázi, a teď pojďme prostě jít s int. 32-bitová hodnota, vůbec se mi nelíbí myslet realisticky, že jsem bude mít více než 4 miliardy Uživatelé v mém účtu, v mých službách, takže budu držet v pohybu na další otázku. Nebudu specifikovat délky nebo hodnoty, to neplatí pro int tady, sám o sobě. A teď se můžete určit, Zdá se, že výchozí hodnota, která nebudu specifikovat. Kolace, já nevím, co to je. Atribut. Teď jsme vlastně dělat má rozhodnutí o návrhu. Takže tam je několik polí tady, že ne všechny které jsou použitelné, ale bez znaménka prostě znamená co? Že int musí být? Jen non-negativní. Tak to musí být 0 na nahoru. Ne, nebudu kontrolovat, protože Chci každý uživatel mít ID, nemůže být null. A pak se dostáváme k trochu více Zajímavý design rozhodnutí, jako je tento. Vrátíme se k tomu ve chvíli, ale co další funkce databáze je, že můžete říct, databázový server pokračovat a optimalizovat sebe, svou RAM a místa na pevném disku, tak, že vybere a vložky, a odstraní a aktualizace jsou opravdu rychle. Porovnejme to s pset5. Pokud byste chtěli hledat něco v hash tabulce, která si myslíte, že jako databáze, kteří měli udělat vše, pracovat, aby vaše hash tabulky rychle. Je to jako, samozřejmě, vy. Je to tak? Vy jste měli dát do všech časových pokuty tuning věci, jak se funkce hash právo, přijít na to, jak mnoho lopaty mít. Ale to, co je hezké, zase, o databáze stačí pramici všechny to jiným lidem kdo si myslel, že to až pro vás a to, co Chystám se říci, na základě index je, že moje ID pole bude primární způsob identifikace uživatele v této databázi. Nebudu myslet z Zamyla jako Zamyla, Budu myslet na ji jako číslo 6. Proč je to snad lepší intuitivně myslet a modelu každý z vašich jednotlivých řádků pomocí číslo, místo něčeho jako řetězec, jako je Zamyla nebo Gabe nebo delší řetězec ještě? Jo? Diváků: ID je jedinečný? DAVID J. Malan: znovu, řekni? Diváků: ID je jedinečný? DAVID J. Malan: ID je jedinečný, ale suppose-- například v případě obecně se uživatelským jménem, ​​předpokládám, že Také jsem řekl, že může být jen jeden Zamyla ve světě, a pouze jeden Gabe. Mohl bych uložit jedinečnost omezení na řetězci, i kdybych chtěl. Takže není špatná myšlenka. Diváků: Více bezpečí. DAVID J. Malan: Bezpečnější, proč? Diváků: Nemůžete říct, který je, který, jak je v uživatel. DAVID J. Malan: OK, Nelze říci, který uživatel je který, takže je tu o ochraně osobních údajů aspekt k tomu, zejména v případě, že ID možná objevit se v URL. Tak jistý, že by mohl druh práce, taky. Jiné myšlenky? Jo? Diváků: Je to jednodušší provádět operace na int. DAVID J. Malan: To je skutečný kicker. Je to jen efektivnější, a snadnější pro počítač, provádět operace na celé číslo. Je to tak? Int je zaručeno, že být 32-bit, zatímco Zamyla je dlouhá několik znaků, Gabriel je dlouhá několik dalších znaků, Davenport je opravdu dlouhý, a tak je nijak zvlášť efektivní používat řetězce porovnávat hodnoty a hledat pro pole a aktualizovat pole, pokud se můžete dostat pryč pouze s jedním celým číslem. Jen 32 bitů. Tak uživatelská jména, i tímto způsobem, nemusí být jedinečný, i když pravděpodobně měly být, a to i tímto způsobem také uživatel by si mohli změnit své uživatelské jméno. Takže pojďme se teď opustit toto jako primární prostředky k identifikaci uživatele. To se říká databáze jděte do toho a optimalizovat sami takže look up na ID je super rychlý. AI, strašně jmenoval, jen znamená, Auto Přírůstek, a to je kontrola box musíme zkontrolovat určit, že ID pole být automaticky aktualizovány pro mě, a pak jdu přejděte doprava zde a upřímně řečeno, já nejsem opravdu zájem V žádné další z těchto oblastí. Rozhodně ne dnes. Takže já jdu sem, do prvního sloupce, kde I třeba zadat uživatelské jméno a hash, a pojďme Alespoň zaměřením na druhý pro teď. Int pravděpodobně není správná výzva, Takže to, co je snad větší smysl? DIVÁKŮ: Text. DAVID J. Malan: znovu, řekni? DIVÁKŮ: Text. DAVID J. Malan: Text? OK, jsem slyšel text. Co ještě? Máme druh má spoustu možností že jsou textové povahy. Takže když, a proč dělat můžete použít některé z nich? No char, v rozporu s tím, co by mohlo myslíte, že není jediný znak. Je to určitý počet znaků. Takže pokud víme, že všechna uložená jména musí být jako osm znaků, jak bylo obyčejné v starší počítačové systémy, mohl bych říci, char a pak bych mohl říci, 8 zde. To je, když ve třetím sloupci se stává použitelné při vytváření tabulky. Ale to je trochu nepříjemné proto, že někteří lidé mohou Chcete mít delší uživatelské jméno než osm znaků, někteří lidé mohou chtít mají kratší jméno, tak proč zavazuji na konkrétní číslo? Proč mají proměnnou počet znaků a jen říkají, že maximální délka jména je, já nevím, jako 64 znaků. Já si nemyslím, že žádné přátele, kteří mají názvy delší než 64 znaků, a to iv případě, že je to příliš krátká byste mohli rozhodně narazit ji libovolně. Takže varchar je proměnná počet znaků. Text není špatný instinkt, a upřímně řečeno, že tak nějak dělá to, co říká, ale textové pole může být jako 65.000 bytů nejméně. To je asi zbytečná pro pole, a ve skutečnosti, Jo, 65535. To je asi zbytečná pro jméno, takže budeme držet, typicky s varchars pro textové pole a hash, taky. Hash, se ukázalo, mohli bychom dělat varchar stejně, nebo něco takového, ale nebudeme zaměřovat dnes na kryptografie tam a čísla že bychom mohli ve skutečnosti chtít použít k jeho délce. Ale dovolte mi, abych přejděte doprava. Můžete mít pouze jeden primární index pro tabulku, ale chci použít některý z nich, Nyní se uživatelským jménem, ​​řekli byste? Co by uživatelské jméno být založena na vágní Pochopení těchto čtyř variant? Jen tím, že jejich jména? Diváků: Unique. DAVID J. Malan: Tak jedinečné, že jo? Takže se ukazuje, že nejen že by mohla řeknete databázi, v předstihu, To je hlavní způsob identifikace polí. Můžete si také říkají, že je Bude to jedinečná pole. To nebude věc, kterou jsem spoléhat na ale já bych databáze do mají v zásadě, že pokud podmínka, tak že kdybych někdy zkoušeli registrovat dva uživatelé se stejným názvem, databáze naplno nebude mě nechat. Mohl bych mít nějaké další kód v PHP, která brání tolik, ale databáze také může zajistit že se nikdy nestane. Nyní, jak je stranou, a to zejména si myslíte o závěrečných prací, Mějte na paměti, it indexu a full textu jsou vlastně docela užitečné. Máte-li k dispozici větší databanku, ne s desítky, ale stovky či tisíce či dokonce miliony polí, můžete také říct databázi předem To je oblast, jdu k vyhledávání na pozemku. Možná, že její jméno, Možná, že je to bio, pokud jste dělat Facebook-jako webové stránky, které má odstavce, že uživatel je dovoleno zachránit, a chcete-li řekněte databázi předem Budu se vyhledávání na tomto poli hodně, ale to není nutně jedinečný, můžete zadat vytvořit mi index. Nebo můžete říci také dovolit, abych to udělal druh libovolných vyhledávání, jako je Command nebo se stisknutou klávesou F, stejně jako vy by mohl v textovém editoru, takže byste se mohli podívat libovolné řetězce nebo podřetězce v této oblasti. Jinými slovy, jsme stále do té míry, v semestru kde se nemusíte obávat jak implementovat věci efektivně. Musíte jen vědět, co Rozhodnutí designu, aby se tak, že jste pomocí správných nástrojů pro obchodu s cílem zvýšit objem funkce že ostatní lidé si vybudovali pro vás. Takže rekapitulace, by primární jen mají jednu, můžete mít pouze jeden, a je to věc, kterou jste se zavázat, že použití k určení polí jedinečně. Unikátní je právě svým duchem podobat, ale můžete jen občas použít, ale chcete databáze ji uložit. Index prostě znamená, preventivně urychlit v budoucnu takže mohu hledat věci v této oblasti. A pak plné znění je obecně pro odstavce, nebo eseje, nebo velké skupiny textu, kde vás také chtít mít divoké karty, jako ekvivalent hvězdy. Přesně tak. Tak to byl druh hodně najednou. Uvidíme, jestli se nemůžeme pálit několik z těchto funkcí a pak postavit něco poměrně jednoduchý, ale výkonný. Takže mezi ostatní Rozhodnutí design vám nablízku nakonec bude mít se spolu linie skladovacích motorů. A dovolte mi, aby zmínku o tomto v očekávání závěrečných prací, a předvídání pojďme say-- no pojďme to udělat. Budujme tento malý aplikace jako první. Chystám se jít do mého terminálu okna, a zde není pouze counter.php, které jsme nyní děje jak se zbavit, jak již germanu, ale máme spoustu adresářů a to bude velmi podobné v duchu na to, co uvidíte v problému nastavit sedm. Takže máme tři adresáře zahrnuje veřejné a šablony, které je přesně tam, kde jsme skončili na Pondělí celé naší MVC paradigmatu. A rekapitulace, na veřejnosti se chystá jít jakýkoliv soubor, který chci uživatelům ve skutečnosti v moci navštívit v jejich prohlížeče pomocí adresy URL. Šablona. Co jsme dát do šablony? Jaké věci? Nebylo moc, ale pár Soubory nejpozději v pondělí. Jo. Diváků: Záhlaví a zápatí? DAVID J. Malan: Záhlaví a zápatí. Takže máme něco podobného i dnes. Máme ještě několik dalších souborů, ale Zápatí vidím, záhlaví vidím, a spoustu dalších souborů. Tak tohle je ekvivalentní zastává názor, V MVC, která znovu, bude trochu víc jasné, problém nastavit sedm, ale to je jen složka, že jsem uvedení hodně mých estetiky. Spousta mých HTML, hodně mých forem. Mezitím, zahrnuje, je další adresář, který má tyto tři soubory a pojďme se rychle podívat na to. Chystám se jít dopředu a otevřít config.php. Jak to dopadá, mnohem stejně jako dříve v termínu, jste ostrý součástí CS50 tečka h s pset7. V dnešním příkladu, budete k tomu ekvivalent, který s vyžadovat prohlášení které účinně zahrnuje tyto několik řádků. Takže aby bylo jasno, to je soubor s názvem config.php. A všimněte si, co to dělá. Je to zřejmě něco mystické, soustružení na chybová hlášení takže je můžete vidět v prohlížeči. Je to tedy zřejmě vyžaduje dva další soubory tak to je jako #include v C, a pak tohle jsme se vidět, a my jsme spoléhali na to zapne že nákupní košík jako funkčnost. To znamená, že cookie být poslán zpět a vpřed. Tak proč je to zajímavé? No, když se vrátíme k tomu adresář a otevřít, například, constance.php. Všimněte si, že PHP dělá podpůrné konstanty, není to úplně jako #define v C. Místo toho doslova říkají definované a oznámení že jsem se ukládají do předem čtyři konstanty v tomto souboru. Jeden pro dnešní databáze, pro moje heslo pro mé uživatelské jméno, a název serveru. Tak to skutečně bude docela podobný problém nastavit sedm. A konečně, a to je místo, kde jsem dostane nějaké pěkné funkce z pracovníků, functions.php je banda kódu psali jsme, a já jsem ukradl některé z těchto od problém nastavit sedm pro dnešní den, který dělá spoustu věcí a pojďme stačí se podívat na jeden z nich zejména. Tato funkce zde dotaz, bude PHP funkce nazýváme za účelem výkonu SQL. Před chvílí jsme byli s použitím phpMyAdmin, ale to je jen pro druh výukovým účelům a diagnostické účely a zapomínání databázový soubor. Pokud se skutečně používat svůj databáze, vy, člověk, se zřejmě nebude k vytažení web stránky pokaždé, když někdo zaregistruje. Budeš psát kód, který vložky a odstraní uživatele na vyžádání, a budeme to dělat pomocí funkce dotazu. Kdybych teď posunout dolů, je tu bude ještě několik funkcí. Přesměrování se chystá být funkce jsme napsali pro vás, které vám umožní Poslat uživateli na jinou adresu URL, a činí je funkce, docela jako jsme viděli v pondělí, že ve skutečnosti činí šablona, ​​ale více o nich forma pset7 vlastní procházce. Pro tuto chvíli, pojďme do toho a to. Nech mě jít do mé přednášky stolu a vidět, že je v současné době nic jen ještě tady, a dovolte mi, abych také jít do mého veřejného adresáře, kde je tam jen jeden soubor, index.php. Tento soubor se zdá být super jednoduché v současné době, to vypadá takhle. Velmi podobně, jak jsme skončil v pondělí. Jsem vyžadující tento soubor, config.php, který je v obsahuje adresář, který je dot dot, moji rodiče, a pak je to právě činí tento soubor. Takže to, co je to soubor? Pojďme otevřít v mých šablon form.php, a my budeme vidět. Super jednoduché, zřejmě je tato forma chystá předložit do _GET $ nebo $ _POST. Rychlá kontrola zdravý rozum. Doslova vizuálně vyhledat soubor. Metoda se rovná příspěvku. Takže to nebude používat URL jako Google dělá, že to bude tak nějak skrýt Informace pozadí scény a je to bude předkládat soubor s názvem register.php, a to je soubor jsme ještě nenapsal ale to, co to bude vypadat jako to je. Pokud jdu do samostatné stránky Toto je co localhost / index.php vypadá. A opět, server je jen za předpokladu, že index.php. Enter. Tak to je místo, kde jsme na, a to, co chci dělat je schopen zadat věci jako David, a pak moje telefonní číslo, které se bude říkat 617-555-1212 teď, zaregistrujte se a teď register.php nebyl nalezen. Tak jsem třeba to provést. Takže pojďme rychle vytasit něco takového nahoru. Nech mě jít do mého veřejném seznamu a to gedit z register.php, a teď budu pokračovat a spuštění režimu PHP, jako jsme to udělali v pondělí, a zavřete PHP tag, a pojďme udělat pár věcí. Takže jeden, já vím, z když napsal, že formu, že chci zkontrolovat následující. Pokud je prázdná, bez ohledu na uživatele zadali do pole Název, pak Jdu něco říct jako omluvit chybí jméno. Omlouvám se, zatím, je není postaven v PHP věc, je to funkce jsme psali ve functions.php pro pset7 tak, že budete mít k němu přístup. Jinak v případě, že jiné oblasti je prázdný, číslo, pak jsem jít omluvit uživatele a říkají chybějící číslo. Uložte tento soubor. Nyní se vraťme do svého prohlížeče, zpět do fóra zkuste to znovu. Registrovat. OK. Nic se nestalo, což je dobré. Nedostal jsem se chybová zpráva. Ale když místo toho, pojďme znovu tento strana, a neposkytuje nic. Sakra. Udělej to. Registrovat. Co jsem udělal špatně? Pokud je prázdný, name $ _POST. Ještě jednou? Oh, samozřejmě. Zapomněl jsem nejdůležitější část, která je třeba ("../ zahrnuje / config.php."). Potřebuji mít přístup k Omlouvám se funkce, které Proto se nic neděje. Funkce ve skutečnosti neexistuje. Tak si to zkuste znovu. Pojďme znovu načíst stránku, klepněte na tlačítko Registrovat. OK. Tady to je. Takže výstup jsme Zde je vidět výsledek volání omluvit funkce, super jednoduchý, a to jen vytiskne cokoliv Dávám to jako argument. Dobře, tak pojďme spolupracovat. Pojďme poskytnout své jméno jako David, zaregistrujte se, Chybí číslo OK pojďme stanoví, že taky. 617-555-1212. Registrovat. OK. Takže je všechno v pořádku teď, jen nic zajímavé se děje. Takže teď pojďme udělat něco víc Zajímavé stane takhle. Nech mě jít do phpMyAdmin, a pojďme vlastně vytvořit tabulku s názvem uživatelé Chystám se dát tři sloupy, a budu rychle vytvořit ID, a pak jméno a číslo, a pole ID jsem k odchodu jako int. Název pole jdu ponechat jako varchar, a řekneme 64, poněkud svévolně. Počet Jdu aby, víš co? Jdeme do zde podpora čísla v USA, tak jdu něco dělat jako char a pak 10 znaků max pro předčíslí a pak sedm číslic. A pak tady, jdu specifikovat auto přírůstek této oblasti aby to primární klíč, a Chystám se jít dopředu a ne kontrolovat některé z těchto dalších boxů. Takže když jsem teď konečně klepněte na tlačítko Uložit, a já jsem se vrátit k mému uživatelů tabulky, To je, jak to vypadá, když Nyní klikněte na strukturu Nová karta. Takže to, aby bylo jasné, je jen způsob, jak phpMyAdmin se říkat své databázové tabulky má ID, jméno a číslo s těmito konkrétní konfigurací a budeme ignorovat zbývající pole tam teď. Takže teď, co mám dělat? Takže když jsem se jít do mého zdrojový kód, pokud je vše v pořádku Chci spustit následující dotaz. Vložit do, a mohu jen říkají uživatelé nevím přesně Potřebujeme ty zadní klíšťata, pokud je to není nebezpečný slovo jako uživatele. Budu říkat jména, číslo, a pak tady jsem nebude pevný kód číslice hodnot dosud. Chystám se dát dva otazníky. A to je konvence v mnoha jazycích přičemž v případě, že chcete mít zástupný řetězec budete používat na otázku značky, z důvodů, které budu vrátit se na chatu o bezpečnost, a zde Chystám se v těch dvě pole psát jméno, a pak po řadu, a nyní soubor uložte. A teď budu jít dolů je super zde jednoduše říci rendersuccess.php, který bude další šablony. Chystám se vytvořit opravdu rychle. Geditsuccess.php a já jsem prostě jít říci H1 úspěch v tomto souboru. Dobrá. Takže teď, pojďme zpět k prohlížeč, kde jsem navštívil předtím. Pojďme dál a potvrďte jsem napsal Davida, jsem napsal v telefonní číslo, registrovat. Sakra. Co jsem udělal špatně? Takže jsem viděl chybu tady, mají chybu ve vašem syntaxi SQL. Dovolte mi, abych skočit zpět do gedit, ať mě jít zpátky do register.php, a to, co jsem opomenout, že bylo důležité, naposledy? Potřebuju to. Chcete-li vědět, že jiné než z s nevšiml, ale potřebuju to. Takže teď se vraťme, a to bylo užitečné vidět v prohlížeči a to je důvod, proč v config.php jsme vyplivnout chyby. Pojďme dál a znovu, klepněte na tlačítko Pokračovat, úspěch. Takže teď mě nech jít ke mně Databáze tady a klikněte na uživatele, a procházet, a všimněte si teď mít David ve své databázi zde. Nyní technicky tento web je ale ne na veřejný internet, takže nemůžu mít jiný lidé v uvedení zde, ale když jsem teď chtěl, pro instance, poslat sám textovou zprávu. Pojďme ven na údu zde a uvidíme, jestli to skutečně funguje. Chystám se jít dopředu a odstranit tento řádek a budeme rozmazání to ve videu později takže nemáme Celý internet mi SMS, a nyní budeme pokračovat až do prohlížeč a půjdeme přes přednášet a my budeme psát v různých Číslo které zde nastavíte, zaregistrujte se, úspěch. Takže teď, moje číslo je pravděpodobně v databáze, a teď to nejzábavnější. Pojďme skutečně používat PHP dělat něco programově, buď z příkazu linka nebo někde jinde, a teď jsem jen jít, aby to jednoduché a já jdu do mého adresář zde a proveďte následující kroky. Gedit script řekněme, my budeme říkat text, #! / user / bin / env PHP, jako jsme viděli minule. PHP. Teď budu dělat, vyžadovat zahrnuje config.php, i když by to mohlo vyvolat mírné chyby. A teď budu pokračovat a říct, řádky, dotaz, vyberte hvězda od uživatelů, a teď tady budu dělat techniku od minule pro každý řádek jako řádek. A já udělám něco jednoduchého. Printf řekněme, že jméno je to, a číslo je to, zpětné lomítko n. A teď jdu projít v řadě citovat konec citátu jméno, a číslo řádku citace konec citátu, a teď pojďme do toho a okno má terminál chmod + x to, aby se tento skript s názvem textu spustitelný soubor. A teď pojďme běžet text. OK, tak pokrok. Takže jsem teď napsal příkazový řádek skriptu, v jazyce PHP s názvem, který, z důvodu, že vyžadují řadu, má přístup ke všem těm konfigurace konstanty, které jsem uvedené. Název databáze a tak dále. Ve skutečnosti, jen aby bylo jasno že to není náhoda, nech mě jít napřed a registraci velmi rychle, někdo jako Rob a mu dá číslo 555-1212. A teď, když jsem spustit skript znovu, všimněte si moc z toho, co děláme s databází. Teď jsem hned viděl, co Další dva řádky jsou v mé databázi. Takže teď pojďme zkusit něco udělat i milovník uvnitř, a to je ta část, máme netestováno předem, tak naposledy, co jsem to udělal to šlo hrozně nakřivo, Máme video, které v tomto smyslu. Vlastně jo, sranda stranou. Takže v poslední době, přednáška stejně jako před dvěma lety, Rozhodli jsme se, jsem se rozhodl, aby se to vše by bylo skvělý nápad dynamicky generovat e-maily třídy, přes celý databáze CS50 studenti, kteří nám dali jejich čísla a jejich mobil dopravci, kteří vás možná pamatujete z pset0, jak rozum, to dopadá Měl jsem malou chybu v mém programu a udělal pár chyb v roce 2012, myslím. Kdy, co jsem měl na smyčce, která se dělal přesně tyhle věci, iterace přes databázi, dostat jméno z databáze, jméno z databáze, a pak se na sebe opakování tohoto cyklu jsem poslal e-mail. Ale místo toho, ¾e odeslání jedné e-mailu, I poslal jednoho e-mailu první iteraci, a dva e-maily druhé iteraci, poslal tři e-maily druhé iteraci, což jak si možná pamatujete z našich diskuse o asymptotické notace tento velký O špatných, jako n na druhou je, kolik zpráv jsem poslal, ale to nebylo ani e-maily to textové zprávy. A jak víte, účast není Super High ke konci semestru a tak jsem si myslel, že by bylo roztomilé na čas říci: "Proč nejsi třída?" V textu zprávy I odeslána na celou třídu, a to bylo legrační, rád 50% třídy, ale druhý 50%, z nichž někteří vyděšený, poslal jsem neuvěřitelně omluvným sladké poznámky aby zaměstnanci omlouvat za co vynechal přednášku právě to jednou, že jo? Tak, že by strašně nakřivo. Takže v tomto duchu, zkusme to znovu, ale jen s mým číslem. V předstihu, v functions.php, Napsal jsem tuto funkci zde. Je to jen text, a to trvá tři argumenty. Číslo, nosič a zpráva. Já používám příkaz switch, který nádherně PHP vzít řetězce, a to nejen celá čísla, a já jsem se realizovat veškerou podporu pro to ještě, Právě jsem udělal AT & T a Verizon. Vzhledem k tomu, že dopadá že s těmito nosiči mají e-mail na SMS bran, kdy můžete opravdu pošlete e-mail na adresu jako telefonní číslo v vtext.com a v případě, že uživatel není blokován zprávy, bude to projít je textová zpráva. A teď, jak to udělat, budu muset přidat jedno pole opravdu rychle, aby mé databáze. Chystám se jít do moje konstrukce, a já jsem bude pokračovat a přidat pole na konci tabulky. Pojďme na tlačítko Přejít, a já jsem bude volat tento dopravce a teď jdu ponechat jako text pruhu, ale můžeme být milovník v budoucnosti. Chystám se jít rychle na mém stole, a já jsem bude, jak se zbavit Rob, protože to je falešný číslo, Chystám se jít do Upravit tady a já jsem změní svůj nosič ručně být Verizon, který jej je, a teď tady. Pojďme udělat rychlou kontrolu zdravý rozum. Pojďme otevřít náš textový skript, který vypadá to, nosič je% s. Děláme mnohem větší chybu kontrolu, než jsem udělal v roce 2012, dopravce. A teď, já jdu dopředu a znovu spusťte skript. OK. Carrier je Verizon, což znamená, Nyní doufám, že můžu dělat jen to. Správně v letošním roce, doufejme, že je to tady. Takže uvnitř této smyčky for, jsem bude mít nejen tento printf, Jsem také chystá zavolat text a použití této funkce odvolání Byl to trvá několik, nosič a zpráva. Takže pojďme se podívat, číslo bude být řádek citovat konec citátu "číslo" řádek citace konec citátu "dopravce" a poslední z nich byla zpráva. Nenechte mhouřit tento rok, středník. OK. Palce. Uvidíme, jestli to funguje. Dobře, tak. Jdeme na to. Pojďme odemknout telefon, přes prsty, sakra. Nedefinovaný proměnná may-- oh počkej, počkej, počkej, opravdu rychle. Velmi rychle, opravdu rychle. To je naprosto stojí za to. Nech mě chytit, dejte mi chytit, uh-oh. Děkuji vám, že texty mají začal od někoho jiného. Nech mě jít napřed a otevřít real rychle, dropbox.php / mail zde. Standby. Naprosto stojí za to. Soubory ke stažení. OK, zdroj src8m. OK. Potřebujete další jeden řádek zde. Oh, že to je, že je to v Frosh IM, to je v registru na tři. Oh ahoj, Margo, moc děkuji. OK, a já jsem tu chybí tento řádek. Takže dovolte mi, abych se rychle chytit tento řádek kódu, který zahrnuje poštu nebo knihovnu že jsem vlastně chcete použít, Jdu rychle zpět do funkce, Chystám se jít na vrcholu tohoto souboru a požadovat, aby tento soubor stejně, a teď jdu opravdu na mou prsty, když jsem se vrátit do příkazu řádek skriptu, který je uvnitř dnešní místního hostitele adresáře. Spustit textu. Enter. Mail. Standby. Standby. Mail. Oh, OK. Jdeme na to. Mail dostane nový PHP mailer. Udělal jsem toto právo? Sakra. To-- oh, počkat, počkat, počkat. Stand by. Slibuji, že to je Bude to stojí za to. Adresa. To je důvod, proč nedělám příklady přímo před třídou. Fuj. Následující příjemci se nezdařilo. Zkusme jednu poslední věc. SMTP nastavit od, přidejte adresu, adresa je skutečně, že. Zkusme tuto poslední část na adresu. Aw, jsem opravdu smutné právě teď. Děkuju. Ale já opravdu oceňuji všechny texty jste odesílání. Máte tento Davida. Jste fouká to. Pojďme ho tam nechat a budeme opravit v pondělí. Uvidíme se pak. Daven FARNHAM: A teď Hluboké Myšlenky od Daven Farnham. Pokud binární strom spadne v lese a nikdo není kolem C to-- [se smíchem].