[MUZYKA GRY] David J. MALAN: Wszystko w porządku. Witamy z powrotem. To CS50. To jest koniec tygodnia 8. A jak wiadomo, mamy dość regularne godziny pracy w kilku sal jadalnych, tym Annenberg. A niektóre z zespołu uprzejmie wziął ostatnio kilka zdjęć. I na cześć Halloween, myśleliśmy, że dzielić się jeden, który raczej nas złowione Niespodzianka w Annenberg Hall tylko drugiej w nocy. Twój kolega Jakub pozował do to zdjęcie, ale było bardziej zabawne był na Facebooku, wynikający Rozmowa, która się stało potem. Jego pierwszy post w odpowiedzi Jego zdjęcie było to. Kilka minut później, zdecydował do jednego się sobie z tym. Poszło o to, aby przejść do tego, a następnie, jeszcze bardziej zabawnie jest wtedy, gdy jego mama dzwoniły. A potem w końcu, wydaje się to tylko wspaniały wybieg dla grać, że się dzieje. Tak więc, jeśli chcesz zobaczyć Jakuba i innych, wśród nich Cynthia Meng, który jest kulisy pracowników strefy CS50, udać się do tego adresu URL i tym grają. Więc bez zbędnych ceregieli, dziś kontynuować obejrzenia programowania WWW, i rzeczywiste tworzenie programów które nie działają w linii poleceń, ale zamiast działać wewnątrz przeglądarki. Prawdopodobnie teraz, albo bardzo krótko, będziesz się w środku realizacji własny serwer WWW, który różni się od programowania WWW. Serwer WWW w pset6 jest o pisanie oprogramowania, które wie, jak zabrać Żądania HTTP z przeglądarki, lub nawet od ciebie, człowieka, z programu o nazwie Telnet, oraz następnie odpowiedzieć na te wnioski albo przez wypluwa plik HTML lub jpeg lub gif, lub nawet .php plik. Ale z serwera WWW, to nie jest ma po prostu otworzyć plik PHP, coś o rozszerzeniu .php, i następnie wypluć zawartość. To ma robić co do pierwszej tego pliku? Że tak powiem. Nie skompilować go, że powiedział w poniedziałek, ale rather-- więc interpretować. PHP jest językiem interpretowanym, a więc jednym z kluczowych elementów w swojej sieci Serwer, choć realizowane przez nas, Jest to zdolność do serwera WWW zauważyć, och. Jest to plik o rozszerzeniu .php. Pozwólcie, że nie wystarczy wysłać go do użytkownika jak to jest statyczny, ale pozwól mi przeczytać wiersz o linia, od lewej do prawej, i zinterpretować go. I zrobić, że Ciebie faceci będą zasadniczo punt do programu w urządzeniu, i na wielu systemach komputerowych, tak zwany PHP. To jest nazwa PHP Język własny interpreter. Tak, że możemy wprowadzić na kawałek ty, a to, co zostało dla ciebie, Ostatecznie, to numer sztuk, z których realizuje wsparcie dla zawartości statycznej. Ale teraz, i Problem ustawić siedem, jesteś zamierza rozpocząć do przejścia do faktycznie pisania kodu PHP że dostaje interpretować w rozmowie z tylnego końca baza danych, która przechowuje informacje. Więc niech lepiej zrozumieć pierwszy Kilka z tych superglobals i jak bardzo cię moc wydostać się z pudełka za darmo w języku jak PHP. Rzeczy, które nie mają do realizacji siebie. Tak, widzieliśmy w poniedziałek $ _GET, co jest superglobalną, która jest po prostu PHP mówić za światowy zmiennej można uzyskać dostęp w dowolnym miejscu. A co jest w środku z $ _GET? Co znajduje się wewnątrz tego superglobalną że widzimy? Z pewnością na statystycznie najmniej jedna osoba wie. Co znajduje się w środku $ _GET? Tak? Publiczność: To zmienne można umieścić w ciągu kwerendy. David J. MALAN: Idealny. To te zmienne, umieścić w zapytaniu. Tak więc, w naszym przykładzie starszych reimplementing Google, kiedy mieliśmy Adres URL, a następnie znak zapytania, która rozgranicza początek HTTP parametry, a następnie mieliśmy q równe coś, jak q równa się koty, co by automatycznie do środka z Super $ _GET, że globalny dla Ciebie, ponieważ PHP jest kluczem Q i jego kotów wartości. Innymi słowy, $ _GET wszystkich te rzeczy są tablice asocjacyjne, hash tabele rodzaju, że przechowywać klucze i wartości. Teraz, z powrotem w pset5, hash Stół może być realizowane, lub spróbować może Wdrożyliśmy, naprawdę było skutecznie asocjacyjne tablica, struktura danych przy czym można skojarzyć klucze z wartościami. Ale w pset5 wartości były banalne. Wartość była zasadniczo prawdziwe, czy fałszywe. To słowo w słowniku? Więc, kiedy zakodowane słowo jak jabłko aby sprawdzić, czy Apple jest w słowniku, Prawdopodobnie czynność wyboru wrócił prawdziwe lub fałszywe. Tak, to skutecznie Wartość wracamy. Ale widzieliśmy w poniedziałek krótko, można z pewnością kojarzy bardziej interesujące wartości niż tylko prawdziwe lub fałszywe z klawiszy, takich jak jabłka. Można rzeczywiście powrót arbitralne ciąg, i rzeczywiście, to właśnie te $ _GET i inne zmienne pozwalają zrobić. Więc $ _POST jest podobny w duchu, ale jeśli przesłać formularz pocztą, inna metoda HTTP to używane do takich rzeczy jak karty kredytowe, i prywatne informacje, a nawet binarne informacje jak zdjęcia, te rzeczy, kończy się wewnątrz $ _POST. I rzeczywiście plików jak JPEG i etażerka, jest nawet, że nie jest to kolejny tutaj nazywa $ _FILES również. Tak, serwer nie będzie zatrzymywać się na zbyt dużo, ale daje dostęp sortowanie niższych poziomie około szczegóły Serwer sam, że używasz. Cookie i sesji, choć, będziemy skutecznie zobaczyć teraz. Ostatnim, co używamy do realizacji Pojęcie koszyku. Bardzo prosty, ale odwołanie że mamy tutaj ten przykład, liczenie, ile razy wcześniej nie odwiedził tej strony. Ale dziś, a nie tylko patrzeć na Efektem tego, otwórzmy się Chrome inspektor, które można zwykle zrobić klikając prawym przyciskiem myszy i Kontroli kliknięcie w dowolnym miejscu na stronie internetowej, a następnie wybierz sprawdzić element. Czy można przejść przez menu które opisujemy w specyfikacji pset6 jest. I idę do karty sieciowej tutaj, i niech na chwilę oglądać to ruch HTTP tam iz powrotem. Pozwól mi iść do przodu Wyczyść pamięć podręczną i Chrome. Tak więc niektórzy z was mogą znać z już tej techniki, i mamy zamiar go używać do celów tutaj debugowania. Teraz w komputerze Naukowcy zamierzają rozpocząć ten sposób do debugowania cele, przy czym będziemy wyczyścić pamięć podręczną, typowo, tak, że można pozbyć się rzeczy, zwanych ciasteczek. Więc jesteś prawdopodobnie ogólnie znane co ciastka są lub co najmniej że istnieją, ale co zrozumienie z nich, jak tylko użytkownik komputery, co to jest plik cookie? Tak. Publiczność: To trochę of-- dobrze, nie nieco w perspektywie informatyki. Jest to fragment danych, które strona internetowa wysyła do ciebie w porządku aby móc nagrywać statystyki na Ciebie. David J. MALAN: OK, dobrze. Więc jest to fragment danych, które Serwer, stawia na komputerze, i niech to nawet uogólnić więcej, jest to klucz value-- dobrze, że coraz bardziej precyzyjne. To jest kawałek informacje, fragment danych, że serwer może umieścić na komputerze i bardzo często, serwer nie to tak, aby pamiętać, kim jesteś. Tak na przykład, kursy to prawdopodobnie jesteś logowanie do serwisów takich jak Facebook, lub Gmail lub inne przed, i zaloguj się za pomocą nazwa użytkownika i hasło, a po że dla pewnej liczby minut lub godzin lub nawet dni, Pamięta, że ​​serwer można, w rzeczywistości, zalogowany. Teraz, jak jest, że rzeczywiście dzieje? Ponieważ nie jesteś na pewno przepisywania Twoja nazwa użytkownika i hasło za każdym razem poruszanie się inna strona na Facebooku. Tak więc okazuje się, Ciasteczka są odpowiedzią. Pliki cookie można myśleć jak, Coś jak, cyfrowe rękę Znaczek, który można dostać na zabawy parku lub klub, który zasadniczo wskazuje byliście tutaj przed, i już mam pokazano swój identyfikator do bramkarza, na przypadek, i że klub lub park Należy założyć, że ty teraz uwierzytelnieniu już. Zostały już zidentyfikowane przez nią. Tak więc biorąc to pod uwagę, otwórzmy się licznik tutaj. Pozwólcie mi iść do przodu, po prostu nie, i usunąć wszystkie ciasteczka. A teraz, co mam zamiar zrobić, to przytrzymaj klawisz Shift, tak na wszelki wypadek, i siłą odświeżyć stronę. Shift, wystarczy upewnić się, że nic nie zostanie w pamięci podręcznej. A oto wniosek który udał się tam iz powrotem. Więc tutaj mamy prośbę, niech mi przybliżyć się tutaj, i to dużo jest jakby nieciekawe szczegóły teraz, że przeglądarka ma automatycznie wysłane, ale niech kliknij przycisk Widok Źródło zobaczyć surowe nagłówki. A jeśli już zanurkował pset6 już, będziesz na pewno rozpoznają rzeczy tak, i być może niektóre tych innych linii tutaj, ale co ciekawsze na dzisiaj jeśli przewijać, nie wniosek jednak do tak zwanych odpowiedzi ta linia prawdopodobnie wygląda znajomo. To jest dobra rzecz gdy pojawi się 200 OK. Najwyraźniej jest to data i czas na serwerze i jest kilka rzeczy. O, to jest ciekawe. Okazuje się, że przy każdym użyciu PHP, co najmniej w tym serwerze, serwer wypluwa co wersja PHP używasz. Które, rzeczywiście, dla bezpieczeństwa cele, nie jest dobrą rzeczą. Ale wrócimy do tego innym razem może. Ale teraz jest to soczysty linia dziś i krótko zobaczył niektóre z nich, Myślę, że z Facebook, gdy szturchnął wokół Inspektora w tym czasie, Zestaw Cookie jest to, co jest sadzenie że mały kawałek informacji na komputerze. Jest to nagłówek HTTP to skutecznie informując przeglądarkę, Chrome, IE, niezależnie, hej sklep przeglądarkę na użytkownika dysk twardy, lub w pamięci RAM użytkownika, klucza o nazwie PHPSESSID, co jest skróconym zapisem dla identyfikatora sesji, i nadać mu wartość 0vlk8t, kropka, kropka, kropka. Naprawdę długo pseudo losowy ciąg znaków alfanumerycznych. To jest po prostu bardzo duża liczba, ale to zakodowane z liter i cyfr tak, że wielkość ta może zostać nawet większe niż liczb sam. I wtedy, przy okazji, Path = /, że oznacza po prostu, że to powinno być Cookie wiąże się z Całość na stronie internetowej, nie tylko specyficzne Strona całość. Tak to jest, że pieczęć wirtualny dłoń. To tak, jakby serwer, Facebook, lub w naszym przypadku urządzenia, ma dosłownie napisane 0vlk8t i tak dalej, na swojej strony. Zauważ, co serwera, nie robi to nie jest przechowywania mojej nazwy użytkownika, na pewno nie przechowywać hasła. Zamiast tego, wydaje się, że przechowywania informacji pseudo losową tak, że nikt nie może odgadnąć, co moja ręka jest znaczek. Po stronie serwera W międzyczasie serwer będzie pamiętać, prawdopodobnie w bazie danych, czy coś, że użytkownik, który w przyszłości prezentuje znaczek ręki 0vlk8t, kropka, kropka, kropka, powinny być związane z tym szczególności koszyk, tak powiem. Innymi słowy, jeśli teraz iść tu z powrotem i ponownie załaduj tę stronę, w jaki sposób serwer wiedzieć że byłem raz? Albo jeśli to zrobię to ponownie, w jaki sposób serwer wiem, że już dwa razy odwiedził go? Cóż, jeśli pójdę do tego Najnowszy wniosek, który jest teraz trzeci Wysłałem w sumie zauważyć moją prośbę teraz. Jest jeszcze ten zwrócić się tutaj, tak samo jak wcześniej, jest jeszcze cała masa rzeczy, że mamy ignorować jak poprzednio, ale ostatni nagłówek, to czasu, ponieważ byłem tu wcześniej, jest prezentacja Znaczek ten wirtualny dłoń. Przy czym ta linia tutaj, nie ustawić ciasteczko ale ciasteczko okrężnicy PHPSESSI = 0vlk8t, to tylko moja przeglądarce automatyczne Prezentacja tej strony tak, że znaczek Serwer się tak szybko, jak to ujawnia, och, to jest 0vlk8t użytkownik kropka, kropka, kropka, Teraz mogę pamiętać, kim jest i ponownie powiązać z użytkownikiem, co Informacje chcę, a wszystkie że informacje mogą być przechowywane przez Ciebie, programista, w $ _SESSION. Więc być jasne, jeśli otworzyć bardzo szybko w gedit, że rzeczywisty plik, counter.php, w moim lokalnego hosta katalogu publicznym jak wcześniej, zauważysz, że, rzeczywiście, Ja ostatecznie przechowywania w $ _SESSION Cytatu "przeciw" Wartość licznika, które w poprzednim Uzyskać z tych linii, że my się tutaj spojrzał na ostatni raz plus jeden. Tak więc pod maską, to wszystkie ciasteczka są. To jest po prostu coś w rodzaju cyfrowego Znaczek rękę tam iz powrotem, i szczerze mówiąc, jeśli otworzyć Chrome Inspektor na każdej stronie polecamy odwiedzić dzisiaj, z bardzo wysokie prawdopodobieństwo, masz zamiar zobaczyć, być może jeden, może pół tuzina ciasteczka jest zapamiętany przez Ciebie. A co gorsza, jeśli te strona Odwiedzasz wszystkich reklam, które mają jest z pewnością dość powszechne dziś, i jeśli te reklamy przychodzą z jakiegoś centralnego partii, kogoś takich jak Google AdWords, jak i zadzwonić do jednego z ich produktów lub sprzedawców, że inne takie sprzedaży reklam, co ciekawe, i szczerze mówiąc, co jest mało niepokojące, o tym, jak HTTP działa jest to, że jeśli masz wbudowany reklamy w Facebook.com i Google.com, i Harvard.edu, dowolna liczba stron, więc jest to takie że jest człowiekiem, który jest w średnim służąc się oferty z wszystkich trzech z tych stron, Okazuje się, że ciasteczka są na domenie. Więc jeśli masz reklam pochodzących z sama firma na różnych stronach internetowych, że firma może skutecznie śledzić kto jesteś we wszystkich tych stron. Nie wiem, może z Harvardu Odwiedzasz Facebooka. Facebook i może nie wiedzieć Odwiedzasz Harvard. Ale cokolwiek serwis reklam oni używają jeśli jest domeną obecne zarówno Harvard.edu internecie stron i strony internetowe Facebook.com, Człowiek ten z pewnością wie, środkowy, który jesteś Ze względu na te ciasteczka są dzielone w poprzek, albo raczej, że tzw pośrednik. Więc wracamy do tego w ich wpływ na bezpieczeństwo, ale jest dużo informacji będą przechowywane o tobie każdej chwili odwiedzić największą na dowolną stronę internetową Internet i to naprawdę redukuje się do tego bardzo prosty mechanizm. Co się stanie, wówczas, jeśli jesteś bardzo paranoikiem i zdecydować, aby przejść do Chrome lub IE lub cokolwiek i wyłączyć pliki cookie? Co się dzieje? Tak? Ty really-- zrobiłeś tego prawa? OK. No, śmiało. Publiczność: Niektóre strony internetowe nie mają Funkcja bez niego, takich jak Facebook. David J. MALAN: Tak! Tak więc niektóre strony internetowe po prostu przestać działać. I w większości stron internetowych w tych dniach że zasadniczo polegać na ciasteczka, szczególnie, jeśli mają się zalogować w, oni po prostu się przełamać. Ponieważ uważają alternatywą, jeśli strona nie ma możliwości zapamiętywania, kim jesteś, i dlatego Twoja przeglądarka nie jest reprezentowanie w każdym HTTP Żądanie tego stempla ręcznego, skutecznie strona jak będzie Facebooka mieć z pytaniem o zaloguj się za każdym razem, cerować Zmiana strony, lub kliknij link, który z pewnością nie jest szczególnie dobra użytkownik doświadczenie. Tak, że tam też jest wśród kompromisów. Więc bez zbędnych ceregieli, weźmy za pewnik, że z programowaniem stron internetowych, w językach takich jak PHP, można zapamiętać Informacje takiego problemu ustawić w siedem podczas realizacji własnych E * Trade, jak strona, z którą kupić i sprzedawać akcje, będziesz pamiętam dokładnie co użytkownik kupowane i sprzedawane i kto jest on Na podstawie tej sesji. Ale my będziemy potrzebować hodowcy sposób niż e-mail rozpocząć prowadzenie informacje wokół. Prawda? W poniedziałek rozmawialiśmy o Frosh IM i jak w jednej z wersji tej strony internetowej, lat temu, wszystko zrobiliśmy było e-mail, który jest w Proctor odpowiedzialny za sport stacjonarne Program, imię i płeć, i czy nie są one kapitan, i akademik z kimś, kto jest rejestracji na stacjonarne sportu. Więc to nie jest źle, ale on wtedy musiał troll poprzez ich e-mailem, zrobić arkusz kalkulacyjny czy coś że, aby utrzymać wszystko zorganizowane. Więc na pewno my jako programiści Można to zrobić na tej Proctor. A więc wpisz w SQL, Structured Query Language, która będzie wyglądać całkiem różni się zarówno C i PHP, i będziesz nurkować w ręce na znacznie więcej PHP i problem, ale także zestaw siedmiu SQL, lub SQL, jest to język, który użyć, aby porozmawiać z bazy danych. Ale co to jest baza danych? Dobrze myślisz bazy danych, przynajmniej na razie, jak po prostu jak pliku Excel, lub jeśli plik Mac numery użytkownika a, lub jeśli jesteś z Google Apps użytkownik arkusza kalkulacyjnego Google to skutecznie w bazie, czy naprawdę specjalnie relacyjnej bazy danych. Relacyjna baza danych jest tylko coś, co ma wierszy i kolumn, i można przechowywać dowolny rodzaj Informacje zawarte w tych rzędach lub kolumnach. Ale to, co miłe, o SQL i o rzeczywistych baz danych, a nie tylko arkusze kalkulacyjne Google, lub jest to, że można używać języka faktycznie wykonywania zapytań do wstawiania danych, aby usunąć dane, szukać danych, nawet najważniejsze, a ci nie trzeba go używać dość ręcznie jak mogłoby zazwyczaj Google arkusz tak. Więc w SQL, nie ma kilka Oświadczenia lub kawałki podstawowe funkcjonalność wbudowany. Jest o wiele więcej niż te, ale można go ogromny dystans po prostu wiedząc, że język ten nazywa SQL ma co najmniej cztery oświadczenia można wykorzystać. Usuń, do usuwania danych, Wstaw, do dodawania wierszy, Update do zmiany wiersze i Wybór, na powrót wiersze i to jest rzeczywiście to, co robi SQL. Działa wyłącznie na wierszach tak że po włożeniu lub usunąć, lub aktualizacji, lub wybierz co masz powrót jako tzw wyniku, jak tablica rzędów. Kilka wierszy z tabeli. Więc z powrotem w dzień, a nawet do dnia dzisiejszego, można wchodzić w interakcje z bazy danych przy użyciu wiersza polecenia, ale to nie jest szczególnie przyjemny w użyciu okno w stylu czarno-biały i faktycznie wykonywać polecenia i rozglądamy bazy danych. Graficzny interfejs użytkownika, lub GUI, jest o wiele bardziej korzystne, prawdopodobnie, i tak zalecamy i narzędzia preinstalowany na Ciebie na urządzeniu nazywa phpMyAdmin. To całkowity przypadek, że nazwę tej rzeczy ma PHP w nim, to po prostu oznacza, że ​​ludzie, kto napisał ten program się napisał w PHP. Ale to w końcu o administrowanie serwer bazy danych, jak serwer MySQL że możesz mieć, jak ci nie, w urządzenia CS50. Więc nie ma więcej szczegółów tutaj niż musimy dbać o dziś, ale co to jest to, że klucz po lewej stronie lewa strona jest lista baz danych że masz na komputerze, na urządzenia CS50, lub przyjść projektów końcowych, które mogłoby mają na osobę trzecią, spółki strona lub serwer www, który można płacić za miejsca. Więc na lewo jest bazy danych, z których jeden jest pset7 które pożyczyłem od następnego tygodnie pset, a następnie na szczycie nie zauważysz kilka zakładek, z których jeden jest baz danych, SQL, stanu, użytkowników, eksport i tak dalej. Więc możesz iść długo sposób tylko poprzez realizację że większość interfejsu znajduje się w górnej lewej kolumnie i na górze aż tam. Więc co możemy rzeczywiście z tym zrobić? No cóż, zacznijmy od stworzenia bit informacji w następujący sposób. Załóżmy, że po to przypadek, jak będzie w ciągu kilku dni, chcesz realizować strona internetowa o nazwie CS50 Finanse, a ta strona pozwala kupować Koniec cytatu i sprzedawać akcje. I to będzie dowiedzieć się, cena tych akcji, ostatecznie, jak zobaczysz, rozmawiając z Yahoo Finance. Które, cudownie, ma bezpłatny w którym można przekazać w giełdowy jak GOOG dla Google, i to oddać bieżącej akcji Google Cena w przeszłości co najmniej kilka minut. Więc będziesz używać, aby ostatecznie udawać, że dla użytkownika kupować i sprzedawać rzeczywista akcje wykorzystujące wirtualne pieniądze, ale pierwszą rzeczą użytkownik będzie zobaczyć Jest to ekran logowania, który je pyta ich nazwy użytkownika i hasła. I tak, jedna z pierwszą wyzwania dla ciebie w pset7 będzie wdrożyć tylny koniec bazy danych, arkusza kalkulacyjnego, jeśli chcesz, że idzie do przechowywania Nazwy użytkowników i hasła i ostatecznie co zapasów są właścicielami, i ile, i ile pieniędzy mają, tak, kilka innych rzeczy w inne tabele lub arkusze kalkulacyjne. Warto więc przyjrzeć się, jak to może wydawać na pierwszy rzut oka. Mam zamiar wrócić do urządzenie i jestem zamiar iść do tego adresu URL tutaj phpMyAdmin localhost / phpmyadmin a zobaczysz, że zabiera mnie do interfejsu dokładnie tak, jak widzieliśmy na zrzut ekranu, a ja tu mają dodatkową bazę danych Wykład na dzisiaj nazywa i pozwól mi iść do przodu Pierwszy i kliknij pset7. I wydaje się, że kilka opcji, jeden dla nowych, dla tworzenia nowej tabeli, oraz link do użytkowników, których Tabela jest już utworzony. Więc co jest stół? Więc jeśli używane Excel przed, a jeśli już numerów lub Google Arkusze kalkulacyjne, można otworzyć okno i masz całą masę wierszy i kolumn ale wtedy zazwyczaj arkuszy na dole, lub oddzielnych kartach. Można myśleć o każdym arkusz jako tabela tak, że baza danych jest w końcu Połączenie z jednym lub więcej tabel, jeden lub więcej arkuszy, w Świat normalnym arkuszu kalkulacyjnym. Więc pozwól mi iść do przodu i kliknij na arkuszu że wstępnie wykonany, zwane użytkowników, a.k.a. Tabeli bazy danych. A jeśli przewijać tutaj, pozwól mi oddalić się nieco, to jest to, co mówi phpMyAdmin nas jest wewnątrz tabeli teraz. To trochę mylące na początku rzut oka, ponieważ nie jest UI najładniejsza rzecz na świecie, ale co ciekawe, ta część tutaj. ID, nazwę użytkownika i mieszania. Z góry, i będziesz ręką to w problemu ustawić siedem, dajemy Ci plik zawierający super, mała tabela bazy danych, w rzeczywistości pożyczone z edycji hakerów z problemem ustawić dwa, wewnątrz której znajduje się sześć wierszy. Jeden dla Belinda wszystkie droga w dół do jednego dla Zamyla, i zauważyć na lewo od tych, Identyfikatory są unikalne nazwy użytkowników, jak jeden, dwa, trzy, cztery, pięć, sześć, całkowitymi, a następnie w prawo, są skróty. A jeśli, kursy są, nie zrobiłeś Problem edycja haker ustawić dwa, ale skrót jest szyfrowany, tak jak hasło z kilkoma zastrzeżeniami. I tak, co można zobaczyć tutaj zaszyfrowane wersje wszystkich sześciu naszych haseł od problemu ustawić dwa edycję hakerów. Teraz w lewo, to tylko niektóre GUI rzeczy, edytując ten wiersz, kopiując ten wiersz, usunięcie tego wiersza. Ale co ciekawe Teraz jest następujące. Mogę zacząć eksperymentować z tej tabeli. Więc jeśli pójdę i kliknij SQL Zakładka, mam to pole duży tekst. I nie jest to, jak będziemy zrobić, gdy faktycznie pisania kodu. Żeby było jasne, phpMyAdmin jest tylko narzędziem, które jest pozwoli nam grzebać w bazie danych i daj nam eksperymentować z zapytaniami. Tak na przykład, załóżmy, I wykonać dokładnie to. Select, który jest jednym z tych, słowa kluczowe wspomniałem wcześniej, gwiazda, który reprezentuje wszystkie kolumny w tabeli. Z tego, co stół? Cóż, użytkownicy. I nie ma to zawiadomienie dziwne konwencja w SQL gdzie faktycznie używać powrót kleszcze, zwykle, nie pojedyncze cytaty i nie cudzysłowy kiedy mówisz o nazwach tabel, więc z powrotem cytat rzeczą na Lewa górna klawiaturze najbardziej prawdopodobne. Więc pozwól mi iść do przodu teraz i po prostu zostawić to w spokoju i przewiń w dół i kliknij przycisk Go, a my jesteśmy faktycznie zobaczymy to samo. Właśnie wykonywane zapytanie SQL mówiąc zaznaczyć wszystko gwiazdę z tabeli o nazwie użytkowników i co masz z powrotem to. Ostatecznie, będziemy w stanie zrobić to samo w kodzie, ale na razie wszystko, co chciałem nie było go zobaczyć w przeglądarce. Dobrze zróbmy coś trochę inaczej. Pozwól mi wrócić do zakładki SQL, i powiedzmy, że co? Zamyla stracił wszystkie jej pieniądze, i dlatego, że to czas dla nas, aby usunąć ją jako użytkownik. Ona już nie zalogujesz. Więc mam zamiar powiedzieć usuwać from-- dobrze, utrzymują kapitalizacji spójność, usuń od użytkowników gdzie. I tak, możemy mieć te predykaty, czy te kwalifikacyjne, na koniec moje oświadczenie gdzie iw jaki sposób można usunąć Zamyla? Jej nazwa Zamyla, więc Kolumna jednej z kolumn został nazwany, więc gdzie name = "Zamyla". I tutaj mogę używać podwójne cytaty lub pojedyncze cytaty, używać tylko z powrotem, gdy kleszcze mówić o nazwach, na przykład, tabel lub pól. I niech mi kliknij tutaj. A teraz strona jest jest trochę spięty. Albo, czy naprawdę chcesz, aby wykonać usuwanie od użytkowników, których nazwa jest równa Zamyla? Tak. Więc teraz, jeśli wrócimy do mojego stolika Klikając użytkowników, zauważysz, że Hm. I goofed. A w rzeczywistości, rodzaj kliknął się tak szybko nawet nie zobaczyć czerwony komunikat o błędzie, być może. Co robię źle? Publiczność: Nie trzeba wykorzystać jej nazwisko. David J. MALAN: Tak, kapitalizowane jej imię, ale faktycznie ja ją username-- się kilka błędów, prawda? Jeden z nich, jej nazwa jest zamyla, małe litery Z, i nazwa kolumny jest nazwa użytkownika, nie nazwać, więc zróbmy to jeszcze raz. Pozwólcie mi iść do przodu i usunąć z użytkowników gdzie nazwa użytkownika wynosi cytatu "Zamyla". Wszystko w porządku? Tak to wygląda trochę lepiej, niech mi iść przewiń w dół i kliknij przycisk Przejdź. To nadal będzie krzycz na mnie, aby się upewnić. I kliknij przycisk Tak, a teraz widzimy, szczerze to się stało, naprawdę szybko, mniej niż jeden Drugi na pewno, to jest dokładnie to, że dostał wykonane zapytanie. Aby potwierdzić, pozwól mi kliknąć użytkowników i rzeczywiście teraz Zamyla nie ma. Teraz nie na odwrót. Załóżmy, że Gabe chce zarejestrować się na stronie internetowej. Co znajduje się zapytanie SQL, co jest Komenda mogę wpisać dodać Gabe'a? Dobrze, że to całkiem proste. Włóż do użytkowników, a teraz robi się trochę tajemnicze. Trzeba określić, do serwera, jakie pola chcę przypisać. I naprawdę nie obchodzi mnie, co Gabe ID liczba, więc mam zamiar pominąć to. Ja zamiast powiedzieć nazwa, skrót, a następnie wartości chcę umieścić nie będzie Gabe. A następnie jego skrótu, nie wiem. Więc teraz, mam zamiar zostawić, że jak duży to zrobić. Wrócimy do że ustawienie problemu specyfikacja, jak faktycznie zrobić. Więc zauważyć, znowu, składnia. Wstawić do nazwy tabeli, a następnie nawiasach lista pól, kolumny chcesz dodać wartości do, a następnie po prostu dokładnie taki sam porządek lewo prawo wartości, które chcesz dodać, i to tylko dlatego, pakowania tekst jest trochę długi. Więc teraz pozwól mi kliknij przycisk Przejdź. Wstawiony jeden wiersz. A teraz, jeśli wrócę do użytkowników, co ciekawe jest to, że teraz nie tylko w Gabe bazy danych, co jest najwyraźniej jego ID? Cóż to jest siedem. Dlaczego jest to siedem, kiedy nie je dodać? Tak więc też jeden z funkcje można uzyskać z bazy danych. Wiele zbudowany w funkcjonalności. Okazuje się, że gdy stworzył tę tabelę, I to jest skonfigurowane automatycznie przypisanie identyfikatora w taki sposób, że zwiększa to. Więc jeśli kiedykolwiek grzebali, i spojrzał na to, co twój Facebook ID liczba, te dni to naprawdę nie jest rzeczy do zrobienia, ale Facebooka jako API, Application Programming Interface, w którym można wrócić cała masa danych o sobie, o swoich znajomych, i połączeń. A co było rodzajem fajne, z powrotem w dzień, było patrzeć, co się Facebook numer ID był. Mark Zuckerberg na, na przykład, jest trzy ponieważ był autor strony. I jak mówi historia, stworzył dwa konta testowe, użytkownicy jeden i dwa, które następnie usunięte. I tak, Zuck, jak jego nazwa użytkownika na Facebooku, to ID numer trzy, i każdy z nas ma wiele numerów większy niż trzy te dni. W rzeczywistości, w pewnym momencie Facebook odszedł ze nawet przy użyciu int, który Jest to wartość 32-bitowa, z wykorzystaniem Następnym krokiem, zasadniczo tak długo długo że mogą pomieścić nawet więcej użytkowników rejestrujących. Tak zabawna fakt historyczny. Więc to tylko Podstawowa składnia, z którym możemy wykonać kilka pytania, ale może rzeczywiście zrobić kilka innych rzeczy z SQL. A zobaczysz, ostatecznie, w problem zestaw siedmiu że trzeba zrobić liczba decyzji projektowych, wśród nich będzie jakie typy danych do wykorzystania. Więc tak jak w C, są dane typy w bazie danych, jak MySQL, i typy danych masz do wyboru ze to te pola tutaj. Char, varchar, Int, duży int, dziesiętny data i czas, i wiele innych. Więc rzeczywiście to zrobić. Załóżmy, że, że nie ręka ci tabela użytkownika i pozwól mi iść dalej i stworzyć dla ja, w wykładach database-- rzeczywiście pozwolił mi iść dalej i usuwać Stół mam tu już tak, że możemy rzeczywiście stworzyć to. Ups. Idę do spadku tego stół, a teraz jestem pójdą ponownie do wykład bazy tutaj, Mam zamiar utworzyć tabelę zwane użytkowników i LET'S wystarczy zrobić trzy kolumny początkowo i kliknij przycisk Przejdź. Obecnie, w większości przypadków, Ponownie, jest to po prostu za pomocą tego narzędzia graficznego o nazwie phpMyAdmin, i co teraz robimy tworzy tabelę. Tak to jest jak Plik, Nowy, i tworzenia nowego pliku programu Excel. Więc pyta mnie kilka pytania, od lewej do prawej, jaka jest nazwa pierwszej kolumny, a następnie Nazwa drugiej kolumnie i nazwa trzeciej. Warto więc odtworzyć to. ID, a następnie nazwa jest jednym, a następnie hash był inny. Więc co należy typ danych się teraz na polu, jak ID? Oto cała lista typów danych dostępne w bazie danych, a teraz niech po prostu iść z int. Wartość 32-bitowy, nie wiem myśleć realistycznie jestem będzie mieć ponad 4 mld użytkowników w moim koncie, w mojej służbie, więc mam zamiar ruszać do następnego pytania. Nie zamierzam podać długość lub wartości, to nie dotyczy tutaj int, per se. I teraz można określić, najwyraźniej, domyślnie wartość, której nie zamierzam określić. Sortowania, nie wiem co to jest. Atrybut. Teraz faktycznie decyzję w projekt. Więc jest kilka pól tutaj, nie wszystkie z których są stosowane, ale bez znaku oznacza po prostu, co? Że int musi być? Tylko nieujemne. Więc to musi być 0 w górę. Nie, ja nie zamierzam sprawdzić, ponieważ Chcę, aby każdy użytkownik ma identyfikator, to nie może być null. A potem dostać się do niektórych bardziej ciekawe decyzje projektowe takie jak ten. Wrócimy do tego za chwilę, ale co innego cechą bazy jest to, że można powiedzieć, Serwer bazy danych śmiało i optymalizacji siebie, swoją Pamięci RAM i miejsca na dysku twardym, tak, że wybór i wkładki, a usuwa i aktualizacje są bardzo szybko. Porównajmy to z pset5. Jeśli chcesz wyszukać coś w tabeli mieszania, które myślisz jak baza danych, który musiał zrobić wszystko pracować do tworzenia tabela mieszania szybko. To jak, oczywiście, można. Prawda? Trzeba było umieścić w cały czas grzywny strojenie rzeczy, coraz funkcji skrótu prawo, zastanawianie się, jak wiele wiader mieć. Ale to, co miłe, znowu, o bazy danych po prostu punt wszystkie to dla innych ludzi Ten, kto pomyślał, dzięki dla Ciebie, a co Mam zamiar powiedzieć, pod Strona jest moim polu ID będzie podstawowym sposobem identyfikacji użytkowników w bazie danych. Nie zamierzam myśleć z Zamyla jako Zamyla, Będę myśleć o jej jako numer 6. Dlaczego jest to, być może, lepiej intuicyjnie myśleć i modelu każdego z poszczególnych rzędach za pomocą liczba a nie coś jak struna, podobnie jak Zamyla lub Gabe lub dłuższy ciąg jeszcze? Tak? Publiczność: ID jest unikalny? David J. MALAN: Powiedz jeszcze raz? Publiczność: ID jest unikalny? David J. MALAN: ID jest wyjątkowy, ale suppose-- w przypadku w ogóle z nazwy użytkowników, załóżmy Powiedziałem również, że może być tylko jeden Zamyla na świecie, a tylko jeden Gabe. Mogę nałożyć wyjątkowość ograniczenie na strunach, zbyt, czy chcę. Tak więc nie jest to zły pomysł. Publiczność: bardziej bezpieczne. David J. MALAN: Bardziej bezpieczne, to dlaczego? Publiczność: Nie można powiedzieć, która Jest które, jak w użytkownika. David J. MALAN: OK, ty Nie można powiedzieć, które użytkownik to, które nie ma więc aspekt prywatności do niego, zwłaszcza gdy identyfikatory może występujące w adresach URL. Tak pewien, że mogłem rodzaj pracy, też. Inne myśli? Tak? Publiczność: Łatwiej wykonywania operacji na int. David J. MALAN: To jest prawdziwy kicker. To tylko bardziej wydajne, lub łatwiej komputera, do wykonywania operacji na liczbę całkowitą. Prawda? Int jest gwarantowane jest 32-bitowy, natomiast Zamyla jest długa kilka znaków, Gabriel to długo jeszcze kilka znaków, Davenport jest naprawdę długa, a więc jest to nie jest szczególnie efektywne w użyciu struny do porównania wartości i spójrz dla pól i pól aktualizacji, czy można uciec z tylko jedną liczbę całkowitą. Zaledwie 32 bitów. Więc nazwy użytkowników, również w ten sposób, nie muszą być unikalne, choć chyba powinno być, a nawet w ten sposób zbyt użytkownik może mieć możliwość zmienić swoją nazwę użytkownika. Więc teraz zostawić to jako podstawowym środkiem identyfikacji użytkownika. Ta baza danych jest mówienie iść do przodu i optymalizacji siebie tak, że spojrzenie na ID UPS są super szybkie. AI strasznie nazwie, po prostu Oznacza Auto Przyrost, i jest sprawdzenie box musimy sprawdzić aby określić, że do pola ID automatycznie zaktualizowane dla mnie, i mam zamiar Przewiń w prawo, tutaj i szczerze mówiąc nie jestem zainteresowany w każdym z tych dziedzin. Na pewno nie dzisiaj. Więc mam zamiar wrócić tu, na pierwszą kolumnę, gdzie Muszę podać nazwę użytkownika i hash, i niech w najmniejszym naciskiem na Drugi na razie. Int nie jest chyba w porządku połączenie, więc co ma większy sens może? Publiczność: Tekst. David J. MALAN: Powiedz jeszcze raz? Publiczność: Tekst. David J. MALAN: Tekst? OK, słyszałem tekst. Co jeszcze? Mamy rodzaju mają kilka opcji do wyboru że są tekstowy charakter. Tak więc, kiedy i dlaczego, czy korzystać z niektórych z nich? Cóż char, w przeciwieństwie do tego, co mogłoby myślę, nie jest pojedynczym znakiem. Jest to określona liczba znaków. Tak więc, jeśli wiemy, że wszystkie nazwy użytkowników musi być jak ośmiu znaków, jak kiedyś powszechne w starszych systemy komputerowe, mogę powiedzieć, char i wtedy będę mógł powiedzieć 8 tutaj. To wtedy trzecia kolumna staje się zastosowanie podczas tworzenia tabeli. Ale to trochę denerwujące ponieważ niektórzy ludzie mogą chcesz mieć dłuższą nazwę użytkownika niż osiem znaków, niektóre osoby mogą chcieć mają krótszą nazwę użytkownika, dlaczego więc zobowiązuję się do konkretnej liczby? Dlaczego nie ma zmienną Liczba znaków i po prostu powiedzieć, że maksymalna długość nazwy jest, nie wiem, jak 64 znaków. Nie mogę myśleć o żadnych przyjaciół, którzy mają nazwy dłuższe niż 64 znaków, a nawet jeśli to jest zbyt krótki mógłbyś pewnością podbić go arbitralnie. Więc jest to zmienna varchar liczba znaków. Tekst nie jest zły instynkt, i szczerze, że jakby nie to, co mówi, ale może być pole tekstowe jak co najmniej 65.000 bajtów. To chyba przesada dla pole, w rzeczywistości, yup, 65535. To chyba przesada dla wymienić, więc będziemy trzymać, zazwyczaj, z varchars dla tekstowych pola i hash, też. Hash, jak się okazuje, nie mogliśmy zrobić varchar oraz czy coś takiego, ale dzisiaj nie będzie koncentrować się na kryptografia tam i numery że może faktycznie Aby wykorzystać do jej długości. Ale pozwól mi przewijać w prawo. Można tylko mieć jeden Wskaźnik podstawowy dla tabeli, ale chcę mieć zastosowanie któregokolwiek z nich, teraz, aby nazwa użytkownika, można by powiedzieć? Co należy nazwa użytkownika w oparciu o niejasne zrozumienie tych czterech opcji? Po prostu po imieniu? Publiczność: Unikalne. David J. MALAN: Tak wyjątkowy, prawda? Tak więc okazuje się, że nie tylko mógł powiedzieć bazy danych, z góry, jest podstawowym sposobem identyfikacji pola. Można również powiedzieć, że to będzie wyjątkowy pola. To nie będzie rzecz, polegać, ale chciałbym do bazy danych mają zasadniczo, że jeśli warunek, więc że jeśli kiedykolwiek próbował zarejestrować dwóch użytkowników o tej samej nazwie, mieszkanie z bazy danych nie będzie mnie na to. Może mam jakiś dodatkowy kod w PHP, który zapobiega tyle, ale baza danych, zbyt, może zapewnić że to się nigdy nie wydarzy. Teraz, jak na bok, zwłaszcza, myślisz o projektów końcowych, Pamiętaj, to i pełny indeks tekst jest całkiem przydatna. Jeśli masz większą bazę danych, a nie z dziesiątki, ale setki tysięcy lub nawet miliony pól, można również powiedzieć bazy danych z góry jest to pole idę do poszukiwania na wiele. Być może jego nazwa, może to bio, jeśli jesteś dokonywania Facebook stronie internetowej, że podobny ma paragrafów, które pozwoliły użytkownika zapisać, a jeśli chcesz powiedzieć bazy danych z góry Mam zamiar być na tym polu wyszukiwania Wiele, ale nie jest to koniecznie unikatowy, można określić, stworzyć mi indeks. Albo można też powiedzieć, pozwól mi zrobić, rodzaj wyszukiwania, takich jak Komendy arbitralnych lub sterowania F, jak ty moc w edytorze tekstu, więc można szukać dowolnych ciągów lub podciągi w tej dziedzinie. Innymi słowy, jesteśmy coraz do punktu w połowie gdzie nie trzeba się martwić o jak wdrożyć rzeczy skutecznie. Trzeba tylko wiedzieć, o co decyzje projektowe, aby tak, że jesteś przy użyciu odpowiednich narzędzi dla handlu w celu wykorzystania możliwości że inni ludzie myślą o tobie. Przypomnę więc, podstawowym powinien tylko mają jeden, może masz tylko jedną, i jest rzeczą, którą zobowiązuje się do używając do identyfikacji wyjątkowo pola. Unikalne jest tylko w duchu podobnym, ale można go używać tylko sporadycznie, ale chcesz go nałożyć bazę danych. Wskaźnik oznacza tylko zapobiegawczo przyspieszyć w przyszłości tak, że można szukać rzeczy w tej dziedzinie. A następnie pełny tekst jest na ogół za akapity lub eseje, albo duże podmioty tekstu, w którym Warto również mieć dzikie karty, jak równowartość gwiazdy. Prawo. Więc to był rodzaj Wiele wszystkich naraz. Zobaczymy, czy nie możemy destylować Kilka z tych funkcji a następnie zbudować coś dość proste, ale potężne. Tak więc wśród innych decyzje projektowe mozesz w końcu będzie musiał się wraz linie silników składowania. I niech mi tylko o tym wspominać w oczekiwaniu na ostateczne projekty, i przewidywanie Miejmy say-- nie zróbmy to. Zbudujmy ten mały pierwszy wniosek. Mam zamiar iść do mojego terminalu Okno, a nie jest tutaj tylko counter.php, które mamy teraz dzieje aby pozbyć się jak nie z tematem, ale mamy całą masę katalogów i to będzie bardzo podobne w duchu do tego, co można zobaczyć w problemu ustawić siedem. Więc mamy trzy katalogi obejmuje publiczne i szablony, które jest dokładnie tam, gdzie skończyliśmy na Poniedziałek z naszego całego MVC paradygmatu. I podsumowaniem, publicznie pójdzie każdy plik, który chcę, aby użytkownicy faktycznie v możliwość odwiedzenia w ich przeglądarka poprzez URL. Szablon. Co stawiamy w szablonach? Jakie rzeczy? Nie było zbyt wiele, ale kilka Pliki przynajmniej w poniedziałek. Tak. Publiczność: Nagłówek i stopka? David J. MALAN: Nagłówek i stopka. Więc mamy coś podobnego dziś, też. Mamy jeszcze kilka plików, ale Stopki widzę, Header widzę, i kilka innych plików. Jest to więc odpowiednik których widoku V MVC,, znowu będzie nieco więcej jasne, w problemu ustawić siedem, ale to jest tylko folder jestem wprowadzenie wielu moich estetyki. Wiele moich HTML, wielu moich postaciach. Tymczasem obejmuje kolejny Katalog, który ma te trzy pliki i rzućmy okiem na to. Mam zamiar iść do przodu i otworzyć config.php. Jak się okazuje, wiele jak wcześniej w tym okresie, Ci ostre zawarte CS50 kropka hz pset7. W dzisiejszym przykład, idziesz zrobić równowartość że z oświadczeniem wymagają które skutecznie zawiera te kilka linii. Tak aby było jasne, to jest plik o nazwie config.php. I zauważyć, co robi. To podobno robi coś tajemnicze, zamieniając się na komunikaty o błędach tak, że można je zobaczyć w przeglądarce. To, czym, najwyraźniej wymagając dwa inne pliki tak to jest jak #include w C, a następnie ten widzieliśmy, i mamy powoływać, to włącza się że koszyk jak funkcjonalność. Oznacza to wolę ciasteczka być wysyłane tam iz powrotem. Więc dlaczego jest to interesujące? Cóż, jeśli wrócimy do tego Katalog i otwarcie, na przykład, constance.php. Zauważ, że PHP ma stałe wsparcie, to nie jest całkiem jak #define w C Zamiast tego dosłownie powiedzieć, zdefiniowane, a informacja że mam zapisane z góry cztery stałe w tym pliku. Jeden dla dzisiejszej bazy danych dla hasła, dla mojej nazwie użytkownika, i nazwy serwera. Tak więc są to rzeczywiście będzie dość podobny problemu ustawić siedem. I wreszcie, i to, gdzie jestem dostanie kilka ciekawych funkcjonalności od pracowników, w functions.php jest kilka kod pisaliśmy, i ukradł część tego zestaw siedmiu z problemem na dzień dzisiejszy, że robi kilka rzeczy i niech to wystarczy spojrzeć na jednego z nich w szczególności. Funkcja ta tutaj, zapytanie, będzie Funkcja PHP nazywamy w celu realizacji SQL. Chwilę temu byliśmy przy użyciu phpMyAdmin, ale to tylko do rodzaju celów kształcenia i diagnostycznych i zapominając zestawu bazy danych. Podczas korzystania z urządzenia w rzeczywistości bazy danych, to ludzki, Oczywiście nie dzieje się do podciągania w internecie Strona każdym razem ktoś rejestruje. Masz zamiar napisać kod, który wkładki i usuwa użytkowników na żądanie, i mamy zamiar to zrobić tytułem opcji zapytań. Gdybym teraz przewijać, nie będzie jeszcze kilka cech. Przekierowanie będzie będzie funkcję pisaliśmy dla Ciebie, który pozwala na wysłać użytkownika na inny adres URL, i czyni to funkcja, zupełnie jak widzieliśmy w poniedziałek, że w rzeczywistości czyni szablon, ale o nich w forma pset7 własnej spacer. Teraz idziemy do przodu i to zrobić. Pozwólcie mi iść do mojego stolika i wykładów zobaczyć, że nie ma obecnie nic tutaj tylko jeszcze, i daj mi też przejść do mojego katalogu publicznym, gdzie jest tylko jeden plik index.php. Ten plik wydaje się być bardzo prosta w tej chwili, to wygląda tak jak ten. Bardzo podobnie jak my skończył w poniedziałek. Jestem wymagająca tego pliku, config.php, co jest zawiera katalog, który jest kropka kropki, moi rodzice, a potem to tylko renderowanie tego pliku. Więc co to za plik? Otwórzmy się w moich szablonów form.php, a my zobaczymy to. Super proste, najwyraźniej ta forma jest zamierza złożyć poprzez $ _GET lub $ _POST. Szybka kontrola poprawności. Dosłownie wizualnie wyszukać plik. Metoda równa post. Więc to nie będzie używać adresu URL, jak Google robi, to będzie coś w rodzaju skóry Informacje za sceny i to zamierza przedstawić plik o nazwie register.php, i to jest plik jeszcze nie napisane ale co to będzie wyglądać jak to jest. Jeśli pójdę do oddzielnej stronie To jest co localhost / index.php wygląda. I znowu, serwera tylko przy założeniu, że index.php. Enter. Tak więc to, gdzie jesteśmy na, i to, co chcę robić jest w stanie wpisać rzeczy jak Dawid, a następnie mój numer telefonu, który powie 617-555-1212 teraz, zarejestruj a teraz register.php nie został znaleziony. Więc muszę wdrożyć to. Więc szybko wzbudzać coś takiego jak to. Pozwólcie mi iść do mojego katalogu publicznym i zrobić gedit z register.php, i teraz mam zamiar iść do przodu i uruchomić tryb PHP, tak jak to robiliśmy w poniedziałek, i tag zamkn PHP i zróbmy kilka rzeczy. Tak jeden, wiem, ze po napisaniu tego formularza, że chcę sprawdzić poniżej. Jeśli jest pusta, co użytkownik wpisany do pola Nazwa, a następnie Mam zamiar coś powiedzieć jak przeprosić brakuje nazwy. Przepraszam, w międzyczasie, jest nie zbudowany w PHP rzeczy, to funkcja pisaliśmy w functions.php dla pset7 tak, że masz do niego dostęp. Inny, jeśli inne pola jest pusta, numer, to ja jestem zamiar przeprosić Numer użytkownika i powiedzieć brakujący. Zapisz ten plik. Teraz wróćmy do mojej przeglądarce, wróć do forum spróbuj ponownie. Zarejestruj. OK. Nic się nie stało, co jest dobre. Nie pojawia się komunikat o błędzie. Ale jeśli zamiast tego, niech Przeładuj strona, i nie zapewniają niczego. Cholera. Zrobić. Zarejestruj. Co robię źle? Jeśli puste, nazwa $ _POST. Powiedz jeszcze raz? Och, oczywiście. Zapomniałem najważniejszą część, która to wymaga ("includes / config.php ../."). Muszę mieć dostęp do funkcję przeprosić, które Dlatego nic się nie działo. Funkcja nie istnieje. Warto więc spróbować ponownie. Miejmy odświeżyć stronę, kliknij przycisk Zarejestruj. OK. Nie jest. Tak, wyjście jesteśmy widząc tutaj jest wynikiem wywoływania przeprosić funkcja, bardzo proste, i po prostu wypisuje cokolwiek Daję go jako argumentu. W porządku, więc niech współpracują. Miejmy dostarczyć moje imię jak Dawid, zarejestruj, brakuje numeru OK Miejmy zapewnić, że zbyt. 617-555-1212. Zarejestruj. OK. Więc teraz wszystko jest w porządku, po prostu nic ciekawe dzieje. Więc teraz zróbmy coś więcej ciekawe jak to się stało. Pozwól mi wejść do phpMyAdmin, i niech rzeczywiście utworzyć tabelę o nazwie użytkowników, Mam zamiar dać mu trzy kolumny i będę szybko stworzyć identyfikator, a następnie Nazwa, a następnie numer, a pole ID jestem zostawię jako int. Pole nazwy Idę pozostawić jako varchar, i powiemy 64, nieco arbitralnie. Liczba idę zrobić, wiesz co? Jedziemy do obsługują numery nas tutaj tak mam zamiar zrobić coś jak char, a następnie 10 znaków max za numerem kierunkowym i siedem cyfr. A potem tutaj, mam zamiar określenie auto przyrost tego pola, uczynić to klucz podstawowy, a Mam zamiar iść do przodu i nie sprawdzić każdy z tych innych polach. Więc kiedy wreszcie kliknij przycisk Zapisz, i wrócę do mojej tabeli użytkowników, jest to, jak to wygląda, jeśli Teraz kliknij strukturę nowej karcie. Więc to, aby być jasne, phpMyAdmin jest po prostu sposobem na mówić tabelę bazy danych ma identyfikator, nazwę i numer z tych konkretnych konfiguracji i będziemy ignorować pozostałe pola nie teraz. Więc teraz, co chcę zrobić? Więc jeśli pójdę teraz do mojego kod źródłowy, jeśli wszystko jest w porządku Chcę wykonać następujące zapytanie. Wstawić do, i mogę tylko mówią użytkownicy nie mam ściśle trzeba ci wrócić kleszcze czy to nie niebezpieczne słowo jak użytkowników. Mam zamiar powiedzieć imię, numer, a następnie tu jestem Nie będzie ciężko kodem cyfra wartości jeszcze. Mam zamiar umieścić dwa znaki zapytania. I to jest konwencja w wielu językach zgodnie z którym, jeśli chcesz mieć zastępczy ciąg masz zamiar użyć pytanie Znaki powodów my będziemy wrócić do rozmowy o bezpieczeństwa, a tutaj Zamierzam przekazać w tych dwa pola pisać nazwę, a następnie po numer a teraz zapisać plik. A teraz mam zamiar zejść tu jest super po prostu powiedzieć rendersuccess.php, który będzie inny szablon. Mam zamiar stworzyć naprawdę szybko. Geditsuccess.php a ja po prostu się powiedzieć sukces H1 w tym pliku. Dobrze. Więc teraz, wróćmy do Przeglądarka, gdzie byłem przed. Idziemy dalej i potwierdzić napisałem Dawida, pisałem w numerze telefonu, zarejestruj. Cholera. Co robię źle? Więc widzę błąd Tutaj mieć błąd w składni SQL. Pozwól mi wrócić do gedit, niech mi wrócić do register.php, i co ja pominąć, że Ostatni raz było ważne? Potrzebuję tego. Chcesz wiedzieć, że inne niż z o zauważyłem wcześniej, ale potrzebuję tego. Więc teraz wróćmy, a to był pomocny, aby zobaczyć w przeglądarce i dlatego w config.php my wypluć błędy. Idziemy dalej i przeładować, kliknij Kontynuuj, sukces. Więc teraz pozwól mi iść do mojego bazy danych i kliknij tutaj użytkowników, i przeglądać, a zauważysz, I teraz mieć Davida w mojej bazy danych tutaj. Teraz ta strona jest technicznie jeszcze nie na publicznym internecie więc nie mogę mieć inne ludzie umieszczenie tutaj, ale gdybym teraz chciał, na Instancja, wysyłać sobie wiadomości tekstowych. Chodźmy w opałach tutaj i sprawdzić, czy to faktycznie działa. Mam zamiar iść do przodu i usunąć tego wiersza a my w tym rozmycia w filmie później więc nie mamy Cały www tekstylny mnie a my teraz przejść do Przeglądarka i pójdziemy na wykład a my wpisać inny Numer tutaj, zarejestruj, sukces. Więc teraz, mój numer to prawdopodobnie w bazy danych, a teraz część zabawy. Miejmy faktycznie korzystać z PHP zrobić coś programowo, albo z polecenia linii lub z innego miejsca, a teraz jestem po prostu zamierza utrzymać proste i mam zamiar iść do mojego Katalog tutaj i wykonaj następujące czynności. Skrypt gedit powiedzmy, będziemy Nazywamy to tekst, #! / user / bin / env PHP jak widzieliśmy ostatnio. PHP. Teraz mam zamiar wymagają obejmuje config.php, chociaż może to wywołują niewielki błąd. A teraz mam zamiar iść dalej i powiedzieć, wierszy, zapytania, wybierz gwiazda z użytkowników, a teraz mam zamiar zrobić technikę z ostatniej chwili dla każdego wierszy jak rzędu. I mam zamiar zrobić coś prostego. Printf powiedzmy, że jest to nazwa, i jest to liczba, backslash n. A teraz mam zamiar przejść w wierszu cytatu nazwę, i numer wiersza cytatu, a teraz idziemy do przodu i moje okno terminalu chmod + x to zrobić ten skrypt o nazwie wykonywalny tekst. A teraz uruchom tekst. OK, więc postęp. Więc teraz mam napisane Linia skrypt poleceń, zwanym w języku PHP, że z tego powodu wymagają linię ma dostęp do tych wszystkich konfiguracji Stałe, że określone. Nazwa bazy danych, i tak dalej. W rzeczywistości, po prostu być jasne że to nie jest fuks, pozwól mi iść dalej i zarejestrować, bardzo szybko, ktoś inny jak Rob i daje mu numer 555-1212. A teraz, jeśli uruchomić skrypt ponownie, zauważysz moc z tego, co robimy z bazy danych. Teraz już widać, co natychmiast pozostałe dwa wiersze są w mojej bazy danych. Teraz spróbujmy zrobić coś nawet hodowcy wewnątrz, i to jest część mamy nie badano z góry, tak ostatni raz zrobiłem to wszystko poszło strasznie krzywo, mamy wideo w tym celu. Właściwie, tak, zabawny bok. Więc po raz ostatni, w wykład, jak dwa lata temu, zdecydowaliśmy, postanowiłem, aby być wszystko to będzie świetny pomysł do dynamicznego generowania wiadomości w klasa, przy użyciu bazy danych całego CS50 studentów, którzy dali nam ich numery Telefon komórkowy i ich nośniki, które Cię może przywołać z pset0, jak rozumieć, okazuje się, Miałem drobny błąd w moim programie i zrobiłem kilka błędów w 2012, myślę. Przy czym jeden miałem do pętli, która zrobiłem dokładnie tego typu rzeczy, iteracji nad bazą danych, się nazwę z bazy danych, nazwy z bazy danych, a następnie na każdy iteracja pętli wysłałem e-mail. Ale zamiast wysłanie wiadomości e-mail, ja wysłał jeden e-mail pierwszej iteracji, i dwa e-maile drugiej iteracji, wysłany trzy maile drugiej iteracji, które jak może pamiętacie z naszego dyskusja notacji asymptotycznej O z tego wielki zły, jak n do kwadratu to ile wiadomości wysłałem, ale to nie było nawet e-maile było to wiadomości tekstowe. A jak wiadomo, nie jest frekwencja bardzo wysoki pod koniec semestru i tak myślałem, że będzie to ładny na czas, aby powiedzieć: "Dlaczego nie jesteś klasy?" W Wiadomość I wysyłane do całej klasie i to było śmieszne jak 50% klasa, ale pozostałe 50%, z których część pstry, i wysłał niezwykle apologetic słodkie nuty aby personel przepraszać po prostu brakowało wykład ten jeden raz, prawda? Tak, że będzie strasznie krzywo. Tak więc w tym duchu, spróbujmy to ponownie, ale tylko z moim numerem. Z góry, w functions.php, Napisałem tę funkcję tutaj. To się nazywa tekst, i to odbywa się w trzech argumentów. Numer, przewoźnik, a komunikat. Używam instrukcji switch, która cudownie PHP wziąć ciągi, a nie tylko liczby całkowite, a nie realizacji wszystkim wsparcie dla tego jeszcze, Właśnie odbywa się AT & T i Verizon. Ponieważ okazało że z tych przewoźników mają e-mail do bramki SMS, w którym można naprawdę wyślij e-mail na adres jak numer telefonu na vtext.com i jeżeli użytkownik nie zablokował wiadomości, to będzie przejść przez jest tekst wiadomości. Teraz, aby to zrobić, mam zamiar dodać jedno pole bardzo szybko do mojej bazy danych. Mam zamiar iść do moja konstrukcja, a ja jestem zamiar iść dalej i dodać Pole na końcu tabeli. Załóżmy, kliknij przycisk Go, a ja jestem Zadzwonię do tego przewoźnika i teraz mam zamiar zostawić to jako tekst bar, ale możemy być hodowcy w przyszłości. Mam zamiar szybko przejść na moim stole, a ja jestem zamierza pozbyć się Rob, bo to liczba fałszywych, Mam zamiar iść do edycji tutaj, a ja jestem będzie ręcznie zmienić przewoźnika być Verizon, które go jest, a teraz tutaj. Zróbmy szybki testow. Otwórzmy nasze skrypt tekst, który wygląda tak, przewoźnik jest% s. Robimy dużo więcej błędów sprawdzanie niż ja w 2012, przewoźnika. A teraz, mam zamiar iść do przodu i ponownie uruchomić skrypt. OK. Przewoźnik Verizon, co oznacza, Teraz mam nadzieję, że mogę zrobić tylko to. Właściwie w tym roku, miejmy nadzieję, że jedziemy. Więc to na środku pętli, jestem będzie nie tylko to printf, Mam również zamiar zadzwonić tekst i Wykorzystanie tej funkcji przywołania był potrzebny numer, przewoźnik i wiadomości. Zobaczmy więc, liczba będzie być wiersz cytatu "numer" wiersz cytatu "nośnik" i ostatni był komunikat. Nie zepsuć tego roku, średnik. OK. Kciuki. Zobaczymy, czy to działa. Dobrze, więc. No to jedziemy. Załóżmy, odblokować telefon, trzymaj kciuki, do cholery. Niezdefiniowana zmienna may-- oh czekaj, czekaj, czekaj, naprawdę szybko. Bardzo szybko, naprawdę szybko. To jest całkowicie warto. Pozwól mi złapać, pozwól mi chwycić, uh-oh. Dziękuję, teksty mają Zaczęło się od kogoś innego. Pozwólcie mi iść do przodu i otworzyć prawdziwe szybko, dropbox.php / mail tutaj. Czuwania. Całkowicie warto. Pliki do pobrania. OK, źródło src8m. OK. Potrzebujesz jeszcze jedną linię tutaj. Och, nie jest to, to jest w Frosh IM, to w rejestrze na trzech. Ach witam, Margo, dziękuję bardzo. OK, a mi brakuje tej linii tutaj. Więc pozwól mi szybko złapać ta linia kodu, który obejmuje mail lub bibliotekę że rzeczywiście chcesz użyć, Mam zamiar szybko wrócić do funkcji, Mam zamiar iść na górę to złożyć i wymagają tego pliku, jak również, a teraz mam zamiar naprawdę krzyż mój palce, gdy wrócę do polecenia Skrypt linia, która jest w środku dzisiejszy lokalny katalog hosta. Uruchom tekst. Enter. Poczta. Czuwania. Czuwania. Poczta. Och, OK. No to jedziemy. Poczta dostaje nowy PHP pocztowego. Czy zrobić to prawo? Cholera. To-- Och, czekaj, czekaj, czekaj. Stand by. Obiecuję, to jest będzie więc warto. Adres. Dlatego nie robię przykłady tuż przed klasą. Fuj. Następujące odbiorcy nie powiodło się. Spróbujmy jeszcze jedną rzecz. SMTP ustawić od, dodać adres, Adres jest rzeczywiście to. Spróbujmy tę ostatnią rolę w adresie. Och, jestem bardzo smutny teraz. Dziękuję. Ale ja naprawdę doceniam wszystko teksty byłeś wysyłania. Masz to David. Jesteś dmuchanie go. Zostawmy go tam i będziemy naprawić w poniedziałek. Do zobaczenia. Daven FARNHAM: A teraz Głębokie Myśli przez Daven Farnham. Jeżeli drzewo binarne spadnie w lesie i nikt nie jest wokół do C it-- [chichocze].