SPIS TREŚCI 1.Dwie metody przekazu danych do serwera 2 2.Metoda GET przykład 3 3.Metoda POST przykład 4 4.Kiedy GET a kiedy POST 5 5.Szablony po co je stosować 7 6.Realizacja szablonu własną funkcją 8 7.Realizacja funkcjami z biblioteki ETS 9 8.Zastosowanie ETS do wypełniania tabeli 10 19.04.2007 Janusz Lepionko slajd 1 z 10
Dwie metody przekazu danych do serwera Istnieje więcej metod komunikacji z serwerem GET HEAD PUT POST DELETE OPTIONS TRACE zwraca się do serwera o określony zasób działa tak jak GET, ale zwraca tylko sam nagłówek bez treści dokumentu zwraca się do serwera o zmodyfikowanie informacji na serwerze zwraca się do serwera o zmodyfikowanie informacji na serwerze zwraca się do serwera o usuniecie zasobu zwraca się o listę metod żądań, które dostępne są w wypadku danego zasobu zwraca się do serwera o odsyłanie nagłówków żądań po ich otrzymaniu (szczegóły można przeczytać np. w RFC2616) Dlaczego zajmujemy się tylko GET i POST? 19.04.2007 Janusz Lepionko slajd 2 z 10
Metoda GET przykład Metoda get po zatwierdzeniu formularza pobrane są z niego pary nazwawartość, kodowane, dołączone do adresu podanego w atrybucie ACTION ("?" jako separator) i wysłane do pośrednika procesu (domyślnie). Gdy na stronie google.pl wpiszę, że szukam wyrażenia "HTTP OPTIONS method", to kod strony zawiera wtedy <form method=get action=/search> <input type=text name=q size=31 maxlength=2048 value=""http OPTIONS method"" title="szukaj"> <input type=submit name=btng value="szukaj"> <input type=hidden name=hl value="pl"> </form> Po kliknięciu przycisku Szukaj informacja zwrotna z serwisu Google ma w adresie http://www.google.pl/search?hl=pl&q=rfc+2616&btng=szukaj&lr= W istocie do serwera Google poszło żądanie: GET /search?q=%22http+post+method%22&hl=pl&lr=&start=10&sa=n HTTP/1.1 HOST: www.google.pl Podsumowując: otrzymaliśmy konkretny dokument, do którego mamy link. 19.04.2007 Janusz Lepionko slajd 3 z 10
Metoda POST przykład Metoda post - po zatwierdzeniu formularza, dane zostają włączone do ciała formularza i wysłane do pośrednika procesu. Weźmy stronę, która zawiera kod <form method= post" action="login.php" > <input type="text" name="user" value="webmaster" /><br /> <input type="password" name="password" value="niemadry" /><br /> <input type="submit" /><br /> </form> Do serwera wtedy pójdzie coś w stylu: POST /login.php HTTP/1.1 HOST: www.example.com Content-Type: application/x-www-form-urlencoded user=webmaster&password=niemadry&submit=submit 19.04.2007 Janusz Lepionko slajd 4 z 10
Kiedy GET a kiedy POST, albo wady i zalety Są ludzie, którzy nie rozumieją istoty różnicy między metodami GET i POST, skutkiem czego bądź używają ich zamiennie, bądź wybierają metodę na podstawie np. takich kryteriów: Metoda GET: potrzebuje mniej kodu HTML często nie potrzebuje formularzy, czy np. skryptów po stronie serwera (*!*) linki są śledzone przez boty Metoda POST: ukrywa dane (*!*) pozwala przesłać więcej danych niż metoda GET (w końcu GET to tylko modyfikacja linka) pozwala na przesłanie pliku / modyfikację danych na serwerze (*!*) oznacza, że dane stwierdzenie to nie do końca jest prawda 19.04.2007 Janusz Lepionko slajd 5 z 10
Zatem kiedy GET a kiedy POST? RFC2616 określa to następująco Metoda GET nie powinna służyć do innych celów, jak otrzymanie informacji zwrotnej żądanego dokumentu powinna być safe for cache, nie być żądaniem zmiany zawartości serwera. Oznacza to, że link powinien identyfikować jednoznacznie na serwerze zasób o względnie stałej zawartości, który to zasób przeglądarka może umieścić w cache. Przykłady użycia to strony z filmami, z muzyką. Metoda POST służy przesłaniu żądania zmiany zawartości serwera (jego zasobów), może więc przy każdym kolejnym jej wysłaniu powodować inne skutki i w efekcie otrzymywać możemy różne odpowiedzi. Przykłady użycia to zapis danych do bazy danych, wysyłanie e-maili, logowanie. 19.04.2007 Janusz Lepionko slajd 6 z 10
Szablony po co je stosować Że zapytam przewrotnie: a po co stosować CSS, skoro HTML tak dobrze służył? CSS jest po to, aby można było zmieniać wygląd bez zmiany treści strony. Analogicznie, szablony są po to, aby można było zmieniać sposób przetwarzania danych bez zmiany struktury logicznej strony HTML. W PHP szablony często realizuje się za pomocą podstawień przy użyciu wyrażeń regularnych. 19.04.2007 Janusz Lepionko slajd 7 z 10
Realizacja szablonu własną funkcją szablon.php <?php /* Prosty program "templates" */ $page[tytul] = " Opis dzialania szablonow " ; $page[name] = " A. Dydejczyk " ; /* Wpisanie szablonu do pamieci */ $template = file_get ('szablon.html') ; /* Podmiana zmiennych w pliku szablonow */ $merged_page=template_merge ($page, $template); /* Wydruk koncowych wynikow */ echo $merged_page ; /* Funkcja wczytujaca szablon z pliku */ function file_get ( $path ){ return implode ( '', file($path) ) ; } /* Funkcja podmieniajaca zawartosc zmiennych w szablonie */ function template_merge ( $page, $template ){ return preg_replace ( '/{([^}]+)}/e', '$page["\\1"]', $template ) ; }?> szablon.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" /> <title>przyklad wykorzystania szablonow - 1</title> <link rel="stylesheet" type="text/css" href="szablony.css" /> </head> <body> <div class="ramka"> <p class="tytul" >REFERAT</p> <p> <span class="bold" >Tytuł:</span>{tytul}</p> <p> <span class="bold" >Prelegent:</span>{name}</p> <br /> </div> </body> </html> Jak widać jest to podmiana przy użyciu wyrażeń regularnych. 19.04.2007 Janusz Lepionko slajd 8 z 10
Realizacja funkcjami z biblioteki ETS <?php szablon.php /* Prosty program "templates" */ /* Przylaczenie biblioteki szablonow */ include 'ets.php'; /* Wprowadzenie danych */ $page->tytul = " Biblioteka szablonow ETS " ; $page->name = " A. Dydejczyk " ; /* Przetworzenie szablonu i wypis strony*/ printt($page, 'szablon.html');?> szablon.html {mask:main} <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" /> <title>przyklad wykorzystania szablonow - 2</title> <link rel="stylesheet" type="text/css" href="szablony.css"/> </head> <body> <div class="ramka"> <p class="tytul" >REFERAT</p> <p> <span class="bold">tytuł:</span>{tytul}</p> <p> <span class="bold"> Prelegent:</span>{name}</p> <br /> </div> </body> </html> {/} Jak widać, w celu użycia nie musimy wiedzieć, jak biblioteka ETS jest zaimplementowana. Istotna jest tylko umiejętność posłużenia się zaimplementowanymi elementami. 19.04.2007 Janusz Lepionko slajd 9 z 10
Zastosowanie ETS do wypełniania tabeli szablon.php <?php /* utworzenie tablicy danych */ $zajecia[0][1] = "Poniedziałek" ; $zajecia[0][2] = "10.30-13.00" ; $zajecia[0][3] = "Podst. inf." ; $zajecia[1][1] = "Wtorek" ; $zajecia[1][2] = "8.30-10.00" ; $zajecia[1][3] = "Matematyka" ; $zajecia[2][1] = "Wtorek" ; $zajecia[2][2] = "13.30-15.00" ; $zajecia[2][3] = "Fizyka II" ; $zajecia[3][1] = "Czwartek" ; $zajecia[3][2] = "10.30-13.00" ; $zajecia[3][3] = "Matematyka" ; /* Przyłączenie biblioteki ETS */ include "ets.php" ; /* wypełnienie szablonu danymi z tablicy */ for ( $i=0; $i<4; $i++ ) for ( $ii=1; $ii<4; $ii++ ) { $page->row[$i]->cell[$ii]->data = $zajecia[$i][$ii] ; } /* Przetworzenie szablonu i wypis strony */ printt ( $page, 'szablon.html' ) ;?> szablon.html {mask:main} <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html> <head> <title>szablony - przykład 3</title> </head> <body> <div style="width:500px; " > <h1 style="text-align:center; color:navy; ">Rozkład zajęć</h1> <table style="width:400px ; margin-left:auto; marginright:auto; " border="1px" > <tr style="background-color:aqua;"> <td style="width:80px;">dzień</td> <td style="width:100;">godziny</td> <td style="width:220px;">opis</td> </tr> {mask:row} <tr> {mask:cell} <td>{data}</td> {/} </tr> {/} </table} </div> </body> </html> {/} DZIĘKUJĘ ZA UWAGĘ 19.04.2007 Janusz Lepionko slajd 10 z 10