Akademia Górniczo-Hutnicza Wydzia In ynierii Mechanicznej i Robotyki Katedra Robotyki i Dynamiki Maszyn SIECI KOMPUTEROWE I BAZY DANYCH WICZENIE NR 8 Temat: PODSTAWY PHP. DYNAMICZNE STRONY WWW.
CEL WICZENIA: Poznanie podstaw j zyka skryptowego PHP, czenie skryptów z kodem HTML, poznanie podstawowych instrukcji i operatorów. 1. CZ TEORETYCZNA J zyk PHP (ang. Hypertext Preprocessor) jest j zykiem skryptowym, którego sk adnia jest zbli ona do j zyka C. Kod PHP umieszcza si w dokumencie HTML pomi dzy par znaczników lub php i nadaje zwyczajowo rozszerzenie pliku.php lub.php3. Skrypty PHP s wykonywane tylko w plikach z rozszerzeniami.php lub.php3 i tylko wtedy, gdy s otwierane z przegl darki poprzez danie odpowiedniego pliku z serwera. (nie mo na uruchamia strony z komputera lokalnego!) Poni ej przedstawiono mechanizm dzia ania stron ze skryptami: 1. Przegl darka WWW da dokumentu o rozszerzeniu.php 2. Serwer WWW sprawdza rozszerzenie i wysy a danie do parsera PHP 3. Parser PHP znajduje szukany plik i przegl da go w poszukiwaniu kodu PHP 4. Znaleziony kod jest wykonywany i uzyskane wyniki, (je li s ) umieszczone zostaj w jego miejscu 5. Tak zmieniony plik (czysty HTML) wysy any jest do serwera WWW 6. Serwer WWW wysy a zmieniony plik do przegl darki 7. Przegl darka dokonuje wizualizacji kodu HTML Ta metoda wykonywania kodu nazywana jest po stronie serwera (ang. Serwer-side), w odró nieniu od j zyka skryptowego Java wykonywanego po stronie klienta (ang. Client-side), lecz tak samo jak JavaScript umo liwia tworzenie dynamicznych stron www. Chc c po czy kod PHP z kodem HTML, nale y bezwzgl dnie pami ta, e musi on by oddzielony od HTML za pomoc znaczników np. //kod. Prostym przyk adem mo e by skrypt pokazuj cy informacje o konfiguracji PHP na serwerze za pomoc funkcji phpinfo(). przyk ad 1. (phpinfo.php) <HEAD> <TITLE> PHP INFO </TITLE> </HEAD> phpinfo(); Podobnie jak w j zyku C ka de polecenie PHP ko czy si znakiem ;. Opuszczenie tego znaku powoduje komunikaty o b dzie sk adni. Wspó istnienie kodu PHP i HTML mo e Podstawy PHP. Dynamiczne strony WWW. 2
odbywa si w ró ny sposób, po pierwsze kod ten mo e by umieszczony poza znacznikami HTML jak w przyk adzie 2 przyk ad 2. czenie PHP i HTML $tekst = to jest przykladowy tekst ; echo to jest tekst przyk adowy nr2 ; echo $tekst; <HEAD> <TITLE> Laczenie kodu PHP i HTML </TITLE> </HEAD> Lub osadzony w kodzie HTML jak w przyk adzie 3. przyklad 3. czenie PHP i HTML (zagnie d anie) <HEAD> <TITLE> Laczenie kodu PHP i HTML </TITLE> </HEAD> $tekst = to jest przyk adowy tekst ; echo to jest tekst przyk adowy nr2 ; echo $tekst; Kody z obu przyk adów s równowa ne, to znaczy, e wynik ich dzia ania jest dla ogl daj cego taki sam. Mo na te w dowolny sposób czy te metody, z regu y przygotowuj c w cz ci zewn trznej zmienne, wypisywane we w a ciwych miejscach w kodzie HTML w sposób pokazany w przyk adzie 3. Wynikiem dzia ania obu kodów jest wy wietlenie na ekranie najpierw tekstu to jest tekst przyk adowy nr2 a nast pnie to jest przyk adowy tekst. Krótki opis niektórych mo liwo ci j zyka: a) Pisanie na ekran Do wysy ania informacji na ekran s u y polecenie echo np. echo( wypisz ten tekst ); lub echo wypisz ten tekst ; mo na tak e u y funkcji printf w taki sam sposób jak w C; b) Uciekanie przed kodem Bardzo wa n spraw oprócz ko czenia polece rednikiem jest odwo ywanie za pomoc znaków ucieczki takich znaków jak cudzys owy. Gdy znaki cudzys owu znajduj si wewn trz innej pary znaków cudzys owu, to par wewn trzna nale y oddzieli od zewn trznej znakiem ucieczki (\). przyk ad 4. echo <p> W epopei Pan Tadeusz Adam Mickiewicz ; - le echo <p> W epopei \ Pan Tadeusz\ Adam Mickiewicz ; - dobrze c) Komentarze Komentarze PHP ró ni si od komentarzy HTML(<!-- xxx -->) i mog mie nast puj c posta : Podstawy PHP. Dynamiczne strony WWW. 3
przyk ad 5. (komentarze) // komentarz umieszczony w jednej linii # komentarz umieszczony w jednej linii /* komentarz aktualny do znaku zamykaj cego */ Komentowanie kodu znacznie poprawia czytelno oraz u atwia wykonanie modyfikacji w przysz o ci. d) Wstawianie plików poleceniem include Polecenie include pozwala na wstawienie (dos owne) w danym miejscu pliku innego pliku wskazanego cie k (w lokalnym systemie plików). Polecenie to pozwala na tworzenie dynamicznej zawarto ci pliku wynikowego w zale no ci od wyboru u ytkownika, co mo na wykorzysta przy tworzeniu systemów portalowych (patrz przyk ad 6). Stosowanie tego polecenia pozwala zmniejszy ilo kodu strony oraz przyspiesza jej tworzenie. przyk ad 6. <! plik index.php --> include( inc/menu.html ); // wstawienie pliku z zawarto ci menu <! plik menu.html w katalogu inc--> <a href= index.php?page=cv > moje cv </a> <a href= http://moja.strona.pl/info/ankieta.html > ankieta </a> e) Zmienne i operatory ZMIENNE: Zmienna to reprezentacja okre lonej warto ci, np. niebieski lub 1234.567 w pami ci komputera i pod okre lona nazw. Przypisanie warto ci do zmiennej pozwala odwo ywa si do tej zmiennej w innych miejscach skryptu, przy czym warto zmiennej pozostaje zawsze taka sama, je li u ytkownik jej nie zmieni. Aby utworzy zmienn nale y: - okre li nazw mo liwie dobrze opisuj c charakter zmiennej, mo na stosowa nazwy opisowe (np. imie, user_login itp.), warto pami ta o niestosowaniu polskich znaków oraz spacji. - przed wymy lon nazw nale y umie ci znak dolara ($),(np. $imie, $user_login itp.) Aby przypisa zmiennej warto nale y po nazwie wpisa znak równo ci i warto : $user_login = Jan ; <- koniecznie rednik Nale y pami ta, e du e i ma e litery s rozró niane w nazwach zmiennych $licznik, $LICZNIK i $Licznik to s ró ne zmienne. Dwoma g ównymi typami zmiennych s typ skalarny i tablicowy. Zmienne skalarne zawieraj jednocze nie tylko jedn warto, natomiast zmienne tablicowe zawieraj list warto ci i umo liwiaj odwo ywanie si do konkretnych elementów tej listy. Warto ci przypisywane do zmiennej s zazwyczaj jednego z nast puj cych typów: - liczby ca kowite - liczby zmiennoprzecinkowe podwójnej precyzji (1.2, 87.96444, 0.988864) Podstawy PHP. Dynamiczne strony WWW. 4
- a cuchy znaków, tekst i/lub informacje numeryczne umieszczone w podwójnym lub pojedynczym cudzys owie ( ul. malwowa 30, kod 30-234 ) Rozpoczynaj c pisanie skryptu nale y bardzo dok adnie przeanalizowa ile i jakich zmiennych b dzie potrzebne do zrealizowania jego funkcjonalno ci. Istnieje mo liwo przekazywania zmiennych do skryptów (ustawiania tych zmiennych przy wywo ywaniu skryptu). Daje to mo liwo dynamicznego sterowania zawarto ci strony. Zilustruje to poni szy przyk ad. przyk ad 7. (wykorzystanie zmiennych) <! plik menu.html --> <A href= index.php?id=buty > Buty </A><br> <A href= index.php?id=kurtki > Kurtki </A><br> menu <A href= index.php?id=spodnie > Spodnie </A><br> <!-- plik index.php --> Include menu.html ; if (isset($id)) echo <br><strong>$id</strong> ; else echo <br> <font color=\ red\ > Wybierz co! </font> ; <center><a href="index.php"> powrót do strony g ównej </a></center> W powy szym przyk adzie wybór opcji w pliku menu powoduje odmienne zachowanie si skryptu w pliku index.php. W instrukcji if wykorzystano wewn trzn funkcje PHP isset($zmienna) w celu okre lenia czy zmienna $id wyst puje w skrypcie. Brak takiej zmiennej wiadczy o wej ciu na stron index.php bez przej cia przez menu.html. W przypadku wej cia przez menu w skrypcie index.php zmienna $id b dzie ju zdeklarowana i b dzie mia a jedn z trzech warto ci. Dzi ki podaniu adresu w postaci index.php?id=buty automatycznie w skrypcie index.php b dzie widoczna zmienna id przechowuj ca warto a cucha buty. Po czenie tego mechanizmu z poleceniem include oraz instrukcj switch lub if... elseif... else umo liwia stworzenie elastycznego serwisu www z prze czanymi podstronami. Podstawy PHP. Dynamiczne strony WWW. 5
OPERATORY: Podstawow funkcj operatora jest zrobienie czego z warto ci zmiennej. Mo e to by przypisanie warto ci, zmiana warto ci lub porównanie kilku warto ci. G ówne typy operatorów to: 1. operatory przypisania: przypisuj warto do zmiennej, mog równie dodawa do bie cej warto ci zmiennej lub od niej odejmowa Operator Przyk ad Czynno += $a += 3 ; Zwi ksza warto zmiennej o 3 -= $a -= 3 ; Zmniejsza warto zmiennej o 3.= $a.= a cuch ; Dopisuje do zmiennej a cuch tekstowy (zmienna musi by a cuchowa) ++, -- $a++; Zwi ksza zmienn o 1 2. operatory arytmetyczne: s u do dodawania, odejmowania, dzielenia i mno enia Operator Przyk ad Czynno + $b = $a + 3; $c = $b + $a; Dodaje warto ci - $b = $a - 3; $c = $b - $a; Odejmuje warto ci * $b = $a * 3; $c = $b * $a; Mno y warto ci / $b = $a / 3; $c = $b / $a; Dzieli warto ci % $b = $a % 3; Zwraca reszt 3. operatory porównania: porównuj dwie warto ci i zwracaj prawd lub fa sz, na podstawie zwróconej warto ci mo na nast pnie wykonywa dalsze dzia ania Operator Definicja == (podwójne równa si ) Równe!= Nie równe > Wi ksze ni < Mniejsze ni >= Wi ksze lub równe <= Mniejsze lub równe 4. operatory logiczne: okre laj status warunków Operatory logiczne pozwalaj skryptowi okre li status warunków(takich jak opisane wy ej porównania). W kontek cie instrukcji if else lub while operatory logiczne wykonuj okre lony kod wed ug tego, które warunki s prawdziwe, a które fa szywe. Do podstawowych nale y zaliczy && (logiczne i) oraz (logiczne lub) i!(negacja). f) Tablice S u do przechowywania listy warto ci. Zmienn tablicow tworzymy poprzez podanie nazwy i znaku dolara oraz indeksu: $dni_tygodnia[0] = poniedzia ek ; $dni_tygodnia[1] = wtorek ; Podstawy PHP. Dynamiczne strony WWW. 6
$kolory[ red ]= #FF0000 ; $kolory[ green ]= #00FF00 ; // itd. Pierwszy element tablicy ma zawsze indeks 0. Do elementów tablicy mo emy si odwo ywa : echo $dni_tygodnia[1] ; lub $day = 0; echo $dni_tygodnia[$day] ; g) a cuchy znaków Seria zgrupowanych znaków otoczona znakami cudzys owu jest nazywana a cuchem znaków: $a = jeste moim czytelnikiem numer 5 ; Istnieje tak e mo liwo odwo ywania si w a cuchu do innych zmiennych, które zostan zast pione warto ci w momencie wykonywania skryptu. $numer = 5; $a = jeste moim czytelnikiem numer $numer ; h) Struktury steruj ce Konstrukcja if elseif else Konstrukcja ta wykonuje instrukcje na podstawie warto ci testowanego wyra enia. przyk ad 8. (instrukcja warunkowa) if ( $a == 10 ) // TRUE wykonaj ten kod echo a= 10 ; // ewentualnie else // FALSE wykonaj ten kod echo a nie równe 10 ; Posprawdzaniu zmiennej $a, je li b dzie ona mia a warto 10 (warunek b dzie mia warto TRUE) zostanie wykonany kod TRUE Chile przeciwnym wypadku kod FALSE. Blok else jest opcjonalny, natomiast w warunku mo emy okre li dowoln kombinacj logiczn ró nych warunków. Drugim wariantem instrukcji if jest instrukcja if elseif else, której przyk ad przedstawiono poni ej. przyk ad 9. if ( $a == 10 ) // TRUE wykonaj ten kod echo a = 10 ; // ewentualnie elseif ( $b == 8 ) // TRUE drugi warunek, wykonaj ten kod echo b = 8 ; else // FALSE drugi warunek. echo a nie równe 10 i b nie równe 8 ; Podstawy PHP. Dynamiczne strony WWW. 7
P tla while Inaczej ni w przypadku instrukcji if elseif else, w której ka de wyra enie jest oceniane raz i na jego podstawie wykonywana jest akcja, instrukcja while kontynuuje p tl a warunek osi gnie warto FALSE. Innymi s owy p tla jest kontynuowana dopóki warunek ma warto TRUE. przyk ad 10. (p tla while) $a = 0; while ( $a <=10 ) echo a równa si $a<br> ; $a++; W powy szym przyk adzie zmienna $a wy wietlana jest na ekranie do momentu, kiedy jej warto nie przekroczy warto ci 10. Warto jednak pami ta, e przypadkowy b d mo e spowodowa niesko czone dzia anie p tli. (co stanie si gdy zamiast $a++ napiszemy $a--?). Petla for P tla for tym ró ni si od petli while e musimy zna dok adn ilo wykona p tli. Poni ej przedstawiono przyk adow sk adni takiej p tli. przyk ad 11. (p tla for) $max_i = 25; for ($i=0;$i<$max_i;$i++) echo i ma warto $i ; Zamiast $i++, mo emy wpisa $i+=1 lub $i+=2 itd. Instrukcja Switch Instrukcja switch pozwala na sterowanie przebiegiem programu poprzez wybór w a ciwego fragmentu kodu. przyk ad 12. (instrukcja switch) $wariant = 0; //(lub 1,2 itd.) // gdzie w programie, najcz ciej wybór u ytkownika switch ( $wariant ) case 0: echo wybra e wariant $wariant ; break; case 1: echo wybra e wariant $wariant ; break;. default: // wariant domy lny gdy warto zmiennej nie ma swojego case a Podstawy PHP. Dynamiczne strony WWW. 8
echo uzyto wariantu domy lnego ; break; 2. ZADANIA DO WYKONANIA a) Korzystaj c z wbudowanej funkcji rand(min,max) zwracaj cej liczb losow z przedzia u (min,max), napisa skrypt, który: - b dzie przechowywa wyraz sk adaj cy si z 9-ciu liter. - dokona losowania ilo ci powtórze g ównej p tli, - nast pnie dokona losowania dwóch liczb z przedzia u (1-3) i w zale no ci od warto ci funkcji okre lonej na wylosowanej parze liczb wy wietli w a ciwy komunikat. Funkcj wybieramy poprzez losowanie liczby 0 lub 1 i dla 0 wybieramy wynik = A + B a dla 1 wynik = A * B. Nast pnie z wyrazu 9-cio literowego odczytujemy liter z pozycji okre lonej przez wynik i wypisujemy komunikat przynale ny tej literze. Wyniki dzia ania skryptu nale y wy wietli na dwa sposoby: 1- bezpo rednio w trakcie wykonywania 2- gromadz c je w zmiennej, której zawarto nale y wypisa przy pomocy polecenia echo. b) Stworzon na poprzednich zaj ciach stron nale y zmodyfikowa tak by imitowa a zachowanie portalu internetowego. W tym celu nale y stworzy pliki: - menu (.htm lub.inc lub dowolne inne) - baner (.htm lub.inc lub dowolne inne) - stopka (.htm lub.inc lub dowolne inne) - formularz (.htm lub.inc lub dowolne inne) Nast pnie nale y z poprzednio utworzonej strony index.html wyci fragmenty nale ce do ka dego z nowo utworzonych plików. (uwaga. nowe pliki nie musz ju zawiera znaczników html,body,head jedynie znaczniki dotycz ce danego fragmentu tre ci). Ostatnim elementem jest odpowiednia zmiana adresów w menu, dodanie instrukcji umo liwiaj cej w czanie w a ciwych stron w odpowiednie miejsca tabeli. Mechanizm prze czania stron zosta przedstawiony w cz ci teoretycznej laboratorium. Wygl d przyk adowej strony pokazano poni ej: c) Skrypt b d cy wynikiem pierwszego zadania nale y umie ci w swoim katalogu, a odno nik do niego nale y umie ci w menu na swojej stronie. Podstawy PHP. Dynamiczne strony WWW. 9