[Powered by Google Translate] [Tydzień 9] [David J. Malan - Harvard University] [To jest CS50. - CS50.TV] Dobrze. Witamy z powrotem. To CS50, i jest to początek 9 tygodniu. Dziś skupia się w szczególności na projektowaniu, nie jest już w związku z C ale w kontekście PHP i trochę SQL i trochę JavaScriptu, szczególnie w kierunku końca zarówno Pset 7, a także Twój projekt końcowy. W rzeczywistości, jeśli jesteś w tym momencie w końcowym projekcie gdzie przypuszczalnie z jakąś godzinę temu You przynajmniej zaczął zastanowić do ostatecznego projektu i myślisz chcesz współpracować z 1 lub 2 kolegów, jeśli masz problemy z podłączeniem z kolegów powiedział, prosimy o wypełnienie formularza na cs50.net/partners/form. To po prostu pyta, kim jesteś, jaki rodzaj projektu myślisz o, gdzie mieszkasz tylko ze względów logistycznych. A potem, jeśli chcesz mieć na oku w ciągu najbliższych tygodni lub tak adres URL arkusza tam, następnie można zobaczyć tylko do odczytu wersji Google doc , w którym mamy do gromadzenia takich informacji. Więc jeśli chcesz pracować z kimś, na wszelkie sposoby tutaj, aby dotrzeć do ludzi, za pośrednictwem tego mechanizmu. Ale większość ludzi zrobić solówkę pracy. To jest całkowicie w porządku. Więc nie czuję, że jest to w żaden sposób obowiązkowe. W piątek, że to tylko ja i kilku z zespołu tu, pusty teatr dla większości. Były 3 turystów siedzi tam, więc to było trochę niewygodne. O czym rozmawialiśmy było baz i rozmawialiśmy o Pset 7 trochę. A jeśli tak się nie stało, aby złapać, że na film jeszcze, że jest w porządku. Postaram się ustalić żadnych warunków, że będziemy inaczej bierze za pewnik na podstawie wykładu piątek. Ale dzisiaj mamy zamiar spróbować dostać się do punktu o nie tylko jest w stanie zrobić coś takiego Pset 7 ale tak naprawdę zrozumieć, co się dzieje pod maską, zwłaszcza niektóre z abstrakcji, że wprowadzone w pliku functions.php aby wasze życie trochę łatwiejsze, ale tak, że w końcu zrozumieć tak, że gdy kółka spaść w ciągu kilku tygodni można jeszcze przeżyć w rzeczywistym świecie i robić te rzeczy bez CS50 ram pod Ciebie. To $ _SESSION, dla tych z Was, którzy znają lub którzy już złapali film w piątek, co to SESJA zróbmy w PHP na bazie aplikacji sieci web? To superglobalna zmienne, co oznacza, że ​​jest w duchu podobnym do GET i POST i kilka innych, ale co to za rzecz przydatna? Co to jest SESJA służy? Tak. [Uczeń] zalogowaniu Przepraszam? [Uczeń] zalogowaniu zalogowaniu Rzeczywiście. W Pset 7 używamy tego superglobalna SESSION ułatwić zalogowaniu A co o tym miło superglobalną jest to, że tablica asocjacyjna. Asocjacyjna, odzyskanie, jest tylko tablica ale których indeksów nie muszą już być liczbami jak 012. Numery mogą być lub mogą być one nawet łańcuchy. I tak, jeśli już zanurkował Pset 7 jeszcze, może pamiętacie, że jesteśmy przechowywania klucza o nazwie ID wewnątrz tej tablicy asocjacyjnej, której wartość jest czymś w 123 - co aktualnie zalogowany ID użytkownika jest. Motywacją jest to, że nawet po użytkownik odwiedził localhost czy moja strona bardziej ogólnie, a potem już zalogowany, nawet jeśli nie kliknij link lub powrót na mojej stronie internetowej na 5 minut lub nawet godzin lub nawet dni, ale zostawić ich okno przeglądarki otwarte, za pośrednictwem tej superglobalną Pamiętam, że jesteś zalogowany Innymi słowy, nie pozwala mi nieco długoterminowego przechowywania i ma nic o użytkownika. A może myślisz o tym naprawdę jako wcielenie koszyku. Miejsca takie jak Amazon, oczywiście pozwala umieścić rzeczy w koszyku, ale HTTP, protokół, który zasila w sieci, jest bezpaństwowcem w tym sensie, że po odwiedzeniu strony internetowej, w przeważającej części nie masz jakieś stałe połączenie sieciowe pomiędzy przeglądarką a serwerem. Jak tylko pobrałeś HTML i JPEG oraz GIF i wszystko, zasilania odchodzi i trzeba tylko kopię HTML i etażerka z serwera. Ale jeśli serwer chce pamiętać coś o tobie, ciężar jest na serwerze, aby faktycznie rejestruje te informacje. I tak programista, który ma kontrolę nad serwerem można umieścić prawie wszystko chcesz wewnątrz tego superglobalnej asocjacyjnej i będzie tam następnym razem użytkownik wraca, czy jest to minuta, a nawet dni później, chyba, że ​​ich zamknięcie okna przeglądarki, w którym SESJA punkt znika. Więc to efemeryczna przechowywania, to nie-trwałe, a to oznaczało, odejść jak tylko użytkownik zamyka przeglądarkę - nie tylko, że karta, często cała przeglądarki co skutecznie logowania użytkownika z. Więc jak to jest rzeczą faktycznie realizowane? Rzućmy okiem na prostym przykładzie przyjrzeliśmy się w piątek. Dla tych, którzy znają, to było tak proste, jak to. Jest to strona internetowa, której jedynym celem w życiu jest mi powiedzieć, ile razy ja odwiedziłem tę stronę. To jest pierwszy raz tutaj w poniedziałek, że byłem, więc to mówi 0 razy. Ale jeśli zacznę przeładunku tę stronę, to mówi 1 godzinę, 2, 3, 4, 5, i będzie to w końcu po prostu zachować na zliczanie w górę, w górę, w górę, w górę, w górę za każdym razem, tak naprawdę kliknij Odśwież na nim. Więc jak to działa? Pozwól mi wejść do środka tego pliku o nazwie counter.php. Górna część to wszystko jest niebieskie komentarzy, ale interesujący jest tutaj. W linii 13 nazywamy to session_start funkcyjnego i to jest dosłownie wszystko, co musisz zrobić, jeśli chcesz mieć dostęp do tego specjalny superglobalna nazwie $ _SESSION. To sprawia, że ​​jest to możliwe, a my zobaczymy za chwilę, jak to wszystko jest możliwe. W linii 16 zawiadomienia, co robię. Jeśli klucz, zwana przeciw - innymi słowy, wartość wskaźnika - "przeciw" istnieje wewnątrz tej tablicy nazywa SESJA, to co robię z nim w linii poniżej? Co to jest linia 18 robi? [Niesłyszalne odpowiedź uczeń] Co to jest? [Uczeń] Przechowywanie wartości. Good. To przechowywania wartości, które jest teraz w sesji w nowej zmiennej lokalnej czasowym, $ Licznik wszystkimi małymi literami. Zauważ, że PHP jest już trochę leniwy tutaj. Zauważ, że nie ma żadnej wzmianki na int lub float lub ciąg lub coś podobnego ponieważ PHP jest słabo maszynie, której nie trzeba określić typ zmiennej, w tym przypadku tutaj nie byli nawet oświadczył jeszcze. Jestem deklarowania wewnątrz tych klamrach i w przeciwieństwie do C, to jest rzeczywiście w porządku. Bez względu na to, jak głęboko zagnieżdżone deklarację zmiennej w PHP - wewnątrz nawiasem klamrowym, wewnątrz nawiasem klamrowym i podobne - będzie w tym momencie w czasie istnieje dla pozostałej części programu, na lepsze lub na gorsze. Więc natychmiast staje się globalnym jak najszybciej zdefiniować jako robimy tutaj. W przeciwnym razie, jeśli nie okaże się, że jest coś w superglobalną sesji, Jestem widocznie inicjowania tej zmiennej licznik na 0, w ten sposób po prostu zakładając użytkownik nigdy nie było tu wcześniej. I wtedy to oczywiście jest zwiększany licznik jak? Ja aktualizację wartości, które jest w środku tej tablicy asocjacyjnej ustawiając go równa co obecnie jest licznik + 1. Gdybym przewiń tutaj do kodu HTML strony, to jest rzeczywiście bardzo proste. Wszystko co mam w ciele tej stronie jest "Ty odwiedziły tę witrynę to i tak razy." I to jest konstruktem PHP. Jeśli tak