Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Technologie internetowe II Wykład 3 – Formularze, poczta, pliki Dr Krzysztof Heller.

Podobne prezentacje


Prezentacja na temat: "Technologie internetowe II Wykład 3 – Formularze, poczta, pliki Dr Krzysztof Heller."— Zapis prezentacji:

1 Technologie internetowe II Wykład 3 – Formularze, poczta, pliki Dr Krzysztof Heller

2 Technologie internetowe II2 Literatura Meloni J.C.: PHP, MySQL i Apache dla każdego. Wydanie III, Helion, 2007 Lis M.: PHP i MySQL dla każdego, Helion, 2005 Leszek 'leon' Krupiński: Wykłady internetowe, et_II_wyklad3.ppthttp://docs.wsei.pl/dydaktyka/Techn_Intern et_II_wyklad3.ppt

3 Technologie internetowe II3 Plan wykładu 3 Formularze. Tworzenie formularza, łączenie kodu HTML i PHP, zapisywanie stanu, przekierowania. Wysyłanie poczty elektronicznej, przesyłanie plików.

4 Pobieranie danych

5 Technologie internetowe II5 Pobieranie danych Jedyna metoda - pobranie ze standardowego formularza HTML. W PHP wszystkie dane z formularza trafiają do odpowiednich tablic asocjacyjnych o nazwach kluczy takich, jak nazwy pól formularza. Jeśli w konfiguracji PHP opcja register_globals jest włączona to stworzone zostaną od razu zmienne o nazwach takich jak nazwy pól formularza. Są dwie metody przekazywania parametrów do innych stron: –metoda "GET" –metoda "POST"

6 Technologie internetowe II6 Metoda GET Używana gdy jest niewiele parametrów. Parametry przekazuje się za pomocą adresu URL którego długość jest ograniczona. Parametry są widoczne w pasku adresu przeglądarki. Adres od parametrów oddzielany jest za pomocą znaku zapytania, a kolejne pary parametr=wartość za pomocą znaku ampersand ("&"). Dane przesłane metodą GET trafiają do tablicy $_GET.

7 Technologie internetowe II7 Metoda POST Do przekazywania parametrów wykorzystuje nagłówek zapytania. Metoda ta umożliwia przekazywanie dużo większych parametrów. Parametrów nie widać w pasku przeglądarki. Dane przesłane metodą POST trafiają do tablicy do tablicy $_POST. Tablice $_GET i $_POST są superglobalne. Istnieje jeszcze superglobalna tablica $_REQUEST, która łączy w sobie tablice $_GET, $_POST, $_COOKIE i $_FILES.

8 Technologie internetowe II8 Przykład – raz.php Test formularza Imię: Nazwisko: Proszę o fakturę do zamówienia: Chcę zamówić: Coca-colę Fantę Sprite'a

9 Technologie internetowe II9 dwa.php Wyniki Imię: Nazwisko: Faktura: Zamówienie:

10 Formularze

11 Technologie internetowe II11 Prosty formularz Prosty formularz HTML Imię i nazwisko: Wiadomość: Pole tekstowe uzytkownik Pole tekstowe wiadomosc Przycisk wysyłający formularz Metoda wysyłania formularza: POST, zmienna $_POST

12 Technologie internetowe II12 wyslij_prostyform.php Metoda wysyłania formularza: POST, zmienna $_POST

13 Technologie internetowe II13 Wynik

14 Technologie internetowe II14 Działanie Skrypt zostanie wywołany gdy użytkownik wyśle formularz Zmienne: $_POST["uzytkownik"] oraz $_POST["wiadomosc"] zawierają wartość wpisaną przez użytkownika Formularze można także wysłać przy pomocy metody GET POST potrafi obsłużyć większe ilości danych POST nie wyświetla przesyłanych informacji w pasku adresu przeglądarki Metoda GET używa tablicy $_GET

15 Przekazywanie informacji w tablicach

16 Technologie internetowe II16 Przekazywanie informacji Pobieranie informacji z pól formularza posiadających tylko jedną wartość (pola tekstowe, obszary tekstu, przełączniki) jest proste. Są pola (np. SELECT) mogące przyjmować wiele wartości. Składnia – nawiasy kwadratowe na końcu nazwy.

17 Technologie internetowe II17 Formularz zawierający SELECT Formularz HTML zawieraj±cy element SELECT Imię i nazwisko: Wybierz produkty: ¦rubokręt Tricoder ORAC AI HAL 2000 Elementy wybrane tutaj są dostępne w tablicy $_POST[produkty] Argument multiple – uzytkownik może wybrać dowolną liczbę opcji

18 Technologie internetowe II18 wyslij_selectform.php Odwołanie do wartości zmiennej $_POST Jeżeli zmienna $_POST nie jest pusta Przechodzimy przez nią wyświetlając każdy element. W tablicy są wartości atrybutu value elementów OPTION, odpowiadające zaznaczonym opcjom.

19 Technologie internetowe II19 Wynik

20 Technologie internetowe II20 Działanie Technika szczególnie wygodna dla pól typu SELECT Można używać także dla innych elementów Gdy nazwa pola kończy się nawiasem kwadratowym silnik PHP łączy wszystkie wartości o tej samej nazwie w jedną tablicę Przykład: Śrubokręt Tricorder ORAC AI HAL 2000 Wybrane wartości będą dostępne w tablicy $_POST[produkty]

21 Łączenie kodu HTML i PHP

22 Technologie internetowe II22 Łączenie kodu PHP i HTML Czasem jest wygodniej mieć dwa rodzaje kodu w jednym pliku – łatwiej jest wyświetlić ten sam formularz ponownie. Można wyświetlić cały formularz z kodu PHP (funkcja echo). Łatwiej jest umieścić kod HTML w skrypcie PHP.

23 Technologie internetowe II23 Zgadywanie liczby $liczba_do_odgadniecia) { $komunikat = "Liczba $_POST[liczba] jest zbyt duża, spróbuj mniejszej."; } else if ($_POST['liczba'] < $liczba_do_odgadniecia) { $komunikat = "Liczba $_POST[liczba] jest zbyt mała, spróbuj większej."; } else { // poprawna odpowiedź $komunikat = "Gratulacje!"; } ?> Ustawiamy wartość liczby do odgadnięcia Jeżeli formularz nie był wysłany to zaczynamy, inaczej kontynuacja

24 Technologie internetowe II24 Zgadywanie liczby (c.d.) Skrypt zgadujący " method="POST"> Wybierz liczbę: Ścieżka do aktualnie wykonywanego skryptu

25 Ukryte pole – informacja o stanie

26 Technologie internetowe II26 Zapisywanie informacji o stanie Poprzedni kod nie pozwala stwierdzić, ile razy próbowano zgadnąć liczbę. Można zastosować pole ukryte. Działa jak pole tekstowe, ale jest niewidoczne dla użytkownika. Poprawiamy skrypt zgadujący.

27 Technologie internetowe II27 Zgadywanie liczby 2 $liczba_do_odgadniecia) { $komunikat = "Liczba $_POST[liczba] jest zbyt duża, spróbuj mniejszej."; } else if ($_POST['liczba'] < $liczba_do_odgadniecia) { $komunikat = "Liczba $_POST[liczba] jest zbyt mała, spróbuj większej."; } else { // poprawna odpowiedź $komunikat = "Gratulacje!";} $liczba = $_POST['liczba'];?> Zachowywanie stanu w ukrytym polu Numer próby: " method="POST"> Wybierz liczbę: "> Ukryte pole w tym wierszu

28 Technologie internetowe II28 Mechanizm sesji Mechanizm sesji umożliwia przekazywanie parametrów między stronami w łatwy sposób. Zmienne są przechowywane po stronie serwera a u klienta trzymane jest tylko ID sesji. ID jest zapisane w cookie lub przekazywane przez URL. PHP umie rozpoznać czy na komputerze klienta włączony jest mechanizm cookies i w razie potrzeby dodać identyfikator sesji do każdego URLu i formularza (opcja -- enable-trans-sid). Przed rozpoczęciem sesji do przeglądarki nie mogą być wysłane żadne inne dane. Po otrzymaniu żądania klienta PHP automatycznie (jeśli w konfiguracji PHP włączona została opcja auto_start) lub "ręcznie" przez programistę (za pomocą funkcji session_start()) sprawdza, czy przypisano już ID sesji. J –Tak - PHP odczytuje zmienne zarejestrowane w tej sesji. –Nie - generowany jest nowy, unikalny identyfikator sesji. Aby PHP zaczęło śledzić wartość zmiennej, najpierw trzeba ją zarejestrować za pomocą funkcji session_register(nazwa_zmiennej). Istnieje też odwrotna wersja tej funkcji. Zmienna $_SESSION, przechowuje zmienne zarejestrowane w sesji. Kluczem tej tablicy jest nazwa zarejestrowanej zmiennej. Tablicę można użyć do rejestrowania zmiennych sesyjnych. Wystarczy przypisać wartość odpowiedniemu kluczowi tej tablicy aby zmienna została zarejestrowana.

29 Technologie internetowe II29 Przykład zliczanie ile razy dana osoba odczytała daną stronę z czasie jednej sesji.

30 Przekierowania

31 Technologie internetowe II31 Przekierowania Problem skryptu – zgadywanki: po odgadnięciu liczby nadal wyświetla formularz. Kod HTML statycznie zapisany w skrypcie. Można dokonać przekierowania. Serwer komunikując się z klientem najpierw wysyła nagłówki, można dodać swoje dzięki funkcji header (). Dowolny znak poza blokiem PHP powoduje wysyłanie nagłówka!!!

32 Technologie internetowe II32 Zgadywanie liczby 2 $liczba_do_odgadniecia) { $komunikat = "Liczba $_POST[liczba] jest zbyt duża, spróbuj mniejszej."; } else if ($_POST['liczba'] < $liczba_do_odgadniecia) { $komunikat = "Liczba $_POST[liczba] jest zbyt mała, spróbuj większej."; } else { // poprawna odpowiedź header(location: gratulacje.html); exit; $liczba = $_POST['liczba'];?> Zachowywanie stanu w ukrytym polu Numer próby: " method="POST"> Wybierz liczbę: "> Ukryte pole w tym wierszu Tutaj jest przekierowanie

33 Wysyłanie poczty

34 Technologie internetowe II34 Konfiguracja systemu Dane pobrane w formularzu można też wysłać pocztą elektroniczną. Przed użyciem funkcji mail() należy skonfigurować system. Plik php.ini: –funkcja mail() musi mieć dostęp do serwera poczty wychodzącej –należy też podać adres zapisywany w polu From: Serwer WWW musi być ponownie uruchomiony.

35 Technologie internetowe II35 Formularz kontaktowy Formularz kontaktowy Imię i nazwisko: Adres Wiadomość:

36 Technologie internetowe II36 Wynik

37 Technologie internetowe II37 Formularz kontaktowy - PHP Wysyłanie formularza kontaktowego Tutaj budujemy treść wiadomości Tworzenie odbiorcy, tematu i nagłówka Jeżeli używamy serwera Windows to ma być \r\n

38 Technologie internetowe II38 Formularz kontaktowy - HTML Wysyłanie formularza kontaktowego - wersja HTML Formatowanie za pomocą znaczników HTML Nadanie wartości nagłówkom MIME

39 Przesyłanie plików

40 Technologie internetowe II40 Obsługa plików Przekazanie pliku na serwer - n.p. dodanie zdjęcia do galerii. Robi się to przy pomocy pola typu "file" w formularzu i odpowiednich zmiennych w skrypcie odbierającym dane. Plik przesyła się korzystając z pola formularza typu "file". Formularz musi być wysyłany metodą POST. Formularz musi zawierać atrybut ENCTYPE=multipart/form-data.

41 Technologie internetowe II41 Plik1.php

42 Technologie internetowe II42 Upload plików Na stronie do której został wysłany formularz dostępna będzie wielowymiarowa tablica asocjacyjna $_FILES. Pierwszym wymiarem są pola typu file z formularza (klucze są nazwami tych pól), a w drugim informacje o przesłanym pliku. Informacje te to: tmp_name - nazwa tego pliku na serwerze wraz ze ścieżką; używając tego pola można uzyskać dostęp do przesłanego pliku name - nazwa pliku jaką posiadał u użytkownika type - typ MIME pliku, np. text/plain lub image/gif; informacja ta jest dostępna tylko jeśli przeglądarka klienta dostarczyła takiej informacji. size - wielkość pliku w bajtach

43 Technologie internetowe II43 Przesłanie pliku Prosty formularz, pozwalający na przesłanie pliku Plik do wysłania: Max rozmiar pliku Nazwa pola

44 Technologie internetowe II44 Zabezpieczenia Przesyłanie plików na serwer jest sprawą dosyć niebezpieczną, dlatego należy odpowiednio się zabezpieczyć. Funkcja is_uploaded_file() - sprawdza czy podany plik faktycznie został odebrany od użytkownika - sprawdzenie takie jest istotne, gdyż w przypadku źle napisanego skryptu "włamywacz" będzie mógł odczytać z serwera dowolny plik, do którego prawo odczytu posiada użytkownik jako który pracuje serwer WWW. Jeśli wszystkie próby przebiegną pomyślnie, plik jest przenoszony w docelowe miejsce przy pomocy funkcji move_uploaded_file(). Jjeśli plik o takiej samej nazwie już istnieje, zostanie nadpisany, dlatego też należy najpierw to sprawdzić przy pomocy funkcji file_exists(). Kolejnym niebezpieczeństwem jest możliwość wstawienia na serwer skryptu PHP zawierającego "niebezpieczne instrukcje". Można się przeciw temu zabezpieczyć sprawdzając rozszerzenie lub typ przesyłanego pliku. Jeśli typ pliku jest inny od oczekiwanego, plik można albo usunąć albo zmienić mu rozszerzenie. Docelowy katalog musi mieć odpowiednie prawa dostępu. Użytkownik, jako który pracuje serwer WWW musi mieć prawo zapisu do tego katalogu.

45 Technologie internetowe II45 Odbiór pliku $max_rozmiar) { echo 'Błąd! Plik jest za duży!'; } else { echo 'Odebrano plik. Początkowa nazwa: '.$_FILES['plik']['name']; echo ' '; if (isset($_FILES['plik']['type'])) { echo 'Typ: '.$_FILES['plik']['type'].' '; } move_uploaded_file($_FILES['plik']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']); } else { echo 'Błąd przy przesyłaniu danych!'; } ?>

46 Technologie internetowe II46 Obsługa przesłanego pliku $plik_tablica) { echo Ścieżka: ".$plik_tablica['tmp_name']." \n"; echo "nazwa: ".$plik_tablica['name']." \n"; echo "typ: ".$plik_tablica['type']." \n"; echo "rozmiar: ".$plik_tablica['size']." \n"; if (is_uploaded_file($plik_tablica['tmp_name'])) { move_uploaded_file($plik_tablica['tmp_name'], "$plik_katalog/$plik_tablica[name]") or die ("Nie można przenieść pliku"); echo "Plik został przeniesiony! "; } ?>

47 Technologie internetowe II47 Cookies Mechanizm cookies (ciasteczka) do przechowywania niewielkich ilości danych na komputerze oglądającego stronę (np. informacje o imieniu i nazwisku lub nazwie użytkownika w tym serwisie) Ciasteczka ustawione przez dany serwis dostępne są tylko dla niego i ustawiane są na jakiś czas. Ciasteczka przekazywane są za pomocą nagłówków HTTP. Muszą być one wysłane zanim do przeglądarki zostanie wysłana jakakolwiek inna treść. Przed zapisaniem ciasteczka nie może być żadnego wywołania funkcji echo i pochodnych, a także tag otwierający tryb PHP musi być pierwszymi znakiami w pliku - nie może być żadnej spacji ani pustych wierszy. PHP automatycznie odczytuje ciasteczka i zamienia je na zmienne. Są one przechowywane w superglobalnej tablicy asocjacyjnej $_COOKIE, w której kluczami są nazwy ciasteczek. Standardowo nie ma możliwości przechowywania tablic w ciasteczkach, lecz można to obejść. Przed zapisaniem tablicy w ciasteczku należy użyć funkcji serialize(). Zamienia ona tablicę na ciąg znaków. Do ponownego odczytania takiej tablicy służy funkcja unserialize().

48 Technologie internetowe II48 Cookies Ciasteczka ustawia się je pomocą funkcji setcookie ( nazwa, wartość, czas_wygaśnięcia, ścieżka, domena, bezpieczeństwo). Tylko pierwszy parametr jest niezbędny. Oznacza on nazwę ciasteczka - taką nazwą będzie miała zmienna stworzona przez PHP po ponownym odczytaniu ciastek. Parametr "wartość" - taka wartość będzie przechowana w ciasteczku o podanej nazwie. Parametr czas_wygaśnięcia oznacza czas, po jakim ciastko zostanie skasowane. Czas ten należy podać jako ilość sekund od Aktualny czas w tym formacie zwracany jest przez funkcję time(). Przykłady: –godzina - time()+3600 –dzień - time() –miesiąc - time()+30*86400 Jeśli czas będzie wcześniejszy niż aktualny czas, ciasteczko zostanie skasowane. Jeśli będzie równy zero - ciasteczko będzie ważne tylko do zamknięcia przeglądarki. Dwa następne parametry używane są do wskazania adresu, dla którego dostępne będą cookiesy. Jeśli ostatni parametr jest ustawiony na 1, to cookie będzie przesłany za pomocą szyfrowanego połączenia HTTPS.

49 Technologie internetowe II49 'pierwszy', 'b' => 'drugi'); setcookie('tablica', serialize($tablica), time()+3600); // odczyt zabezpieczony przed nieistniejącym ciasteczkiem if (isset($_COOKIE['tablica'])) { $tablica = unserialize($_COOKIE['tablica']); } else { $tablica = Array(); } ?>

50 Technologie internetowe II50 register_globals Można ustawićw pliku konfiguracyjnym php.ini dyrektywę register_globals. Odpowiedzialna za rejestrowanie danych otrzymanych z formularzy, ciastek, sesji czy serwera jako zmienne globalne. Jeśli dyrektywa register_globals została ustawiona na on to wszystkie zmienne przekazane do skryptu dostępne są w postaci $nazwa_zmiennej, bez potrzeby stosowania żadnych tablic. Powoduje to pewne niebezpieczeństwo. Używając zmiennych globalnych nie można stwierdzić, czy dana wartość pochodzi z sesji czy została podana w URLu metodą GET – możliwość obchodzenia zabezpieczeń. Zalecane jest używanie odpowiednich tablic. Począwszy od wersji 4.2.0, dyrektywa register_globals jest domyślnie wyłączona. Tak więc pisząc skrypt dla nieznanego serwera trzeba się liczyć z ewentualnością braku dostępu do zmiennych globalnych.


Pobierz ppt "Technologie internetowe II Wykład 3 – Formularze, poczta, pliki Dr Krzysztof Heller."

Podobne prezentacje


Reklamy Google