Sieci Komputerowe i Technologie Internetowe (SKiTI) · 2017-04-25 · ©SKiTI2017 Sieci Komputerowe...
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