<?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); 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); Projektowanie stron WWW Projektowanie stron WWW Wykład 5 Michał Dudkiewicz, WMiI UMK (jaymz@mat.umk.pl)
<?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); 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); Java Script (obsługa formularza walidacja danych) $t->addstring($string); $i = $m->add($t); $i->x = $x; $i->y = $y; $i->rot = $rot; $i->s = $scale; $i->rotateto($rot); 2 Projektowanie stron WWW
JavaScript walidacja formularza html Sprawdzanie poprawności danych po stronie klienta umożliwia ograniczenie ilości danych wysyłanych do serwera! Aby wysyłać tylko poprawne dane do serwera należy obsłużyć zdarzenie onsubmit onsubmit= return sprawdz_formularz(this) ; Dla każdego pola formularza, które powinno otrzymać określone dane należy zaprogramować odpowiednie zdarzenie umożliwiające sprawdzenie poprawności danych. Funkcja sprawdzająca powinna zwrócić wartość: false i wyświetlić stosowny komunikat o błędnych danych. 3
JavaScript walidacja formularza html Funkcja sprawdzająca czy zostało zaznaczone pole płeć: function sprawdz(f) { k=document.getelementbyid("k").checked; m=document.getelementbyid("m").checked; if ((!k)&&(!m)) { alert("proszę zaznaczyć płeć. " + "k - kobieta. " + "m - mężczyzna."); return false; } } 4
JavaScript walidacja formularza html Funkcja sprawdzająca czy wypełniono właściwie pole imię: function sprawdz(f) { var regex = /^[\ \.\,a-za-ząężźłńóśćąężźłńóść]{2,50}$/; wyn = regex.test(document.getelementbyid("imie").value); if(!wyn) { alert("proszę podać poprawne imię. " + "Imię musi zawierać od 2 do 50 liter. " + "Żadne znaki poza literami nie są dozwolone."); return false; } } 5
JavaScript walidacja formularza html Funkcja sprawdzająca czy został wybrany kraj z listy: function sprawdz(f) { lista = document.getelementbyid("kraj").selectedindex; if(lista==0) { alert("proszę wybrać kraj!"); return false; } } Ilość elementów listy: lista = document.getelementbyid("kraj"); ilosc = document.getelementbyid("kraj").length; alert(ilosc); 6
<?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); 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); PHP (odbieranie danych z formularza) $t->addstring($string); $i = $m->add($t); $i->x = $x; $i->y = $y; $i->rot = $rot; $i->s = $scale; $i->rotateto($rot); 7 Projektowanie stron WWW
PHP PHP obiektowy język programowania zaprojektowany do generowania stron internetowych w czasie rzeczywistym. PHP jest najczęściej stosowany do tworzenia skryptów po stronie serwera WWW, ale może być on również używany do przetwarzania danych z poziomu wiersza poleceń, a nawet do pisania programów pracujących w trybie graficznym (np. za pomocą biblioteki GTK+, używając rozszerzenia PHP-GTK). Pierwsza wersja PHP, rozpowszechniana pod nazwą PHP/FI (Personal Home Page/Forms Interpreter), została stworzona przez Rasmusa Lerdorfa w roku 1994 jako zestaw skryptów Perla służący do monitorowania internautów odwiedzających jego witrynę. Gdy ruch stał się zbyt duży, przepisał je w języku C, dodając przy tym nowe opcje. 8
PHP - możliwości PHP Hypertext Preprocesor skryptowy język programowania wykonywany po stronie serwera (ang. server-side) pozwala na tworzenie dynamicznych stron WWW (bazy, pliki) oprogramownieopensource skrypty PHP można zagnieżdżać w kodzie HTML i na odwrót składnia PHP bazuje na językach C, Java i Perl pozwala na budowę aplikacji z interfejsem graficznym (PHP-GTK) umożliwia współpracę z relacyjnymi bazami danych współpracuje z większością systemów operacyjnych 9
PHP - historia 8 czerwca 1995 roku autor udostępnił publicznie kod źródłowy (PHP Tools 1.0), a kilka miesięcy później projekt przekształcił się w zalążek znanego obecnie języka programowania, gdy został połączony z innym narzędziem Rasmusa Lerdorfa Form Interpreter, które dało drugi człon nazwy. W 1997 roku pojawiło się PHP/FI 2.0, posiadające wtedy kilka tysięcy aktywnych użytkowników na całym świecie oraz obsługujące 50 tys. domen. PHP 3 W 1997 roku projektem zainteresowali się dwaj izraelscy programiści: Zeev Suraski i Andi Gutmans. Zdecydowali wtedy, że przepiszą kod PHP całkowicie od nowa, korzystając z pomocy już istniejącej społeczności PHP. W czerwcu 1998 roku ogłosili PHP 3.0 jako następcę PHP/FI, którego dalszy rozwój został wtedy zatrzymany. 10
PHP - historia PHP 4 Zimą 1998 Zeev Suraski oraz Andi Gutmans jeszcze raz zabrali się za przepisywanie kodu źródłowego PHP, korzystając z doświadczeń nabytych przy pracach nad poprzednią wersją. Nowa, wersja, ukazała się w maju 2000 roku. PHP 5 W 2002 roku Zeev Suraski oraz Andi Gutmans ponownie rozpoczęli znaczącą modernizację silnika PHP mającą na celu dodanie do tego języka modelu obiektowego z prawdziwego zdarzenia. W lutym 2003 ukazała się pierwsza wersja alpha nowej wersji PHP oznaczonej numerem 5.0.0. Stabilna wersja ukazała się prawie półtora roku później, w lipcu 2004 roku. 11
PHP jak to działa? 1. Przeglądarka żąda dokumentu *.php 2. Serwer WWW przesyła żądanie do parsera PHP. 3. Parser znajduje żądany plik i przegląda go w poszukiwaniu kodu PHP. 4. Po znalezieniu kodu, wykonuje go, a uzyskany wynik (jeżeli taki jest) umieszcza w pliku w miejscu, gdzie znajdował się kod. 5. Nowy plik wyjściowy przesyłany jest do serwera WWW. 6. Serwer przesyła go do przeglądarki WWW. 7. Przeglądarka interpretuje dane i wyświetla je. Usługa WWW Serwer Parser PHP Przeglądarka Klient 12
PHP jak to działa? Skrypt może być umieszczany w osobnym pliku, lub w innym skrypcie np. (X)HTML Znacznik otwierający Znacznik zamykający Uwagi <?php?> zalecane <??> wymaga konfiguracji w pliku php.ini <?php Tutaj znajduje się kod interpretowany przez parserphp?> 13
PHP komentarz Komentarze // tak wygląda komentarz dla jednej linii # a tak wygląda inny komentarz w jednej linii dla powłok Unixowych /* A tak można komentować kilka linii */ Znak ucieczki \ Może być stosowany gdy np. znaki cudzysłowu znajdują się wewnątrz innej pary cudzysłowu. <?php echo "Mamy problem z tym \"super systemem\", który ciągle się zawiesza.";?> 14
PHP zmienne Zmienne w PHP Zmienne identyfikowane są przez nazwę. Nazwa składa się z liter (a-z, A-Z) i cyfr. Nazwa musi rozpoczynać się od litery lub znaku podkreślenia. Każdą nazwę poprzedza znak $. Nazwa nie może zawierać spacji. <?php $zmienna="dzisiaj jest ładny dzień"; echo "$zmienna";?> Sprawdź różnicę po zastąpieniu 3 linii poniższym kodem: echo '$zmienna'; 15
PHP zmienne Zmienne w PHP (skalarne) Liczby całkowite (integer) $a=552; $b=-23; Łańcuchy znaków (string) $dzien=123; $tekst="dzisiaj jest $dzien dzień roku."; echo "$tekst"; Zmienne logiczne (boolean) $klamiesz= false; Liczby zmiennoprzecinkowe (float, doubles, real) $a=1.552; $b=1.2e3; $c=7e-10; 16
PHP zmienne Typ zmiennej określany jest przez PHP w zależności od użytego kontekstu. Tablice $kolory[0] ="czerwony"; $kolory[1] ="niebieski"; $kolory[2] ="zielony"; foreach($kolory as $klucz=>$wartosc) { echo $wartosc..$klucz. <br /> ; } Tablica asocjacyjna $a = array(1=>2, owoc => banan, 3=> gruszka, 5=>0); 17
PHP zmienne Określanie typu zmiennej z kontekstu $test= TRUE; // boolean $test= "foo"; // string $test = 'foo'; // string $test = "12"; // string $test = 12; // integer $test = 12 + "3 słonie" //integer(15) $test = 12 + 3 słonie // błąd $test = 12.23 + "3 słonie" //real(15.23) $test = 12.23 + 3 słonie // błąd Ćwiczenie: sprawdź typ zmiennej za pomocą funkcji gettype($test) echo gettype($test); 18
PHP zmienne środowiskowe PHP - Zmienne środowiskowe Zmienne, które są wysyłane w żądaniu klienta do serwera np: $adres_ip=getenv("remote_addr"); $browser=getenv("http_user_agent"); lub $_SERVER["HTTP_USER_AGENT ]; GATEWAY_INTERFACE - informacja o specyfikacji CGI używanej przez serwer, np. 'CGI/1.1 SERVER_NAME - nazwa hosta serwera, na którym skrypt jest uruchamiany. SERVER_SOFTWARE identyfikuje serwer (software) odpowiadający na zapytania SERVER_PROTOCOL - nazwa i numer wersji protokołu, za pomocą którego wysłano zapytanie o stronę, np. 'HTTP/1.0'; REQUEST_METHOD zwraca informacje o typie zapytania np. 'GET', 'HEAD', 'POST', 'PUT' QUERY_STRING zwraca ciąg zapytania, wysłanego w żądaniu 19
PHP zmienne środowiskowe DOCUMENT_ROOT - katalog główny drzewa dokumentów spod którego skrypt jest wykonywany HTTP_ACCEPT - nagłówek aktualnego zapytania HTTP_ACCEPT_CHARSET typ akceptowanej strony kodowej w wysłanym żądaniu HTTP_ENCODING-zawartość nagłowka"accept-encoding" z aktualnego zapytania, jeśli taki istnieje, np. 'gzip' HTTP_ACCEPT_LANGUAGE typ akceptowanego języka w wysłanym żądaniu np. 'en' HTTP_CONNECTION - zawartość nagłowka"connection, np. 'Keep-Alive' 20
PHP zmienne HTTP_HOST - zawartość nagłówka "Host, HTTP_REFERER - adres strony, która przekierowała przeglądarkę do tej strony HTTP_USER_AGENT - zawartość nagłówka "User-Agent identyfikująca przeglądarkę, która została użyta do obejrzenia bieżącejstrony, użycie funkcji get_browser() pozwala dopasować funkcjonalność strony do przeglądarki użytkownika REMOTE_ADDR - adres IP klienta żądającego strony REMOTE_PORT - port przeglądarki klienta SCRIPT_FILENAME - ścieżka do aktualnie wykonywanego skryptu PHP_SELF - nazwa pliku aktualnie wykonywanego skryptu, względem katalogu głównego dokumentów 21
PHP zmienne SERVER_ADMIN - wartość podana dla opcji SERVER_ADMINw konfiguracji serwera WWW SERVER_PORT - port na serwerze, użyty do obsługi połączenia (standardowo 80) SCRIPT_NAME - zawiera ścieżkę do aktualnie wykonywanego pliku REQUEST_URI zwraca URI, który został podany, aby uzyskać dostęp do tej strony argv-tablica argumentów przekazywanych do skryptu, jeśli skrypt jest uruchamiany z linii poleceń, to zmienna ta daje dostęp do argumentów w stylu języka C, jeśli jest wywołany przez metodę GET, to zmienna ta zawierać będzie ciąg parametrów (tzw. querystring) argc - zawiera liczbę parametrów podanych do skryptu w linii poleceń (jeśli skrypt został wywołany z linii poleceń) 22
PHP operatory arytmetyczne Operatory arytmetyczne + operator dodawania - operator odejmowania * operator mnożenia / operator dzielenia % operator obliczający część ułamkową wyniku dzielenia dwóch liczb ++ operator inkrementacji -- operator dekrementacji $a++ inkrementacja przyrostkowa ++$a inkrementacja przedrostkowa Ćwiczenie: Sprawdź różnice pomiędzy poniższymi liniami kodu, dla $a=4; $b = ++$a; $b = $a++; 23
PHP operatory przypisania Operatory przypisania = przypisuje operandowi lewostronnemu wartość operandu prawostronnego += dodaje operand lewostronny i prawostronny, wynik przypisuje operandowi lewostronnemu -= odejmuje operand prawostronny od lewostronnego, wynik przypisuje operandowi lewostronnemu *= mnoży przez siebie oba operandy, wynik przypisuje operandowi lewostronnemu /= dzieli operand lewostronny przez operand prawostronny, wynik przypisuje operandowi lewostronnemu %= dzieli operand lewostronny przez operand prawostronny, część ułamkową wyniku przypisuje operandowi lewostronnemu Ćwiczenie: sprawdź działanie tych operatorów. $a=4; $b=6; $b+=$a; $b-=$a; $b*=$a; $b/=$a; itd. 24
PHP operatory porównania Operatory porównania == operator zwraca wartość logiczną true jeśli operandy są równe!= operator zwraca wartość logiczną true jeśli operandy nie są równe > operator zwraca wartość logiczną true jeśli operand lewostronny jest większy od operandu prawostronnego < operator zwraca wartość logiczną true jeśli operand lewostronny jest mniejszy od operandu prawostronnego >= operator zwraca wartość logiczną true jeśli operand lewostronny jest większy lub równy operandowi prawostronnemu <= operator zwraca wartość logiczną true jeśli operand lewostronny jest mniejszy lub równy operandowi prawostronnemu W powyższych porównaniach jeżeli relacja nie jest spełniona, to zwracana jest wartość logiczna false. 25
PHP operatory logiczne Operatory logiczne && operator koniunkcji, zwraca wartość logiczną true, jeśli oba operandy mają wartość true, w przeciwnym przypadku zwracana jest wartość false operator alternatywy, operator zwraca wartość logiczną falsetylko wtedy, gdy oba operandy mają wartość logiczną false, w przeciwnym przypadku zwracana jest wartość true! operator negacji, operator zwraca wartość logiczną true, jeśli operand ma wartość logiczną false, a wartość false, jeśli operand ma wartość logiczną true 26
PHP instrukcja warunkowa Instrukcja warunkowa if if(warunek ) { instrukcje PHP } else { instrukcje PHP } np.: $dzien=date("d"); if($dzien== "Mon") { echo "Jest poniedziałek"; echo "-zatem do roboty."; } else echo "Dobrze, że dzisiaj nie jest poniedziałek"; 27
PHP instrukcja warunkowa i operatory logiczne Warunki i operatory logiczne $login=ala; $haslo=ola; $login_test=ala; $haslo_test=ola; if($haslo==$haslo_test&&$login==$login_test) { echo"autoryzacja prawidłowa.<br/>witamy na naszej stronie"; } else { echo "Brak dostępu do strony"; } 28
PHP obsługa formularza <pre> <?php?> </pre> print_r($_post); Zmienne z formularza wysłanego metodą POST znajdują się w tablicy asocjacyjnej$_post. Przesyłane są zmienne, które w polach formularza mają określony parametr NAME. 29
Zakończenie http://www.mat.umk.pl/~jaymz/ 30