PHP i Bazy Danych. Michał Dudkiewicz. jaymz@mat.umk.pl. System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu



Podobne dokumenty
Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Projektowanie stron WWW

Projektowanie stron WWW

Język C część 2. Podejmowanie decyzji w programie. if else. switch

Java Podstawy. Michał Bereta

1 Podstawy c++ w pigułce.

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

Wyrażenie wewnątrz nawiasów jest atomem (rozpatrujemy je jako całość).

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

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

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

Operacje na ciągach. Łączenie ciągów

Lekcja 7 Tablice. Definiowanie tablicy

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

1 Podstawy c++ w pigułce.

Dlaczego PHP? - zalety

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

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania C++

Języki skryptowe w programie Plans

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Programowanie w Turbo Pascal

Pętle. Dodał Administrator niedziela, 14 marzec :27

Projektowanie stron WWW

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

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

WYMAGANIA EDUKACYJNE. Programowanie Aplikacji Internetowych klasa III

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PHP: bloki kodu, tablice, obiekty i formularze

PHP w-3. Sterowanie w PHP

Umieszczanie kodu. kod skryptu

SSK - Techniki Internetowe

Instrukcje sterujące

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Bazy Danych i Usługi Sieciowe

ZMIENNE. Podstawy PHP

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

System operacyjny Linux

Wykład 2 Składnia języka C# (cz. 1)

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Michał Bielecki, KNI 'BIOS'

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Cw.12 JAVAScript w dokumentach HTML

Grafika PHP dla początkujących

Wyrażenia regularne. Wyrażenia regularne 1/41

Projektowanie stron WWW

Środowisko programisty Zestaw 7

Wstęp do Informatyki dla bioinformatyków

System operacyjny Linux

Obiektowe bazy danych

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

Skrypty powłoki w systemie Linux

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

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

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

SQL, LIKE, IN, CASE, EXISTS. Marcin Orchel

Ćwiczenie 1. Wprowadzenie do programu Octave

4. Funkcje. Przykłady

1 Przygotował: mgr inż. Maciej Lasota

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Język C zajęcia nr 5

Języki programowania zasady ich tworzenia

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Pętle instrukcje powtórzeo

Oczywiście plik musi mieć rozszerzenie *.php

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

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

Zakładamy konto na serwerze WWW

Baza danych do przechowywania użytkowników

Składowane procedury i funkcje

Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Materiały do laboratorium MS ACCESS BASIC

Pętla for. Wynik działania programu:

Języki formalne i automaty Ćwiczenia 6

Personal Home Page PHP: Hypertext Preprocessor

12. Skrypty w Linux - funkcje, instrukcje sterujące i obliczenia arytmetyczne

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Funkcje wbudowane PHP

Celem tego projektu jest stworzenie

Zmienne i stałe w PHP

7. Pętle for. Przykłady

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

Wysyłanie pliku na serwer. Plik na serwerze.

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Aplikacje WWW - laboratorium

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Programowanie strukturalne i obiektowe

14. POZOSTAŁE CIEKAWE FUNKCJE

Transkrypt:

<?php Ming_setScale(1.0); $string = "Ming"; $f = new SWFFont("ComicSansMS.fdb"); $m = new SWFMovie(); $m->setrate(24.0); $m->setdimension(2400, 1600); $m->setbackground(0xff, 0xff, 0xff); PHP i Bazy Danych function text($r, $g, $b, $a) { global $f, $m; $t = new SWFText(); $t->setfont($f); $t->setcolor($r, $g, $b, $a); $t->setheight(960); $t->moveto(-($t->getwidth($string))/2, 220); $t->addstring($string); $i = $m->add($t); $i->x = $x; $i->y = $y; $i->rot = $rot; $i->s = $scale; $i->rotateto($rot); Michał Dudkiewicz jaymz@mat.umk.pl

pętla for pętla for instrukcja sterująca, przy pomocy której skrypt może wykonad fragment kodu ustaloną z góry ilośd razy. Ilośd wykonao (iteracji) kontrolowana jest zmienną pełniącą rolę licznika. Przykład 1 for ($i=1;$i<10;$i++) { echo $i. <br> ; } Rolę licznika pełni zmienna $i wartośd początkowa wynosi 1, zakooczenie pętli nastąpi kiedy zmienna osiągnie wartośd równą 10, licznik zwiększa swoją wartośd o 1. Jako wynik wypisane zostaną wartości zmiennej $i od 1 do 9. 2

pętla for Przykład 2 for ($k=20;$k>10;$k=$k-2) { echo $i. <br> ; } *Przykład 3 $proba=false; for ($i=0; $proba==false; $i=$i+0.6) { if ($i>3) $proba=true; komunikat("\$i=".$i); } 3

pętla for Należy zwracad uwagę na to aby nie manipulowad wartością licznika wewnątrz pętli, gdyż może to doprowadzid do działania pętli innego niż planowaliśmy. Wyjątkiem jest sytuacja, kiedy celowo wykonujemy takie działanie. Przykład 4 for ($i=1;$i<10;$i++) { $i=4; echo $i. <br> ; } Powstała pętla nieskooczona! 4

pętla while pętla while instrukcja sterująca, przy pomocy której skrypt może wykonad fragment kodu wiele razy. Ilośd wykonao (iteracji) kontrolowana jest warunkiem wykonania pętli. Pętla nie ma określonej z góry ilości wykonao. Może nie wykonad się ani razu, jeśli warunek wykonania pętli nie będzie spełniony. Za pomocą pętli while można symulowad pętlę for. Przykład 5 $i=5; while ($i>10) { $i--; echo $i. <br> ; } Pętla nie wykona się ani razu! 5

pętla do while pętla do while instrukcja sterująca, podobna do pętli while. Pętla wykona się zawsze co najmniej raz gdyż warunek wykonania pętli sprawdzany jest na jej koocu (a nie na początku jak w przypadku pętli while). Ta pętla także może symulowad pętlę for. Przykład 6 $i=5; do { $i--; echo $i. <br> ; } while($i>10); Pętla wykona się raz! 6

instrukcja wielowarunkowa case case instrukcja warunkowa podobna do if, jednak w odróżnieniu od if może sprawdzad wiele wartości dla danego warunku (najczęściej warunkiem jest wartośd zmiennej) i w zależności od wartości warunku, wykonywad określone instrukcje. Pozwala zastąpid kilka warunków if. Ważnym elementem jest brake. Przykład 7 switch ($a) { case jeden : include( jeden.php ); break; case trzy : include( trzy.php ); break; default: include( dwa.php ); } 7

obsługa formularza po stronie serwera $_POST zmienna tablicowa zawierająca dane z naszego formularza wysłanego metodą POST. Takie zmienne należy ze względów bezpieczeostwa bezwzględnie przetworzyd! Istnieją proste sposoby, które pozwalają włamad się na strony, czy też wyrządzid spore szkody w bazach danych. Jedną z prostych i bardzo skutecznych (kiedy nie ma zabezpieczeo) technik jest SQLInjection i PHPInjection 8

SQLInjection SQLInjection (z ang., dosłownie zastrzyk SQL) luka w zabezpieczeniach aplikacji internetowych polegająca na nieodpowiednim filtrowaniu lub niedostatecznym typowaniu i późniejszym wykonaniu danych przesyłanych w postaci zapytao SQL do bazy danych. Podatne są na niego systemy złożone z warstwy programistycznej (przykładowo skrypt w PHP itp.) dynamicznie generującej zapytania do bazy danych (MySQL, PostgreSQL itp.). Wynika on zwykle z braku doświadczenia lub wyobraźni programisty. Podstawowym sposobem zabezpieczania przed SQLInjection jest niedopuszczenie do nieuprawnionej zmiany wykonywanego zapytania. http://www.poradnik-webmastera.com/artykuly/bazy_danych/sql_injection.php (źródło Wikipedia) 9

PHPInjection PHPInjection PHP Injection polega na dopisywaniu przez złośliwych użytkowników fragmentów kodu do przesyłanych zmiennych m.in. za pośrednictwem formularzy znajdujących się na stronach WWW. Przed PHP Injection można zabezpieczyd się filtrowaniem przekazywanych parametrów - wygląda to dokładnie tak samo, jak w przypadku SQL Injection, jednak atak nie ma bezpośredniego (lub nie ma w ogóle) wpływu na bazę danych. (źródło Wikipedia) 10

wyrażenia regularne Wyrażenie regularne w PHP są to pewne wyrażenia, opisujące w sposób ogólny jak ma wyglądad łaocuch znaków (napis). Mając taki opis (wzorzec) można testowad czy dany łaocuch spełnia nasze wymagania np.: czy jest poprawnym składniowo adresem email. Wyrażenia regularne konstruuje się w oparciu o: zwykłe znaki alfanumeryczne (litery, cyfry) kwantyfikatory powtórzeo wyrażenia logiczne (negacja, alternatywa) zakresy 11

kwantyfikatory powtórzeń. - jeden jakikolwiek znak (wyjątkiem jest znak nowej linii). Czyli pojedyncza litera, cyfra, przecinek, spacja, czy jakikolwiek inny znak będzie pasował do tego wzorca * - zero, jedno lub więcej wystąpieo? - zero lub jedno wystąpienie + - jedno lub więcej wystąpieo {n} - dokładnie n wystąpieo {n,} - co najmniej n wystąpieo {,m} - co najwyżej m wystąpieo {n,m} - co najmniej n i nie więcej niż m wystąpieo 12

znaki specjalne We wzorcach można również stosowad specjalne litery poprzedzone znakiem odwrotnego ukośnika (ang. backslash), które mają specjalne znaczenie. Na przykład \d oznacza dowolną cyfrę (znak z zakresu od 0-9), a \s to spacja. Oczywiście w tym przypadku również można wykorzystad kwantyfikatory powtórzeo. Najprostszy wzorzec (nie uwzględniający znaczenia analizowanych danych) dla jednej z form zapisu numeru identyfikacji podatkowej może wyglądad następująco: \d{3}-\d{2}-\d{2}-\d{3} Odwrotny ukośnik może również służyd do usunięcia specjalnego znaczenia niektórym znakom. 13

zakresy Możliwe jest również definiowanie zestawów dopuszczalnych znaków. Wykorzystuje się do tego nawiasy kwadratowe - [ i ]. Dla przykładu, dla określenia wzorca dla liczby w systemie szesnastkowym (wykorzystującej jako cyfry wszystkie cyfry oraz wielkie litery od A do F) wystarczy użyd: 0x[0123456789ABCDEF]+ Wypisywanie wszystkich możliwości jest nieco żmudne. Można skorzystad z zakresów. I tak, ten sam przykład można zapisad jako: 0x[0-9A-F]+ 14

negacja, alternatywa W pewnych przypadkach lepiej jest określid znaki, które nie mogą się pojawid niż znaki, które mogą się pojawid, chociażby z powodu ilości pozycji do wpisania. Do zdefiniowania zestawu znaków, które wystąpid nie mogą służy znak ^ (ale tylko gdy rozpoczyna definicję zestawu znaków). Przykładowo, poprawnie zapisanego hiperłącza to: <a\shref="[^\n">]+">[^>]+</a> Alternatywa to możliwośd zdefiniowania kilku wzorców dla tego samego miejsca w analizowanym ciągu znaków. Na przykład słowo cztero lub ośmioliterowe to: [a-za-z]{4} [a-za-z]{8} Wykorzystywany jest tutaj znak. 15

początek i koniec linii Istnieje również możliwośd oznaczenia początku i kooca linii. Początek linii jest oznaczany znanym już symbolem ^, jednak aby był traktowany jako początek linii, to musi on występowad na początku wzorca, a koniec to $, analogicznie, powinien występowad na koocu wzorca. Wzorzec opisujący poprawny składniowo adres email: ^[a-za-z0-9.\-_]+@[a-za-z0-9\-.]+\.[a-za-z]{2,4}$ 16

funkcje sprawdzania preg_match, preg_match_all Przykład 8 (sprawdzanie czy podany email jest poprawny) $wzorzec = '/^[a-za-z0-9.\-_]+@[a-za-z0-9\-.]+\.[a-za-z]{2,4}$/'; $dane = $_POST['email']; if(preg_match($wzorzec,$dane)) echo("e-mail prawidłowy"); else echo("e-mail nieprawidłowy"); Funkcja preg_match_all różni się od funkcji preg_match tym, że wyszukuje wszystkie ciągi pasujące do wzorca i nie poprzestaje na znalezieniu tylko pierwszego. Wynik zwraca w postaci tablicy. 17

funkcja preg_replace preg_replace - funkcja potrafi zamienid w tekście wystąpienie jednego łaocucha znaków (napisu) na inny łaocuch znaków (napis). Napis do wymiany opisany jest wyrażeniem regularnym. Zamiana adresu strony na działający link: 1) Musimy opisad protokół. Ustalamy, że interesują nas tylko najpopularniejsze: http, https, ftp czy nntp. (wszystkie tutaj wymienione protokoły mają w środku litery t i p, niektóre z nich mogą zostad rozszerzone o literę s). Dlatego początek adresu możemy zapisad jako: [a-za-z]{1,2}tps?:\/\/ 18

funkcja preg_replace 2) Opis domeny (podobnie jak przy wzorcu na adres email), rozszerzymy o numer portu TCP na którym ma zostad nawiązane połączenie: [a-za-z0-9\-.]+\.[a-za-z]{2,4}(:[0-9]{1,5})?\/ W nawiasach okrągłych jest opisany numer portu, potem jest znak? określający, że wyrażenie może wystąpid co najwyżej raz. Nawiasy okrągłe powodują utworzenie podwyrażenia i znak? będzie miał zastosowanie tylko do tego podwyrażenia. 19

funkcja preg_replace Przykład 9 (zamiana tekstu na link) $wzorzec = '/[a-za-z]{1,2}tps?:\/\/[a-za-z0-9\-.]+\.[a-za-z]{2,4}(:[0-9]{1,5})?\/[^\n\s]*/'; $zamiana = '<a href="\0">\0</a>'; $wynik = preg_replace($wzorzec, $zamiana, $tresc); W zmiennej zamiana występuje wyrażenie \0 oznaczające ciąg, który został dopasowany do całego wyrażenia. 20

funkcja preg_replace Przykład 10 (zamiana wg tablicy z wzorcami) $usmiechy = array( '/:?\)/', '/:?\(/', '/:?\-/', '/:?\[/'); $zamiana = array( '<img src="usmiech.png">', '<img src="smutek.png">', '<img src="zastanowienie.png">, '<img src="oczko.png">'); $tresc = preg_replace($usmiechy, $zamiana, $tresc); Każde wystąpienie :), :(, :/, ;) w tekście reprezentowanym przez zmienną $tresc zostanie zastąpione odpowiednim obrazkiem. 21

funkcje explode i implode funkcja explode - funkcja pozwalająca utworzyd z ciągu znaków oddzielonych jakimś ustalonym znakiem (separatorem) tablicę. Przykład 10 (tablica z wszystkich elementów) $text = 14/09/2009;19:23:33;Internet Explorer;192.168.1.1 $tablica = explode( ;,$text); Przykład 11 (tablica tylko z 2 pierwszych elementów) $text = jeden dwa trzy cztery ; $tab = explode(' ', $str, 2); 22

funkcje explode i implode Przykład 12 (tablica z wszystkich elementów oprócz ostatniego) $text = jeden dwa trzy cztery ; $tab = explode(' ', $str, -1); funkcja implode - funkcja pozwalająca utworzyd z tablicy ciąg znaków oddzielonych jakimś ustalonym znakiem (separatorem. Przykład 13 $tablica = array( kowalski', jan.kowalski@xyz.pl', 123456789'); $napis = implode(",", $array); 23

PHP i MING Zakończenie cdn 24