Bazy Danych i Usługi Sieciowe



Podobne dokumenty
Bazy Danych i Usługi Sieciowe

Aplikacje WWW - laboratorium

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Wykład 03 JavaScript. Michał Drabik

FORMULARZE. G. Przęczek

Systemy internetowe Wykład 3 PHP

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Obiektowe bazy danych

Aplikacje WWW - laboratorium

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Umieszczanie kodu. kod skryptu

Krótki kurs JavaScript

Wykład 5: PHP: praca z bazą danych MySQL

Dlaczego PHP? - zalety

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Programowanie internetowe

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Podstawy JavaScript ćwiczenia

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Zaawansowane bazy danych i hurtownie danych

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Oczywiście plik musi mieć rozszerzenie *.php

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Michał Bielecki, KNI 'BIOS'

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

Aplikacje WWW - laboratorium

Aplikacje internetowe

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Autor: Joanna Karwowska

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Zajęcia 10 obsługa formularzy w PHP

SSK - Techniki Internetowe

Laboratorium 1 Wprowadzenie do PHP

Należy ściągnąć oprogramowanie Apache na platformę

Internetowe bazy danych

Cw.12 JAVAScript w dokumentach HTML

Bazy danych i strony WWW

ZMIENNE. Podstawy PHP

Rys.2.1. Drzewo modelu DOM [1]

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Format HTML. Wybrane działy Informatyki Stosowanej. Definicja i przeznaczenie Struktura dokumentu Znaczniki Formularze i komponenty

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Wprowadzenie do Internetu Zajęcia 5

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

Internetowe bazy danych

do drukowania tekstu służy funkcja echo <?php echo "hello world!";?> jeżeli użyjemy jej kilka razy: <?php

Kiedy i czy konieczne?

CZYM JEST JAVASCRIPT?

Programowanie internetowe

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

JAVAScript w dokumentach HTML (1)

6. Bezpieczeństwo przy współpracy z bazami danych

Formularze HTML. dr Radosław Matusik. radmat

Zajęcia 4 - Wprowadzenie do Javascript

Zdarzenia Zdarzenia onload i onunload

I.Wojnicki, PHP. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie

Personal Home Page PHP: Hypertext Preprocessor

Projektowani Systemów Inf.

I.Wojnicki, JiTW. PHP PHP Hypertext Preprocessor. Igor Wojnicki. Katedra Informatyki Stosowanej Akademia Górniczo-Hutnicza w Krakowie.

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Tworzenie stron internetowych z wykorzystaniem HTM5, JavaScript, CSS3 i jquery. Łukasz Bartczuk

WTYCZKA FARA-TCM Dane techniczne dla twórców zewnętrznych aplikacji do obsługi map cmentarza

Bazy Danych i Usługi Sieciowe

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

Aplikacje internetowe - laboratorium

Rys.2.1. Trzy warstwy stanowiące podstawę popularnego podejścia w zakresie budowy stron internetowych [2]

Projektowanie stron WWW

Modele danych walidacja widoki zorientowane na model

Właściwości i metody obiektu Comment Właściwości

JAVAScript w dokumentach HTML - przypomnienie

Programy CGI dla baz danych

Smarty PHP. Leksykon kieszonkowy

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Internetowe bazy danych

Języki programowania wysokiego poziomu. PHP cz.1.

Tworzenie Stron Internetowych. odcinek 10

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

JavaScript - wykład 4. Zdarzenia i formularze. Obsługa zdarzeń. Zdarzenia. Mysz. Logiczne. Klawiatura. Beata Pańczyk

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Bazy Danych i Usługi Sieciowe

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

Podstawy programowania III WYKŁAD 2

PHP: bloki kodu, tablice, obiekty i formularze

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Aplikacje WWW - laboratorium PHP + bazy danych

Funkcje i instrukcje języka JavaScript

Podstawy i języki programowania

XML extensible Markup Language. część 5

Aplikacje WWW - laboratorium

Transkrypt:

Bazy Danych i Usługi Sieciowe Język PHP Paweł Witkowski Wydział Matematyki, Informatyki i Mechaniki Jesień 2011 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 1 / 38

Plan wykładu 1 Język PHP 2 Składnia PHP 3 Dostęp do bazy danych 4 Przetwarzanie danych z formularzy P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 2 / 38

Język PHP 1 PHP: Hypertext Preprocessor 2 Język skryptowy interpretowany na serwerze www 3 Kod może być zanurzany w plikach HTML 4 Służy to tworzenia interaktywnych aplikacji internetowych 5 Skrypty PHP generują kod HTML wysyłany do klienta przez serwer P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 3 / 38

Przykład Witaj świecie - HTML + PHP <html> <head> <title>php: Witaj świecie</title> </head> <body> <p><?php echo "Witaj świecie!";?></p> </body> </html> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 4 / 38

Przykład c.d. Witaj świecie - wygenerowany HTML <html> <head> <title>php: Witaj świecie</title> </head> <body> <p>witaj świecie!</p> </body> </html> Widok w oknie przeglądarki Witaj świecie! P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 5 / 38

Jak działa PHP? 1 Serwer www dostaje żądanie zasobu zawierającego kod PHP 2 Przekazuje zasób do interpretera PHP, który wykonuje instrukcje zawarte w znacznikach <?php i?> 3 Interpreter PHP zastępuje fragmenty w znacznikach <?php i?> przez kod HTML wygenerowany przez skrypty 4 Serwer www dostaje wygenerowany kod HTML od interpretera PHP 5 Kod HTML jest wysyłany do klienta P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 6 / 38

Przetwarzanie dokumentu PHP 1 Znaczniki HTML poza fragmentami ograniczonymi <?php i?> są przepisywane bez zmian 2 Kod otoczony <?php i?> jest interpretowany, wykonywany i zastępowany przez wypisywany tekst Przetwarzanie dokumentu PHP <h1>tytuł</h2> <?php echo <h3>podtytuł</h3> ;?> <p>dalszy ciąg tekstu.</p> <p><?php echo Zakończenie ;?></p> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 7 / 38

Co można zrobić przy pomocy PHP? 1 Używać wielokrotnie fragmentów kodu w różnych plikach HTML 2 Przetwarzać dane z formularzy 3 Wyświetlać zawartość z bazy danych na serwerze 4 Wysyłać wiadomości e-mail 5 Generować obrazy 6 Wykonywać operacje na plikach P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 8 / 38

Instrukcje, zmienne, komentarze Koniec instrukcji - ; echo Witaj świecie ; Zmienne - $ echo $napis; Komentarze - // lub /*...*/ echo Witaj ; // Komentarz do końca linii /* Komentarz w kilku liniach */ P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 9 / 38

Instrukcja warunkowa if-else <?php if ($zmienna1 == $zmienna2 ) { echo <p>zmienne są równe</p> ; } else { echo <p>zmienne nie są równe</p> ; }?> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 10 / 38

Instrukcja warunkowa w kawałkach if-else <?php if ($zmienna1 == $zmienna2) {?> <p>zmienne są równe.</p> <?php } else {?> <p>zmienne nie są równe.</p> <?php }?> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 11 / 38

Typy danych 1 Cztery typy skalarne 1 boolean 2 integer 3 float 4 string 2 Dwa typy złożone 1 array 2 object 3 Dwa typy specjalne 1 resource 2 NULL P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 12 / 38

Typy danych - przykłady $logiczna = TRUE; $napis1 = Tekst ; $napis2 = Inny tekst ; $liczba1 = 12; $liczbanapis = 15 ; $wynik = $liczba1 + $liczbanapis; echo $wynik; // Zostanie wypisane 27 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 13 / 38

Wartości logiczne 1 Słowa kluczowe TRUE i FALSE 2 Wielkość liter nie ma znaczenia 3 Liczby i napisy mogą być rzutowane na wartości logiczne 4 Jako FALSE uznawane są 1 liczba całkowita 0 2 liczba zmiennoprzecinkowa 0.0 3 pusty łańcuch znaków 4 łańcuch znaków 0 5 pusta tablica 6 pusty obiekt 7 NULL 5 Pozostałe wartości interpretowane są jako TRUE (w tym np. -1) P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 14 / 38

Łańcuchy znaków Pojedynczy cudzysłów echo Jakiś tekst ; echo Arnold once said: I ll be back Podwójny cudzysłów - dodatkowe przetwarzanie echo Jakiś tekst \n i dalszy ciąg w nowej linii ; echo Wartością zmiennej jest: $zmienna ; P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 15 / 38

Operacje na łańcuchach znaków echo <?php echo Witaj świecie ;?> echo ze zmienną <?php $imie = Tomasz ; echo Witaj $imie ;?> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 16 / 38

Operatory Operatory arytmetyczne Operator Opis Wartość 5-3 odejmowanie 2 5 + 3 dodawanie 8 5 * 3 mnożenie 15 15 / 3 dzielenie 5 16 % 5 reszta z dzielenia 1 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 17 / 38

Operatory Operatory porównania Operator Opis Kiedy prawda $a == $b równe $a i $b są równe bez kontroli typu $a === $b tożsame $a i $b są równe i tego samego typu $a < $b mniejsze $a jest mniejsze od $b $a > $b większe $a jest większe od $b $a <= $b mniejsze równe $a jest mniejsze lub równe $b $a >= $b większe równe $a jest większe lub równe $b $a!= $b nierówne $a i $b są różne bez kontroli typu $a!== $b nietożsame $a i $b są różne lub róznych typów $a <> $b nierówne $a i $b są różne bez kontroli typu P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 18 / 38

Operatory Operatory logiczne Operator Opis Kiedy prawda $a and $b koniunkcja $a i $b są prawdą $a && $b koniunkcja $a i $b są prawdą $a or $b alternatywa $a lub $b są prawdą $a $b alternatywa $a lub $b są prawdą $a xor $b alternatywa wykluczająca $a albo $b są prawdą!$a negacja $a nie jest prawdą P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 19 / 38

Operatory Operatory przypisania Wyrażenie Wartości zmiennych po wykonaniu $a = 5 a=5 $b = $a = 5 a=5, b=5 $c = $a++ a=6, c=5 $d = ++$a a=7, c=6 $a += 3 a=10 $a -= 5 a=5 $a *= 3 a=15 $a /= 5 a=3 $a.= słonie a= 3 słonie P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 20 / 38

Dostęp do bazy danych 1 Istnieją rozszerzenia pozwalające na połączenia z różnymi bazami danych 1 SQLite; 2 MySQL 3 PostgreSQL 4 MSSQL 5 Oracle 2 Do połączenia z bazą konieczne są dane użytkownika i hasło 3 PHP musi mieć uprawnienia do połączenia z bazą ze swojego serwera P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 21 / 38

Dostęp do bazy danych Połączenie i zapytanie <?php $link = mysql_connect( mysql_host, mysql_user, mysql_password ); mysql_select_db( my_database ); $query = SELECT * FROM my_table ; $result = mysql_query($query); P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 22 / 38

Dostęp do bazy danych c.d. Odczyt danych z tabeli echo <table>\n ; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo \t<tr>\n ; foreach ($line as $col_value) { echo \t\t<td>$col_value</td>\n ; } echo \t</tr>\n ; } echo </table>\n ; P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 23 / 38

Dostęp do bazy danych c.d. Zakończenie połączenia mysql_free_result($result); mysql_close($link);?> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 24 / 38

Dostęp do bazy danych c.d. Wygenerowany kod HTML <table> <tr> <td>1</td> <td>anna</td> <td>babacka</td> </tr> <tr> <td>2</td> <td>matylda</td> <td>babacka</td> </tr> <tr> <td>3</td> <td>tomasz</td> <td>cabacki</td> </tr> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 25 / 38

Dostęp do bazy danych c.d. Widok w przeglądarce 1 Anna Abacka 2 Matylda Babacka 3 Tomasz Cabacki P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 26 / 38

Formularze w HTML 1 Znacznik <form> 2 Elementy formularza - znaczniki <input> 3 Typ pola określany przez atrybut type 1 Pole tekstowe <input type= text > 2 Pole jednokrotnego wyboru (radio) <input type= radio > 3 Pole wielokrotnego zaznaczenia (checkbox) <input type= checkbox > 4 Pole hasła (nie wyświetla wpisywanych znaków) <input type= password > 5 Przycisk wysyłania <input type= submit > 6 Przycisk czyszczenia <input type= reset > P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 27 / 38

Przykładowy formularz Pytanie o imię, nazwisko i płeć <form> Imię: <input type= text name= imie /><br /> Nazwisko: <input type= text name= nazwisko /><br /> Płeć: <input type= radio name= plec value= M /> Mężczyzna<br /> <input type= radio name= sex value= K /> Kobieta <input type= submit value= Wyślij /> <input type= reset value= Wyczyść /> </form> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 28 / 38

Widok w przeglądarce P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 29 / 38

Co się dzieje z danymi? 1 Dane z formularza wysyłane są do serwera przy po kliknięciu w przycisk submit 2 Dwie metody 1 GET - dane zakodowane w adresie URL 2 POST - dane zapisane treści żądania do serwera 3 Konieczne jest podanie skryptu, który zajmie się danymi otrzymanymi przez serwer 4 Atrybut action 5 Ścieżka dostępu i nazwa pliku, który przetwarza dane P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 30 / 38

Wysyłanie danych metodą POST <form action= witaj.php method= POST > Imię: <input type= text name= imie /><br /> Nazwisko: <input type= text name= nazwisko /><br /> <input type= submit value= Wyślij /> </form> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 31 / 38

Dostęp do danych POST witaj.php <html> <head> </head> <body> <p>witaj <?php echo $_POST[ imie ];?>!</p> <p>twoje nazwisko to <?php echo $_POST[ nazwisko ];?>.</p> </body> </html> Widok w przeglądarce po wysłaniu Witaj Tomasz! Twoje nazwisko to Cabacki. P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 32 / 38

Wysyłanie danych metodą GET <form action= witaj.php method= GET > Imię: <input type= text name= imie /><br /> Wiek: <input type= text name= wiek /><br /> <input type= submit value= Wyślij /> </form> P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 33 / 38

Widok w przeglądarce Adres URL wysłany do serwera http://mojastrona.com/witaj.php?imie=tomasz&wiek=32 P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 34 / 38

Dostęp do danych GET witaj.php <html> <head> </head> <body> <p>witaj <?php echo $_GET[ imie ];?>!</p> <p>masz <?php echo $_GET[ wiek ];?> lat.</p> </body> </html> Widok w przeglądarce po wysłaniu Witaj Tomasz! Masz 32 lat. P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 35 / 38

Kiedy POST a kiedy GET? 1 GET 2 POST 1 Efekt wielokrotnego wysłania tych samych danych jest taki sam jak efekt jednokrotnego wysłania 2 Brak efektów ubocznych, albo są one nieistotne 3 Mała ilość danych 4 Tylko przy pobieraniu danych z bazy 1 Wysłanie formularza powoduje dodatkowe efekty uboczne, które nie powinny być powtarzane 2 Duża ilość danych 3 Pobieranie, dodawanie, usuwanie danych z bazy P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 36 / 38

SQL injection ;) Rysunek: http://xkcd.com/327/ P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 37 / 38

Walidacja i zabezpieczenia 1 Po stronie klienta 1 JavaScript 2 Przed wysłaniem danych z formularza 3 Wyrażenia regularne - poprawność danych 4 Nie gwarantuje poprawności danych 5 Dla wygody użytkownika 2 Po stronie serwera 1 PHP,... 2 Po wysłaniu danych z formularza 3 Usuwanie niebezpiecznych znaków 4 Dodawanie \ przed i "(addslashes()) 5 Wykorzystanie funkcji dla używanej bazy (mysql_real_escape_string()) 6 Wyrażenia regularne - poprawność danych 7 Dla bezpieczeństwa P. Witkowski (Wydział Matematyki, Informatyki i Mechaniki) BDiUS w. VIII Jesień 2011 38 / 38