>> [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.
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].