1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [PHP Web Development] 2 00:00:03,000 --> 00:00:05,000 [Tommy MacWilliam] 3 00:00:05,000 --> 00:00:07,000 [To jest CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:11,000 >> W tym filmie dowiemy się o użyciu PHP do tworzenia stron WWW. 5 00:00:11,000 --> 00:00:14,000 PHP jest językiem skryptowym, który może być wykorzystywany do 6 00:00:14,000 --> 00:00:17,000 strony na serwerze WWW. 7 00:00:17,000 --> 00:00:21,000 Serwer WWW jest w zasadzie urządzenie dedykowane dostarczyły 8 00:00:21,000 --> 00:00:24,000 , które mogą być dostępne za pośrednictwem Internetu. 9 00:00:24,000 --> 00:00:30,000 Po przejściu do strony internetowej, takich jak Facebook.com / home.php 10 00:00:30,000 --> 00:00:35,000 kod w pliku o nazwie w Home.php który mieszka na serwerze WWW Facebooku gdzieś 11 00:00:35,000 --> 00:00:38,000 będą wykonywane na tym serwerze. 12 00:00:38,000 --> 00:00:41,000 Kod ten może generować jakieś wyjście 13 00:00:41,000 --> 00:00:43,000 co z kolei przesyłane z serwera 14 00:00:43,000 --> 00:00:45,000 do swojej przeglądarki. 15 00:00:45,000 --> 00:00:49,000 Będziemy używać urządzenia CS50 jako serwer WWW. 16 00:00:49,000 --> 00:00:51,000 Twoje urządzenie prawdopodobnie nie będzie już tak potężny jak maszyny 17 00:00:51,000 --> 00:00:57,000 w Facebooka centrum danych, ale nie będziesz miał problemu z wykorzystaniem go do tworzenia stron WWW. 18 00:00:57,000 --> 00:01:05,000 >> Kiedy przejść do adresu URL http://localhost/hello.php 19 00:01:05,000 --> 00:01:10,000 możemy skonfigurować urządzenie za pomocą aplikacji o nazwie Apache HTTP Server 20 00:01:10,000 --> 00:01:19,000 szukać pliku o nazwie hello.php wewnątrz domu / jharvard / vhosts / localhosts / html domyślnie. 21 00:01:19,000 --> 00:01:23,000 Jeśli ten plik nie istnieje, Apache będzie używać interpreter PHP 22 00:01:23,000 --> 00:01:27,000 aby wykonać kod PHP w hello.php. 23 00:01:27,000 --> 00:01:31,000 Jeśli plik nie istnieje to Apache nie będzie rzucać znaleziono błąd 24 00:01:31,000 --> 00:01:36,000 lub 404 błąd, który już prawdopodobnie widział podczas przeglądania sieci Web. 25 00:01:36,000 --> 00:01:40,000 >> Rzućmy okiem na hello.php. 26 00:01:40,000 --> 00:01:45,000 Widzimy tutaj, że hello.php generuje linię sygnału wyjścia. 27 00:01:45,000 --> 00:01:51,000 Kiedy wpadliśmy hello.php w linii poleceń za pomocą php hello.php 28 00:01:51,000 --> 00:01:54,000 że produkcja została wydrukowana na terminal. 29 00:01:54,000 --> 00:01:58,000 Teraz, gdy mamy dostęp do tego pliku za pomocą adresu URL w przeglądarce internetowej 30 00:01:58,000 --> 00:02:01,000 jego produkcja zostanie wysłany do przeglądarki internetowej, 31 00:02:01,000 --> 00:02:09,000 więc udać się do adresu URL, http://localhost/hello.php, 32 00:02:09,000 --> 00:02:12,000 możemy zobaczyć wyjście w naszej przeglądarce internetowej. 33 00:02:12,000 --> 00:02:17,000 >> Spróbujmy dodanie kolejnego printf do naszego programu hello world. 34 00:02:17,000 --> 00:02:23,000 Ok, wracamy do przeglądarki i zobacz, co mamy. 35 00:02:23,000 --> 00:02:25,000 Ciekawe. 36 00:02:25,000 --> 00:02:28,000 Zamiast drukowania kolejną linię na własnej linii, tak jak widzieliście 37 00:02:28,000 --> 00:02:32,000 w terminalu, wygląda na to, że dostałem smushed na tej samej linii 38 00:02:32,000 --> 00:02:36,000 w drugiej printf, więc może nowe linie nie działają w PHP. 39 00:02:36,000 --> 00:02:38,000 Nie całkiem. 40 00:02:38,000 --> 00:02:41,000 Pamiętaj, że HTML jest zazwyczaj używany do tworzenia stron internetowych 41 00:02:41,000 --> 00:02:44,000 , które mogą być wyświetlane przez przeglądarki internetowe. 42 00:02:44,000 --> 00:02:49,000 Nie tylko jest ciąg komentarzy z php nie ważnego HTML, 43 00:02:49,000 --> 00:02:53,000 ale przypominam, że nie możemy używać \ n znak w formacie HTML 44 00:02:53,000 --> 00:02:55,000 do stworzenia nowej linii. 45 00:02:55,000 --> 00:03:01,000 Zamiast po prostu wyprowadzania ciąg niech wyjściową prawidłową HTML. 46 00:03:01,000 --> 00:03:04,000 Przy użyciu tagów akapitu Każdy z naszych rozmów printf 47 00:03:04,000 --> 00:03:07,000 zostanie wyświetlona w oddzielnym wierszu, 48 00:03:07,000 --> 00:03:11,000 więc teraz, gdy odwiedzamy URL do valid.php wskazujący 49 00:03:11,000 --> 00:03:17,000 http://localhost/valid.php 50 00:03:17,000 --> 00:03:19,000 widzimy wyjścia, że ​​szukamy. 51 00:03:19,000 --> 00:03:22,000 >> Teraz, jeśli patrzymy na źródło tej strony 52 00:03:22,000 --> 00:03:25,000 widzimy, że jesteśmy teraz patrząc na ważnej HTML, 53 00:03:25,000 --> 00:03:28,000 które stworzyliśmy z PHP. 54 00:03:28,000 --> 00:03:31,000 Umieszczenie wszystkich naszych połączeń printf HTML wewnątrz 55 00:03:31,000 --> 00:03:34,000 jest oczywiście dzieje się naprawdę irytujące. 56 00:03:34,000 --> 00:03:38,000 Na szczęście możemy łatwo mieszać HTML i PHP 57 00:03:38,000 --> 00:03:41,000 w jednym pliku PHP.. 58 00:03:41,000 --> 00:03:47,000 Pamiętaj, że wszystkie nasze kodu PHP muszą być zamknięte w php 00:03:49,000 i>. 60 00:03:49,000 --> 00:03:52,000 Wszystko, co nie jest ujęty w tych ograniczników 61 00:03:52,000 --> 00:03:55,000 po prostu przesyłane jako dane wyjściowe do przeglądarki 62 00:03:55,000 --> 00:03:57,000 zamiast być stracony. 63 00:03:57,000 --> 00:04:01,000 Oznacza to, że możemy zrobić coś takiego. 64 00:04:01,000 --> 00:04:05,000 Możemy po prostu napisać HTML wewnątrz naszego pliku PHP. 65 00:04:05,000 --> 00:04:11,000 a następnie wstawić bloków PHP, gdzie chcielibyśmy jakiś kod php do wykonania. 66 00:04:11,000 --> 00:04:15,000 Tutaj możemy zdefiniować kilka zmiennych na początku pliku, 67 00:04:15,000 --> 00:04:19,000 i później je wydrukować wewnątrz naszej HTML. 68 00:04:19,000 --> 00:04:27,000 Teraz jeśli odwiedzić ten adres URL, http://localhost/mixed.php 69 00:04:27,000 --> 00:04:33,000 widzimy naszą oceniana PHP wewnątrz naszej HTML. 70 00:04:33,000 --> 00:04:36,000 >> Teraz rzućmy okiem na to, jak możemy przekazać dane 71 00:04:36,000 --> 00:04:39,000 wśród naszych różnych stron PHP. 72 00:04:39,000 --> 00:04:51,000 Zamiast mówić 73 00:04:51,000 --> 00:04:58,000 możemy po prostu powiedzieć: 00:05:01,000 i>. 75 00:05:01,000 --> 00:05:03,000 Załóżmy teraz przyjrzeć się w jaki sposób możemy przekazać dane 76 00:05:03,000 --> 00:05:06,000 wśród naszych różnych stron PHP. 77 00:05:06,000 --> 00:05:11,000 Jednym ze sposobów można to zrobić jest do kodowania informacji w adresie URL strony. 78 00:05:11,000 --> 00:05:14,000 Podczas przeglądania sieci Web, można zauważyć, że niektóre adresy URL 79 00:05:14,000 --> 00:05:20,000 zawierać? następuje ciąg zawierający znaków handlowego i znaki równości. 80 00:05:20,000 --> 00:05:23,000 Ta część adresu URL jest znana jako łańcuch zapytania, 81 00:05:23,000 --> 00:05:29,000 a to pozwala skutecznie przekazywać argumenty do skryptu PHP. 82 00:05:29,000 --> 00:05:34,000 Łańcuch zapytania składa się z par wartości kluczowych, podobnie jak tabeli mieszania. 83 00:05:34,000 --> 00:05:38,000 Znak równości rozdziela klucza i odpowiadającą jej wartością 84 00:05:38,000 --> 00:05:41,000 , podczas gdy znaki ampersand oddzielić par. 85 00:05:41,000 --> 00:06:05,000 Adres URL, który wygląda jak http://localhost/get.php?foo=bar&baz=qux 86 00:06:05,000 --> 00:06:09,000 ma 2 pary wartość klucza w ciągu kwerendy. 87 00:06:09,000 --> 00:06:12,000 Klucz bla mapy do paska wartości, 88 00:06:12,000 --> 00:06:16,000 i klucz baz mapy do wartości qux. 89 00:06:16,000 --> 00:06:23,000 Możemy łatwo uzyskać dostęp do tych par wartości klucza za pomocą specjalnej zmiennej w PHP, 90 00:06:23,000 --> 00:06:29,000 $ _GET. 91 00:06:29,000 --> 00:06:32,000 $ _GET Jest asocjacyjna 92 00:06:32,000 --> 00:06:36,000 który jest automatycznie wypełniane danymi ciągu zapytania. 93 00:06:36,000 --> 00:06:46,000 Oznacza to, że biorąc pod uwagę ten URL $ _GET ["foo"] 94 00:06:46,000 --> 00:06:49,000 wyniesie paska ciągu. 95 00:06:49,000 --> 00:06:56,000 >> Rzućmy okiem na get.php zobaczyć $ _GET w akcji. 96 00:06:56,000 --> 00:07:00,000 Używamy funkcji o nazwie var_dump, 97 00:07:00,000 --> 00:07:03,000 który podawany jest tablicą lub inną zmienną 98 00:07:03,000 --> 00:07:05,000 wydrukuje dla nas. 99 00:07:05,000 --> 00:07:12,000 Teraz, jeśli po prostu przejść http://localhost/get.php 100 00:07:12,000 --> 00:07:17,000 potem zobaczymy pustą tablicę, ponieważ nie dostarczono łańcucha zapytania. 101 00:07:17,000 --> 00:07:29,000 Jeśli robimy zapewnić ciąg kwerendy poprzez http://localhost/get.php?foo=bar&baz=qux 102 00:07:29,000 --> 00:07:34,000 to możemy zobaczyć, że zmienna $ _GET będzie zawierać 103 00:07:34,000 --> 00:07:37,000 pary wartość klucza ciąg kwerendy. 104 00:07:37,000 --> 00:07:42,000 Ale co, jeśli nie chcemy, aby nasz dane wewnątrz adresu URL strony? 105 00:07:42,000 --> 00:07:46,000 W przypadku dużych ilości danych, co może doprowadzić w niektórych dość brzydkich URL 106 00:07:46,000 --> 00:07:49,000 które idą do naszej strony internetowej, błyszczący wygląd chromych. 107 00:07:49,000 --> 00:07:52,000 Możemy zamiast umieścić ciąg kwerendy do ciała 108 00:07:52,000 --> 00:07:57,000 z żądań HTTP, a nie URL wniosek za. 109 00:07:57,000 --> 00:08:02,000 Wtedy możemy użyć zmiennej $ _POST w PHP 110 00:08:02,000 --> 00:08:05,000 aby uzyskać dostęp do par wartości klucza. 111 00:08:05,000 --> 00:08:10,000 Jednym ze sposobów na to jest za pomocą formularza HTML. 112 00:08:10,000 --> 00:08:13,000 Tu mamy prosty formularz HTML. 113 00:08:13,000 --> 00:08:17,000 Zauważyć tutaj, że atrybut metody tej formie jest po. 114 00:08:17,000 --> 00:08:21,000 Ten mówi przeglądarce, aby umieścić par wartości kluczowych postaci w 115 00:08:21,000 --> 00:08:25,000 do treści żądania zamiast URL. 116 00:08:25,000 --> 00:08:28,000 >> Gdybyśmy mieli wykorzystywać wartość dla tego atrybutu dostać 117 00:08:28,000 --> 00:08:32,000 następnie pary wartości kluczowych postaci byłby zamiast iść w ciągu kwerendy, 118 00:08:32,000 --> 00:08:36,000 więc mogliśmy do nich dostęp poprzez $ _GET ponownie. 119 00:08:36,000 --> 00:08:42,000 Atrybut action formularza informuje przeglądarkę, aby wysłać dane. 120 00:08:42,000 --> 00:08:46,000 Oto nasze elementy wejściowe 2 mają atrybuty nazw. 121 00:08:46,000 --> 00:08:51,000 Wartości atrybutów nazwa będzie służyć jako klucze do naszych danych, 122 00:08:51,000 --> 00:08:56,000 i wartości wejść tekstowych stanie się wartości tych kluczy. 123 00:08:56,000 --> 00:08:59,000 Teraz rzućmy okiem na post.php, 124 00:08:59,000 --> 00:09:03,000 Plik, że ta forma jest przedłożenie. 125 00:09:03,000 --> 00:09:10,000 Tak jak przedtem, jesteśmy po prostu wyświetla zawartość zmiennej $ _POST. 126 00:09:10,000 --> 00:09:18,000 >> Miejmy przejść do formularza z http://localhost/form.php. 127 00:09:18,000 --> 00:09:23,000 Teraz, kiedy mamy wysłać formularz widzimy, że dane z form.php 128 00:09:23,000 --> 00:09:30,000 jest przekazywana do Post.php bez dołączania ciąg kwerendy do adresu URL. 129 00:09:30,000 --> 00:09:35,000 Teraz widzieliśmy 2 różne sposoby przekazywania danych między stronami PHP, 130 00:09:35,000 --> 00:09:37,000 GET i POST. 131 00:09:37,000 --> 00:09:41,000 W naszych przykładach użyliśmy 2 różnych typów żądań HTTP. 132 00:09:41,000 --> 00:09:45,000 Jak można się spodziewać, żądanie GET, gdy użyto wypełniane 133 00:09:45,000 --> 00:09:51,000 $ _GET Z zawartości, a wniosek został użyty po 134 00:09:51,000 --> 00:09:55,000 kiedy zaludnionych $ _POST. 135 00:09:55,000 --> 00:09:59,000 W projektowaniu aplikacji internetowych to dobra zasada, aby korzystać z żądań GET 136 00:09:59,000 --> 00:10:03,000 gdy aplikacja będzie tylko do odczytu danych i żądania POST 137 00:10:03,000 --> 00:10:05,000 gdy aplikacja będzie zapisywać dane. 138 00:10:05,000 --> 00:10:09,000 Na przykład, zapytanie wyszukiwarka odczyta dane z Twojej aplikacji, 139 00:10:09,000 --> 00:10:12,000 więc żądanie GET sens. 140 00:10:12,000 --> 00:10:17,000 Z drugiej strony, Twoja aplikacja będzie zapisywać dane za pomocą czegoś w formularzu rejestracyjnym, 141 00:10:17,000 --> 00:10:22,000 więc wniosek po to więcej sensu, i to jest przegląd niektórych technik 142 00:10:22,000 --> 00:10:26,000 będziemy używać w CS50 do tworzenia stron internetowych za pomocą PHP. 143 00:10:26,000 --> 00:10:30,000 >> Nazywam się Tommy, i to jest CS50. 144 00:10:30,000 --> 00:10:36,000 [CS50.TV]