Sieci Komputerowe i Technologie Internetowe (SKiTI) · 2017-04-25 · ©SKiTI2017 Sieci Komputerowe...

56
© SKiTI 2017 Sieci Komputerowe i Technologie Internetowe (SKiTI) Wyklad 13: Szybkie wprowadzenie do PHP WYDZIAL ELEKTROTECHNIKI I AUTOMATYKI – KATEDRA INŻYNIERII SYSTEMÓW STEROWANIA Kierunek: Automatyka i Robotyka Studia stacjonarne I stopnia: rok I, semestr II dr inż. Tomasz Rutkowski 2017

Transcript of Sieci Komputerowe i Technologie Internetowe (SKiTI) · 2017-04-25 · ©SKiTI2017 Sieci Komputerowe...

© SKiTI 2017

Sieci Komputerowe i Technologie Internetowe(SKiTI)

Wykład 13: Szybkie wprowadzenie do PHP

WYDZIAŁ ELEKTROTECHNIKI I AUTOMATYKI – KATEDRA IN ŻYNIERII SYSTEMÓW STEROWANIAKierunek: Automatyka i Robotyka

Studia stacjonarne I stopnia: rok I, semestr IIdr in ż. Tomasz Rutkowski

2017

Technologie WWWTechnologie WWW

Podstawowe grupy technologii WWW:Podstawowe grupy technologii WWW:

�� Generacji (Generacji (ang. Serverang. Server--SideSide))�� dynamiczne tworzenie, generowanie przez serwer dynamiczne tworzenie, generowanie przez serwer

zawartości strony WWW w zależności od różnych zawartości strony WWW w zależności od różnych

© SKiTI 2017

zawartości strony WWW w zależności od różnych zawartości strony WWW w zależności od różnych czynników, m.in. „wymagań” czynników, m.in. „wymagań” użytkownikaużytkownika((proces proces generacjigeneracji odbywa się po stronie serweraodbywa się po stronie serwera) )

�� Prezentacji (Prezentacji (ang. Clientang. Client--SideSide))�� przedstawienie „wygenerowanej” przez serwer treści przedstawienie „wygenerowanej” przez serwer treści

strony WWW w zrozumiałej, logicznej i atrakcyjnej dla strony WWW w zrozumiałej, logicznej i atrakcyjnej dla użytkownikaużytkownika postaci postaci ((proces proces prezentacjiprezentacji odbywa się po odbywa się po stronie klienta stronie klienta –– przeglądarka internetowaprzeglądarka internetowa) )

Technologie Technologie ServerServer--SideSide

Przykłady technologii generacji:Przykłady technologii generacji:

�� CGI (CGI (ang. ang. CommonCommon GatewayGateway InterfaceInterface))�� SSI (SSI (ang. Server ang. Server SideSide IncludeInclude))�� ASP (ang. ASP (ang. ActiveActive Server Server PagesPages))

© SKiTI 2017

�� ASP (ang. ASP (ang. ActiveActive Server Server PagesPages))

�� ISAPI ISAPI ((ang. ang. Internet Server Internet Server APIAPI) ) // NSAPINSAPI ((ang. ang. Netscape ServerNetscape Server APIAPI))

�� PHP (PHP (ang. ang. Personal Home PagePersonal Home Page))�� JSP (ang. JSP (ang. Java Server Java Server PagesPages))�� ServletyServlety�� Serwery aplikacjiSerwery aplikacji

Technologie Technologie ClientClient--SideSide

Przykłady technologii prezentacji:Przykłady technologii prezentacji:

�� (X)HTML(X)HTML�� CSS (CSS (ang. ang. CascadeCascade Style Style SheetSheet))�� JavaScriptJavaScript, , JScriptJScript, , VBScriptVBScript

© SKiTI 2017

�� JavaScriptJavaScript, , JScriptJScript, , VBScriptVBScript�� Aplety JavyAplety Javy�� ShockwaveShockwave, , FlashFlash�� AJAX (AJAX (ang.ang. Asynchronous JavaScript and XMLAsynchronous JavaScript and XML))�� X3DX3D�� WML (WML (ang. ang. Wireless Wireless MarkupMarkup LanguageLanguage))�� RSS (RSS (ang. ang. Really Simple Syndication Really Simple Syndication ) / Atom) / Atom

Czym jest PHP?Czym jest PHP?

�� PHP jest jednym z wielu języków programowania, PHP jest jednym z wielu języków programowania, które umożliwiają szybkie tworzenie dynamicznych które umożliwiają szybkie tworzenie dynamicznych stron internetowychstron internetowych

�� PHP jest projektem otwartym, co oznacza, że aby go PHP jest projektem otwartym, co oznacza, że aby go używać, wystarczy pobrać źródła lub używać, wystarczy pobrać źródła lub binariabinaria

© SKiTI 2017 5

używać, wystarczy pobrać źródła lub używać, wystarczy pobrać źródła lub binariabinaria�� PHP jest ściśle powiązany z językiem HTML i PHP jest ściśle powiązany z językiem HTML i

protokołem HTTPprotokołem HTTP�� Składnią PHP jest zbliżony do C/C++Składnią PHP jest zbliżony do C/C++

Czym jest PHP?Czym jest PHP?

�� Programista PHP nie musi sprawdzać poprawności Programista PHP nie musi sprawdzać poprawności typów zmiennych, czy przejmować się typów zmiennych, czy przejmować się przydzielaniem dla nich pamięci itp.przydzielaniem dla nich pamięci itp.

�� PHP ma wbudowaną obsługę wielu popularnych baz PHP ma wbudowaną obsługę wielu popularnych baz danychdanych

© SKiTI 2017 6

danychdanych�� W Internecie można znaleźć wiele funkcjonalnych W Internecie można znaleźć wiele funkcjonalnych

bibliotek i skryptów PHPbibliotek i skryptów PHP

Czym jest PHP?Czym jest PHP?

�� PHP jest językiem interpretowalnymPHP jest językiem interpretowalnym

�� kod skryptu PHP osadzany jest w dokumencie HTMLkod skryptu PHP osadzany jest w dokumencie HTML

© SKiTI 2017 7

�� w momencie uruchomienia strony (zazwyczaj z w momencie uruchomienia strony (zazwyczaj z rozszerzeniem .rozszerzeniem .phpphp, .php4 lub .php5) kod PHP , .php4 lub .php5) kod PHP wykonywany jest przez specjalny program wykonywany jest przez specjalny program (interpreter/(interpreter/parserparser ) po ) po stronie serwerastronie serwera

�� wynik działania interpretera/wynik działania interpretera/parseraparsera zwracany jest w zwracany jest w postaci postaci tekstu tekstu zawartego w dokumencie HTML, który zawartego w dokumencie HTML, który można analizować po można analizować po stronie klientastronie klienta

Troch ę HistoriiTroch ę Historii

Historia Historia PHPPHP

� 1995r.: duński programista Rasmus Lerdorf udostępnił pierwszą wersję PHP, rozpowszechnianą pod nazwą PHP/FI(Personal Home Page/Forms Interpreter)

� 1998r.: izraelscy programiści Zeev Suraski i Andi Gutmans

© SKiTI 2017 8

� 1998r.: izraelscy programiści Zeev Suraski i Andi Gutmansprzepisali kod PHP, efektem prowadzonych prac jest następca PHP/FI - PHP 3.0

� 2000r.: na bazie stworzonego nowego silnika języka PHP (ZendEngine ) wydane zostaje PHP 4

� 2004r.: ukazuje się stabilna wersja PHP 5 – modernizacji poddano silnik Zend, efektem czego było dodanie do PHP nowego modelu programowania obiektowego

� 2005r.: rozpoczęcie prac nad PHP 6 – wsparcie unicode, usprawnienie modelu obiektowego -> zawieszona w 2010: 5.4

Troch ę HistoriiTroch ę Historii

Historia Historia PHPPHP

� Od 2014 roku trwały prace nad PHPNG (PHP (PHP NextNextGenerationGeneration) związane z optymalizacją wydajności ) związane z optymalizacją wydajności ZendZendEngineEngine, zachowując zgodność języka wstecz (inaczej niż w , zachowując zgodność języka wstecz (inaczej niż w PHP 6PHP 6), które skończyły się wersją ), które skończyły się wersją PHP PHP 77 w 2017 roku.w 2017 roku.

© SKiTI 2017 9

PHP 6PHP 6), które skończyły się wersją ), które skończyły się wersją PHP PHP 77 w 2017 roku.w 2017 roku.� Ostatnia stabilna wersja PHP 7.1 (7.1 (7.1.4) 7.1.4) (kwiecień 2017)

�� PHP funkcjonuje pod następującymi nazwami:PHP funkcjonuje pod następującymi nazwami:�� HypertextHypertext PreprocesorPreprocesor�� PPersonalersonal Home PageHome Page

Więcej szczegółowych informacji o PHP na stronie:http://www.php.net

PHP w praktycePHP w praktyce

© SKiTI 2017 10

PHP w praktycePHP w praktyce- podstawowe definicje -

Opis j ęzyka PHP: http://php.net/manual/pl/langref.php

Składnia PHPSkładnia PHPPHPPHP składniowo jest podobny do C, składniowo jest podobny do C, PerlaPerla i Javy.i Javy.

Istnieją specjalne Istnieją specjalne znaczniki ograniczaj ąceznaczniki ograniczaj ące bloki PHP. Preprocesor bloki PHP. Preprocesor PHP wykonuje cały kod zawarty pomiędzy znacznikami:PHP wykonuje cały kod zawarty pomiędzy znacznikami:

•• <?<?phpphp i i ?>?> (zalecane),(zalecane),

© SKiTI 2017

11

•• <?<?phpphp i i ?>?> (zalecane),(zalecane),•• lub lub <?<? oraz oraz ?>?> (tzw. (tzw. styl krótkistyl krótki),),

umieszczonymi w kodzie HTML i zwraca wynik w postaci tekstu.umieszczonymi w kodzie HTML i zwraca wynik w postaci tekstu.

Instrukcje w PHP są oddzielone Instrukcje w PHP są oddzielone średnikiemśrednikiem ..

<?phpecho "Witaj świecie!";

?>

Składnia PHPSkładnia PHP : Komentarze: Komentarze

Komentarze w PHP można oznaczać symbolami komentarzy Komentarze w PHP można oznaczać symbolami komentarzy pochodzącymi z C, C++ lub stosowanych w skryptach Uniksa. pochodzącymi z C, C++ lub stosowanych w skryptach Uniksa. Komentarze jednoliniowe komentują tekst do końca linii lub do Komentarze jednoliniowe komentują tekst do końca linii lub do końca bieżącego bloku PHP w zależności od tego, co będzie końca bieżącego bloku PHP w zależności od tego, co będzie pierwsze. Nie można zagłębiać wielowierszowych komentarzy w pierwsze. Nie można zagłębiać wielowierszowych komentarzy w

© SKiTI 2017

12

pierwsze. Nie można zagłębiać wielowierszowych komentarzy w pierwsze. Nie można zagłębiać wielowierszowych komentarzy w stylu C.stylu C.

<?php/* To jest wielowierszowy

blok komentarza w stylu C */

echo "Witaj świecie!<br />"; // jednowierszowy komentarz w stylu C++echo "Witamy ponownie.<br />"; # komentarz w stylu s kryptów Uniksa

?>

Przykład kodu PHP Przykład kodu PHP –– dokument na serwerzedokument na serwerze<html>

<head><title>Prosty przykład kodu PHP</title>

</head><body>

<?phpecho "Witajcie w PHP!" ;

?>

© SKiTI 2017

13

?></body>

</html>

<html><head>

<title>Prosty przykład kodu PHP</title></head><body>

Witajcie w PHP!</body>

</html>

Przykład działania kodu PHP Przykład działania kodu PHP –– dokument po stroniedokument po stronie klientaklienta

Przykład kodu PHP Przykład kodu PHP –– dokument na serwerzedokument na serwerze<html>

<head><title>Prosty przykład kodu PHP</title>

</head><body>

<?<?phpphpecho "Witajcie w PHP!" ;echo "Witajcie w PHP!" ;

?>?>

© SKiTI 2017

14

?>?></body>

</html>

<html><head>

<title>Prosty przykład kodu PHP</title></head><body>

Witajcie w PHPWitajcie w PHP!!</body>

</html>

Przykład działania kodu PHP Przykład działania kodu PHP –– dokument po stroniedokument po stronie klientaklienta

Składnia PHPSkładnia PHP : Zmienne: Zmienne

Zmienna jest swego rodzaju pojemnikiem przechowującym pewną Zmienna jest swego rodzaju pojemnikiem przechowującym pewną wartość (dane).wartość (dane).Każda zmienna posiada własną, unikalną nazwę, która jednoznacznie ją Każda zmienna posiada własną, unikalną nazwę, która jednoznacznie ją

identyfikuje. identyfikuje.

© SKiTI 2017

15

identyfikuje. identyfikuje. Zmienne PHP są oznaczane znakiem dolara ($), po którym następuje Zmienne PHP są oznaczane znakiem dolara ($), po którym następuje

nazwa zmiennej (identyfikator). nazwa zmiennej (identyfikator).

<?php$variable1 = 0;$variable2 = "dane";

?>

Składnia PHPSkładnia PHP : Zmienne: Zmienne

Wielkość liter w nazwach zmiennych jest rozróżniana. Wielkość liter w nazwach zmiennych jest rozróżniana. Prawidłowe nazwy zmiennych muszą zaczynać się literą lub Prawidłowe nazwy zmiennych muszą zaczynać się literą lub

znakiem podkreślenia, po których może nastąpić litera, liczba znakiem podkreślenia, po których może nastąpić litera, liczba lub znak podkreślenia. lub znak podkreślenia.

© SKiTI 2017

16

lub znak podkreślenia. lub znak podkreślenia. Prawidłowymi literami w zmiennych są aPrawidłowymi literami w zmiennych są a--z, z, AA--ZZ lub dowolne znaki lub dowolne znaki

ASCII z zakresu 127ASCII z zakresu 127--255 (0x7f255 (0x7f--0xff).0xff).

<?php$variable1 = "Raz,";$variable2 = " dwa.";echo "$variable1, $variable2<br />"; // wypisuje "Raz , dwa."$1variable = 123; // nieprawidłowa nazwa zmiennej$_test = "test"; // prawidłowo, rozpoczyna si ę podkre śleniem$_ąęć = "test2"; // prawidłowo

?>

Składnia PHPSkładnia PHP : Stałe: Stałe

Podobnie jak zmienna przechowują pewną wartość, lecz jest ona Podobnie jak zmienna przechowują pewną wartość, lecz jest ona przypisana jednorazowo i nie może być zmieniona w żadnym przypisana jednorazowo i nie może być zmieniona w żadnym

innym miejscu skryptu. innym miejscu skryptu. Stałe definiujemy stosując funkcję Stałe definiujemy stosując funkcję definedefine()()::

© SKiTI 2017

17

Stałe definiujemy stosując funkcję Stałe definiujemy stosując funkcję definedefine()()::

<?phpdefine ("MAX_NAME_LENGHT", 30);define("AUTHOR_NAME", "Jan Kowalski");echo AUTHOR_NAME;

?>

Składnia PHPSkładnia PHP : Typy zmiennych : Typy zmiennych

PHP rozpoznaje następujące typy danych: PHP rozpoznaje następujące typy danych:

•• IntegerInteger -- stosowany dla liczb całkowitych,stosowany dla liczb całkowitych,•• FloatFloat -- stosowany dla liczb zmiennoprzecinkowych (rzeczywistych),stosowany dla liczb zmiennoprzecinkowych (rzeczywistych),

© SKiTI 2017

18

•• StringString -- stosowany dla ciągów znaków,stosowany dla ciągów znaków,•• BooleanBoolean -- stosowany w przypadku wartości stosowany w przypadku wartości truetrue lub lub falsefalse,,•• ArrayArray -- stosowany do przechowywania wielu wartości (tablice),stosowany do przechowywania wielu wartości (tablice),•• ObjectObject -- stosowany do przechowywania obiektów.stosowany do przechowywania obiektów.

Składnia PHPSkładnia PHP : Typy zmiennych c.d.: Typy zmiennych c.d.

Typy w PHP są słabo zaznaczone.Typy w PHP są słabo zaznaczone.Typ zmiennej jest ustalany w oparciu o kontekst w jakim została Typ zmiennej jest ustalany w oparciu o kontekst w jakim została

ona użyta i nie jest on jawnie ustalany przez programistę (w ona użyta i nie jest on jawnie ustalany przez programistę (w przeciwieństwie do np. C).przeciwieństwie do np. C).

© SKiTI 2017

19

przeciwieństwie do np. C).przeciwieństwie do np. C).Aby można było zapanować nad typami, PHP posiada funkcje Aby można było zapanować nad typami, PHP posiada funkcje

gettypegettype()() i i settypesettype() () oraz kilka funkcji przeznaczonych dla oraz kilka funkcji przeznaczonych dla określonych typów, np. określonych typów, np. is_integeris_integer() () lub lub is_arrayis_array()()..

<?php$var1 = 0; //zmienna typu integer$var2 = 0.00; //zmienna typu float$var2 = 'tekst'; //zmienna $var2 jest teraz typu st ring

?>

Składnia PHPSkładnia PHP : Typy zmiennych c.d.: Typy zmiennych c.d.

�� Liczby Liczby —— całkowite i zmiennoprzecinkowecałkowite i zmiennoprzecinkoweLiczby całkowite można podawać używając notacji dziesiętnej, Liczby całkowite można podawać używając notacji dziesiętnej,

ósemkowej i szesnastkowej.ósemkowej i szesnastkowej.Liczby zmiennoprzecinkowe można podawać używając notacji zwykłej Liczby zmiennoprzecinkowe można podawać używając notacji zwykłej

lub zapisu naukowego. lub zapisu naukowego.

© SKiTI 2017

20

<?php$int1 = 523; // liczba dziesi ętna$int2 = -523; // dziesi ętna ujemna$int3 = 01013; // ósemkowa reprezentacja liczby 523$int4 = 0x20B; // szesnastkowa reprezentacja liczby 523$float1 = 523.197; // zwykły zapis liczby zmiennopr zecinkowej$float2 = 5.23197e2; // notacja naukowa liczby zmie nnoprzecinkowejecho "$int1, $int2, $int3, $int4, $float1, $float2< br />" ;// Wy świetla "523, -523, 523, 523, 523.197, 523.197".

?>

Składnia PHPSkładnia PHP : Typy zmiennych c.d.: Typy zmiennych c.d.

�� CiągiCiągiCiągi w PHP są ograniczane apostrofami (') lub cudzysłowami (").Ciągi w PHP są ograniczane apostrofami (') lub cudzysłowami (").Zapisy te różnią się sposobem interpretacji ciągu.Zapisy te różnią się sposobem interpretacji ciągu.Jeżeli ciąg jest otoczony cudzysłowami, zmienne zapisane w ciągu zostają Jeżeli ciąg jest otoczony cudzysłowami, zmienne zapisane w ciągu zostają

zamienione na ich wartości. zamienione na ich wartości.

© SKiTI 2017

21

Aby zapisać znaki specjalne w ciągach otoczonych cudzysłowami, należy Aby zapisać znaki specjalne w ciągach otoczonych cudzysłowami, należy użyć znaku lewego ukośnika.użyć znaku lewego ukośnika.

Sekwencja znaków Znaczenie

\n nowa linia

\r powrót karetki (CR)

\t tabulacja

\\ lewy ukośnik

\” cudzysłów

\$ znak dolara

Składnia PHPSkładnia PHP : Typy zmiennych c.d.: Typy zmiennych c.d.

�� Ciągi c.d.Ciągi c.d.W ciągach otoczonych apostrofami zmienne nie są zastępowane.W ciągach otoczonych apostrofami zmienne nie są zastępowane.Jedynymi dopuszczalnymi sekwencjami sterującymi są te oznaczające lewy Jedynymi dopuszczalnymi sekwencjami sterującymi są te oznaczające lewy

ukośnik (ukośnik (\\\\) i apostrof () i apostrof (\\').').Sekwencje te pozwalają na wpisanie do ciągu znaku apostrofu i lewego Sekwencje te pozwalają na wpisanie do ciągu znaku apostrofu i lewego

ukośnika.ukośnika.

© SKiTI 2017

22

ukośnika.ukośnika.Ciągi mogą być łączone przy użyciu operatora kropki (.). Ciągi mogą być łączone przy użyciu operatora kropki (.).

<?php$var1 = "To jest zwykły ci ąg.";$var2 = "Jan Kowalski";$var3 = "Nazywam si ę $var2"; // $var3 = "Nazywam si ę Jan Kowalski"echo "$var3<br />";$var4 = "Nazywam si ę \$var2"; // $var4 = "Nazywam si ę $var2"echo "$var4<br />";$var5 = 'Nie rozwijaj \'$var2\''; // $var5 = "Nie r ozwijaj ‘$var2'"echo "$var5<br />";echo "$var3" . " i " . "$var4"; // wypisuje "Nazywam si ę Jan Kowalski i Nazywam si ę $var2"

?>

Składnia PHPSkładnia PHP : Typy zmiennych c.d.: Typy zmiennych c.d.

�� TabliceTabliceTablica w PHP jest uporządkowaną listą elementów przechowujących Tablica w PHP jest uporządkowaną listą elementów przechowujących

wartości. wartości. PHP obsługuje tablice indeksowane numerycznie oraz asocjacyjne. PHP PHP obsługuje tablice indeksowane numerycznie oraz asocjacyjne. PHP

pozwala również na tworzenie tablic wielowymiarowych. Tablice mogą pozwala również na tworzenie tablic wielowymiarowych. Tablice mogą być tworzone przy użyciu funkcji być tworzone przy użyciu funkcji list() list() lub lub arrayarray() () albo poprzez jawne albo poprzez jawne

© SKiTI 2017

23

być tworzone przy użyciu funkcji być tworzone przy użyciu funkcji list() list() lub lub arrayarray() () albo poprzez jawne albo poprzez jawne podanie każdej z wartości.podanie każdej z wartości.

<?php

// Jawne tworzenie prostej tablicy$a[0] = 'Kowalski';$a[1] = 'Nowak';$a[2] = 'Smith'; $a[3] = 'Brown'; echo( "$a[3], $a[2], $a[1], $a[0]<br />" );

?>

Składnia PHPSkładnia PHP : Typy zmiennych c.d.: Typy zmiennych c.d.�� Tablice c.d.Tablice c.d.

<?php// Tworzenie tablicy asocjacyjnej

$kolor['niebieski'] = "#0000FF";$kolor['zielony'] = "#00FF00";$kolor['czerwony'] = "#FF0000";echo ("Warto ść szesnastkowa koloru czerwonego wynosi" . $kolor['czerwony']."< br />");

© SKiTI 2017

24

$kolor['czerwony']."< br />");// korzystaj ąc z array():

$kolor = array( "niebieski" => '#0000FF', "zielony" => '#00FF00', "czerwony" => '#FF0000');

echo( "Warto ść szesnastkowa koloru zielonego wynosi" . $kolor['zielony'] . "<br />" );

// R ęczne tworzenie tablicy wielowymiarowej$m[0][0] = "pierwszy wiersz, pierwsza kolumna";$m[0][1] = "pierwszy wiersz, druga kolumna";echo( "Warto ści ą " . $m[0][1] . "jest" . $m[0][1] . "<br />" );

?>

Składnia PHPSkładnia PHP : Zasi ęg zmiennych: Zasi ęg zmiennych

Termin Termin zasięgzasięg odnosi się do części skryptu, w której widoczna jest odnosi się do części skryptu, w której widoczna jest dana zmiennadana zmienna. . Podstawowe typy zasięgów w PHP:Podstawowe typy zasięgów w PHP:�� zmienne zmienne superglobalnesuperglobalne (widoczne w całym skrypcie),(widoczne w całym skrypcie),�� stałe, po zadeklarowaniu są widoczne globalnie,stałe, po zadeklarowaniu są widoczne globalnie,

© SKiTI 2017

25

�� stałe, po zadeklarowaniu są widoczne globalnie,stałe, po zadeklarowaniu są widoczne globalnie,�� zmienne globalne zadeklarowane w skrypcie są widoczne w zmienne globalne zadeklarowane w skrypcie są widoczne w

całym skrypcie, ale nie wewnątrz funkcji,całym skrypcie, ale nie wewnątrz funkcji,�� zmienne używane w obrębie funkcji, zdeklarowane jako zmienne używane w obrębie funkcji, zdeklarowane jako

globalne, odnoszą się do zmiennej globalnej o tej samej nazwie,globalne, odnoszą się do zmiennej globalnej o tej samej nazwie,�� zmienne statyczne zmienne statyczne -- deklarowane wewnątrz funkcji zapewniają deklarowane wewnątrz funkcji zapewniają

utrzymywanie swojej wartości pomiędzy kolejnymi wywołaniami utrzymywanie swojej wartości pomiędzy kolejnymi wywołaniami funkcji (niewidoczne na zewnątrz funkcji),funkcji (niewidoczne na zewnątrz funkcji),

�� zmienne lokalne zmienne lokalne –– utworzone wewnątrz funkcji, są usuwane w utworzone wewnątrz funkcji, są usuwane w momencie zakończenia wykonywania tej funkcji. momencie zakończenia wykonywania tej funkcji.

Składnia PHPSkładnia PHP : Zmienne : Zmienne superglobalnesuperglobalne

Lista zmiennych Lista zmiennych superglobalnychsuperglobalnych::

�� $GLOBALS$GLOBALS-- tablica wszystkich zmiennych globalnychtablica wszystkich zmiennych globalnych,,�� $_SERVER$_SERVER–– tablica zmiennych środowiskowych serwera,tablica zmiennych środowiskowych serwera,�� $_GET$_GET–– tablica zmiennych przekazanych do skryptu metodą tablica zmiennych przekazanych do skryptu metodą GETGET,,

© SKiTI 2017

26

�� $_GET$_GET–– tablica zmiennych przekazanych do skryptu metodą tablica zmiennych przekazanych do skryptu metodą GETGET,,�� $_POST$_POST–– tablica zmiennych przekazanych do skryptu metodą tablica zmiennych przekazanych do skryptu metodą POSTPOST,,�� $_COOKIE$_COOKIE–– tablica zmiennych tablica zmiennych cookiecookie,,�� $_FIELS$_FIELS –– tablica zmiennych związanych z ładowaniem pliku,tablica zmiennych związanych z ładowaniem pliku,�� $_ENV$_ENV–– tablica zmiennych środowiskowych,tablica zmiennych środowiskowych,�� $_REQUEST$_REQUEST–– tablica wszystkich zmiennych wprowadzonych przez tablica wszystkich zmiennych wprowadzonych przez

użytkownika (włączając w to użytkownika (włączając w to $_GET$_GET, , $_POST$_POST, , $_COOKIE$_COOKIE))�� $_SESSION$_SESSION–– tablica zmiennych sesji.tablica zmiennych sesji.

Składnia PHPSkładnia PHP : Operatory: Operatory

Operatory to symbole używane do manipulowania wartościami i Operatory to symbole używane do manipulowania wartościami i zmiennymi poprzez wykonywanie na nich operacji.zmiennymi poprzez wykonywanie na nich operacji.

Tab. Operatory arytmetyczne w PHPTab. Operatory arytmetyczne w PHP

© SKiTI 2017

27

Operator Nazwa Przykład

+ suma $a + $b

- różnica $a - $b

* iloczyn $a * $b

/ iloraz $a / $b

% reszta $a % $b

Składnia PHPSkładnia PHP : Operatory: Operatory

�� Operator ł ączenia ci ągówOperator ł ączenia ci ągówOperatora tego używa się do łączenia (dodawania) ciągów.Operatora tego używa się do łączenia (dodawania) ciągów.

<?php

$imi ę = 'Jan';$nazwisko = 'Kowalski';

© SKiTI 2017

28

$nazwisko = 'Kowalski';$imie_i_nazwisko = $imi ę . ' ' . $nazwisko;// zmienna powy ższa zawiera ci ąg 'Jan Kowalski'

?>

Składnia PHPSkładnia PHP : Operatory: Operatory

�� Operator przypisaniaOperator przypisania

<?php

$var = 5; //zmiennej $var jest przypisana warto ść 5

?>

© SKiTI 2017

29

?>

Składnia PHPSkładnia PHP : Operatory: Operatory

�� Łączone operator przypisaniaŁączone operator przypisaniaTo skrócony sposób zapisu operacji przeprowadzonej na zmiennej i To skrócony sposób zapisu operacji przeprowadzonej na zmiennej i

przypisanego do niej wyniku tej operacjiprzypisanego do niej wyniku tej operacji

Operator Przykład u życia Równoznaczne z

© SKiTI 2017

30

+= $a += $b $a = $a + $b

-= $a -= $b $a = $a - $b

*= $a *= $b $a = $a * $b

/= $a /= $b $a = $a / $b

%= $a %= $b $a = $a % $b

.= $a .= $b $a = $a . $b

�� Operatory zwi ększania i zmniejszaniaOperatory zwi ększania i zmniejszania

Operator Nazwa Operator$a++ Postinkrementacja Zwraca $a , a następnie zwiększa $a o

© SKiTI 2017

31

$a++ Postinkrementacja Zwraca $a , a następnie zwiększa $a o jeden

++$a Preinkrementacja Zwiększa $a o jeden i zwraca $a

$a-- Postdekrementacja Zwraca $a , a następnie zmniejsza $a o jeden

--$a Predekrementacja Zmniejsza $a o jeden i zwraca $a

�� Operatory porównaniaOperatory porównaniaOperator Nazwa Przykład Wynik

== równy $a == $b True, jeżeli $a jest równe $b

=== identyczny $a === $b True, jeżeli $a jest równe $b i są one tych samych typów

© SKiTI 2017

32

!= różny $a != $b True, jeżeli $a jest różne od $b

< mniejszy $a < $b True, jeżeli $a jest mniejsze od $b

> większy $a > $b True, jeżeli $a jest większe od $b

<= mniejszy lubrówny

$a <= $b True, jeżeli $a jest mniejsze lub równe $b

>= większy lubrówny

$a >= $b True, jeżeli $ajest większe lub równe $b

�� Operatory logiczneOperatory logiczneOperator Nazwa Przykład Wynik

and iloczyn logiczny $a and $b True, jeżeli $a i $b mają wartośćTrue

or Suma logiczna $a or $b True, jeżeli $a lub $b mają wartość True

xor różnica $a xor $b True, jeżeli $a lub $b mają

© SKiTI 2017

33

xor różnicasymetryczna

$a xor $b True, jeżeli $a lub $b mają Wartość True, ale nie razem

! negacja !$a True, jeżeli $a nie jest True

&& iloczyn logiczny $a && $b True, jeżeli $a i $b mają wartośćTrue

|| Suma logiczna $a || $b True, jeżeli $a jest mniejsze lub równe $b

Składnia PHPSkładnia PHP : struktury kontroluj ące: struktury kontroluj ące

�� Instrukcje warunkowe: Instrukcje warunkowe: instrukcjeinstrukcje if, else, elseifif, else, elseif

<?phpif (1 < 2) {

echo "To zostanie wydrukowane .< br />";

© SKiTI 2017

34

} else {echo "To nie zostanie wydrukowane.<br />";

}?>

Składnia PHPSkładnia PHP : struktury kontroluj ące c.d.: struktury kontroluj ące c.d.

<?php$var = 5;if($var == 1) {

echo" \ $var == 1<br />";

© SKiTI 2017

35

echo" \ $var == 1<br />";}elseif($var == 2) {

echo "\$var == 2<br />";}elseif ($var == 3) {

echo "\$var == 3<br />";}else {

echo "\$var nie jest 1, 2 ani 3<br />";}

?>

�� Instrukcje warunkowe: Instrukcje warunkowe: instrukcjainstrukcja switch switch -- upraszcza tworzenie upraszcza tworzenie wielokrotnych warunkówwielokrotnych warunków

<?php$var = 12;switch ($var){

case 0:

© SKiTI 2017

36

echo "zero<br />" ;break;

case 1:echo "jeden<br />";break;

case 2:echo "dwa<br />";break;

default:echo "Nie jest to zero, jeden ani dwa<br />";break;

}?>

Składnia PHPSkładnia PHP : Pętle: Pętle

�� Pętla while Pętla while oraz oraz do ... whiledo ... while

<?php//struktura: //while (warunek) wyra żenie

$var = 1;

© SKiTI 2017

37

$var = 1;while ($var <= 5) {

echo "$var<br />";$var++;

}do {

echo "$var<br />"; // wypisuje liczby od 6 do 1$var--;

} while ( $var > 0 );

?>

Składnia PHPSkładnia PHP : Pętle c.d.: Pętle c.d.

�� Pętla forPętla for : : Składnia: Składnia:

for (wyr1; wyr2; wyr3) instrukcjafor (wyr1; wyr2; wyr3) instrukcja

WartośćWartość pierwszegopierwszego wyrażeniawyrażenia ((wyrwyr11 )) jestjest obliczanaobliczana raz,raz, nana początkupoczątku pętlipętli..WartośćWartość drugiegodrugiego ((wyrwyr 22)) jestjest obliczanaobliczana nana początkupoczątku każdegokażdego przebieguprzebiegu pętlipętli..

© SKiTI 2017

38

WartośćWartość drugiegodrugiego ((wyrwyr 22)) jestjest obliczanaobliczana nana początkupoczątku każdegokażdego przebieguprzebiegu pętlipętli..JeżeliJeżeli będziebędzie onoono miałomiało wartośćwartość TrueTrue ,, pętlapętla będziebędzie sięsię nadalnadal wykonywaławykonywała iizostanązostaną wykonanewykonane instrukcjeinstrukcje ciałaciała pętlipętli.. JeżeliJeżeli drugiedrugie wyrażeniewyrażenie jestjest puste,puste,przyjmowaneprzyjmowane jest,jest, żeże mama onoono wartośćwartość TrueTrue .. NaNa końcukońcu każdegokażdego przebieguprzebiegupętlipętli wykonywanewykonywane jestjest trzecietrzecie wyrażeniewyrażenie ((wyrwyr33 )).. KażdeKażde zz tychtych trzechtrzech wyrażeńwyrażeńmoże być puste.może być puste.

<?phpfor($i = 0; $i < 10; $i++) {

echo $i . '<br/>'; }

?>

Składnia PHPSkładnia PHP : Pętle c.d.: Pętle c.d.

�� Pętla Pętla foreachforeach -- wygodnym sposobem na przeglądanie tablic.wygodnym sposobem na przeglądanie tablic.

Posiada dwa warianty składni:Posiada dwa warianty składni:foreachforeach (tablica as (tablica as zmienna_wartosczmienna_wartosc) instrukcja) instrukcja

foreachforeach (tablica as (tablica as zmienna_kluczzmienna_klucz => => zmienna_wartosczmienna_wartosc) instrukcja) instrukcja

© SKiTI 2017

39

Pierwsza postać pętli przebiega po podanej tablicy (Pierwsza postać pętli przebiega po podanej tablicy ($tablica$tablica ) i w każdym przebiegu ) i w każdym przebiegu wartość bieżącego elementu tablicy jest przypisywana do zmiennej wartość bieżącego elementu tablicy jest przypisywana do zmiennej ($($zmienna_wartosczmienna_wartosc ) a wskaźnik bieżącego elementu tablicy jest przesuwany. ) a wskaźnik bieżącego elementu tablicy jest przesuwany.

Druga postać realizuje to samo, ale dodatkowo do zmiennej Druga postać realizuje to samo, ale dodatkowo do zmiennej ($($zmienna_kluczzmienna_klucz ))jest przypisywany klucz bieżącej pozycji.jest przypisywany klucz bieżącej pozycji.

<?php$tablica = array("raz", "dwa", "trzy" );

foreach( $tablica as $wartosc ) {echo "Bie żąca warto ść to $wartosc<br />";

}?>

Składnia PHPSkładnia PHP : Pętle c.d.: Pętle c.d.

<?php$tablica = array( "Czerwony" => "#FF0000",

"Zielony" => "#00FF00","Niebieski" => "#0000FF" );

foreach ( $tablica as $klucz => $ wartosc ) {

© SKiTI 2017

40

foreach ( $tablica as $klucz => $ wartosc ) {echo "Warto ść szesnastkowa $klucz to $wartosc<br />" ;

}?>

Składnia PHPSkładnia PHP : break i : break i continuecontinue

Wyrażenie Wyrażenie breakbreak kończy wykonanie bieżącej konstrukcji sterującejkończy wykonanie bieżącej konstrukcji sterującej(pętli lub wyrażenia (pętli lub wyrażenia switchswitch ). ).

Wyrażenie Wyrażenie continuecontinue jest używane jedynie w pętlach.jest używane jedynie w pętlach.

© SKiTI 2017

41

Powoduje ono opuszczenie pozostałych instrukcji ciała pętli i rozpoczęcie nowej Powoduje ono opuszczenie pozostałych instrukcji ciała pętli i rozpoczęcie nowej iteracji.iteracji.

Składnia PHPSkładnia PHP : : includeinclude i i requirerequire

Poprzez możliwość użycia instrukcji Poprzez możliwość użycia instrukcji includeinclude, , requirerequire, , include_onceinclude_once oraz oraz require_oncerequire_once , PHP udostępnia mechanizmy na dołączanie jednego skryptu do , PHP udostępnia mechanizmy na dołączanie jednego skryptu do drugiego. Instrukcję drugiego. Instrukcję requirerequire wywołuje się identycznie, jak funkcję, jednakże funkcją wywołuje się identycznie, jak funkcję, jednakże funkcją nie jest. Różnica między nim, a nie jest. Różnica między nim, a includeinclude jest taka, że pierwsza w przypadku jest taka, że pierwsza w przypadku nieznalezienianieznalezienia pliku generuje komunikat pliku generuje komunikat Fatal error Fatal error zatrzymujący skrypt, druga tylko zatrzymujący skrypt, druga tylko

© SKiTI 2017

42

nieznalezienianieznalezienia pliku generuje komunikat pliku generuje komunikat Fatal error Fatal error zatrzymujący skrypt, druga tylko zatrzymujący skrypt, druga tylko ostrzeżenie. Istnieją ostrzeżenie. Istnieją także także include_onceinclude_once oraz oraz require_oncerequire_once , które są ignorowane, , które są ignorowane,

jeśli próbujemy po raz drugi dołączyć ten sam plik.jeśli próbujemy po raz drugi dołączyć ten sam plik.

<?phprequire_once('includes/application_top.php'); include('./includes/menu.inc.php');

?>

Składnia PHPSkładnia PHP : : FunkcjeFunkcje

Funkcja to zbiór operacji przypisujący danej grupie parametrów jakiś rezultat.Funkcja to zbiór operacji przypisujący danej grupie parametrów jakiś rezultat.Posiada własną nazwę, za pomocą której można się do niej odwoływać, pobiera Posiada własną nazwę, za pomocą której można się do niej odwoływać, pobiera dane i generuje wynik ponownie zwracany do programu. Funkcję definiuje się raz, dane i generuje wynik ponownie zwracany do programu. Funkcję definiuje się raz, najczęściej na początku skryptu, a później wywołuje się ją dowolną ilość razy, w najczęściej na początku skryptu, a później wywołuje się ją dowolną ilość razy, w zależności od potrzeb i konieczności. Nazwa funkcji może się składać z małych lub zależności od potrzeb i konieczności. Nazwa funkcji może się składać z małych lub dużych liter, cyfr i znaków podkreślenia, natomiast musi się zaczynać od litery lub dużych liter, cyfr i znaków podkreślenia, natomiast musi się zaczynać od litery lub

© SKiTI 2017

43

dużych liter, cyfr i znaków podkreślenia, natomiast musi się zaczynać od litery lub dużych liter, cyfr i znaków podkreślenia, natomiast musi się zaczynać od litery lub znaku podkreślenia. W przeciwieństwie do zmiennych nazwa funkcji nie musi znaku podkreślenia. W przeciwieństwie do zmiennych nazwa funkcji nie musi zaczynać się od znaku zaczynać się od znaku $$ ..

<?php//Definicja funkcji:function nazwa (argument1, argument2, /* ... */ argu mentN) {instrukcja;return warto ść_zwracana;

}?>

Składnia PHPSkładnia PHP : Funkcje c.d.: Funkcje c.d.

<?php

$a = 5;$b = 3;

function suma($a, $b){

© SKiTI 2017

44

{return $a + $b;

}

echo suma($a, $b); // 8?>

PHP PHP -- obsługa formularzyobsługa formularzyFormularze należą do podstawowych narzędzi umożliwiających

komunikację skryptu PHP z przeglądarką.

Dane z formularzy mogą być wysyłane na dwa sposoby:

© SKiTI 2017

45

• metodą GET,• metodą POST.

Obsługa formularzy Obsługa formularzy –– metoda GETmetoda GET

Polega na umieszczeniu par parametr=wartość w adresie URL strony, np.:

http://index.html?jezyk=pl&strona=oferta

© SKiTI 2017

46

Cechy charakterystyczne dla metody GET:• dane wysyłane tą metoda dodawane są do adresu URL,• długość wysyłanych danych jest ograniczona, bowiem ograniczona jest

długość adresu URL,• dane umieszczane są w tablicy asocjacyjnej $_GET.

Metodę tę należy wykorzystywać w przypadku, gdy skrypt nie wykonuje operacji mających efekty uboczne (np. dodawanie lub usuwanie rekordów). W przeciwnym wypadku roboty indeksujące stronę mogą „niechcący” wykonywać niebezpieczne operacje na serwerze.

Obsługa formularzy Obsługa formularzy –– metoda GET c.d.metoda GET c.d.<html>

<head><title>Formularz HTML</title>

</head><body>

<form method="get" action="nazwa_skryptu.php" >Podaj imi ę: < input type="text " name="imie "/>< br />

© SKiTI 2017

47

Podaj imi ę: < input type="text " name="imie "/>< br />Podaj nazwisko: <input type="text" name="nazwisko"/> <br/><input type="submit" value="OK"/> </form>

</body></html>

<?phpecho 'Witaj, ' . $_GET['imie'] . ' ' . $_GET['nazwisko']. '!';

?>

Zawarto ść pliku : Zawarto ść pliku : nazwanazwa__skryptu.phpskryptu.php

Obsługa formularzy Obsługa formularzy –– metoda POSTmetoda POST

Z uwagi na większe możliwości i wyższy stopień bezpieczeństwa, jest najczęściej używaną metodą przesyłania danych.

Cechy charakterystyczne dla metody POST:

© SKiTI 2017

48

• nie narzuca ograniczenia ilości przesyłanych danych,• użytkownik nie może podejrzeć wysyłanych treści,• umożliwia przesyłanie plików,• dane umieszczane są w tablicy asocjacyjnej $_POST.

Obsługa formularzy Obsługa formularzy –– metoda POST c.d.metoda POST c.d.<html>

<head><title>Formularz HTML</title>

</head><body>

<form method="post" action=" nazwa_skryptu.php ">Podaj imi ę: < input type="text " name="imie "/>< br />

© SKiTI 2017

49

Podaj imi ę: < input type="text " name="imie "/>< br />Podaj nazwisko: <input type="text" name="nazwisko"/> <br/><input type="submit" value="OK"/> </form>

</body></html>

<?phpecho 'Witaj, ' . $_POST['imie'] . ' ' . $_POST['nazwisko' ]. '!';

?>

Zawarto ść pliku : Zawarto ść pliku : nazwanazwa__skryptu.phpskryptu.php

Obsługa formularzy Obsługa formularzy –– przykładyprzykłady

<input type="text" name="nazwa"/>

Skrypt otrzymuje $_POST['nazwa'] z warto ścią wpisan ą w pole formularza.

© SKiTI 2017

50

<input type="hidden" name="nazwa" value="dane_ukryte "/>

Skrypt otrzymuje $_POST['nazwa'] z warto ścią wpisan ą w danym znaczniku.

<input type="radio" name="nazwa" value="opcja 1"/><input type="radio" name="nazwa" value="opcja 2"/>

PHP otrzyma ( $_POST['nazwa'] ) warto ść tej pozycji, która została zaznaczona.

Obsługa formularzy Obsługa formularzy –– przykładyprzykłady

<input type="checkbox" name="nazwa" />

Jeśli pole jest zaznaczone, $_POST['nazwa'] zawiera ć będzie słowo " on".

© SKiTI 2017

51

<select name="nazwa">...</select>

$_POST['nazwa'] zawiera ć będzie warto ść wybranego z listy elementu.

<input type="submit" name="nazwa"/>

Zmienna $_POST['nazwa'] zostanie utworzona, je żeli akurat ten przycisk zostanie wci śnięty.

Obsługa formularzy Obsługa formularzy –– walidacja formularzywalidacja formularzy

Sprawdzanie poprawno ści tekstu wpisywanego przez u żytkowników jest jedn ą z istotnych czynno ści powtarzanych podczas przetwarzania danych z formularza.

Walidacja danych może być realizowana na dwa sposoby:

© SKiTI 2017

52

Walidacja danych może być realizowana na dwa sposoby:• po stronie klienta (przegl ądarka internetowa + JavaScript),• po stronie serwera (PHP).

UWAGA:Walidacja formularza po stronie klienta odbywa si ę w języku

JavaScript i ma na celu jedynie wygod ę użytkownika. Zabezpieczenia takie łatwo omin ąć. Nie wolno ich traktowa ć jako środka gwarantuj ącego bezpiecze ństwo serwisu.

Obsługa formularzy Obsługa formularzy –– walidacja formularzywalidacja formularzy

<?phpif (!is_numeric($_POST['wiek'])) {

echo 'Wiek musi by ć liczb ą!';} else {

//wprowadzone dane s ą poprawne}

© SKiTI 2017

53

}?>

Wykorzystując ogólnodostępne Wykorzystując ogólnodostępne materiały w Internecie pogłębić materiały w Internecie pogłębić

wiadomości związane z wiadomości związane z

ZADANIE DOMOWEZADANIE DOMOWE

© SKiTI 2017 54

wiadomości związane z wiadomości związane z możliwościamimożliwościami

wykorzystania PHP dla potrzeb wykorzystania PHP dla potrzeb budowy dynamicznych budowy dynamicznych serwisów internetowychserwisów internetowych

BibliografiaBibliografia

Przykładowa Literatura:Przykładowa Literatura:

� http://www.php.net

© SKiTI 2017 55

Dziękuję Dziękuję za uwagę !!!za uwagę !!!

© SKiTI 2017

Dziękuję Dziękuję za uwagę !!!za uwagę !!!

56