1 / 75

Technologie internetowe II

Technologie internetowe II. Dr Krzysztof Heller. Literatura. Meloni J.C.: PHP, MySQL i Apache dla każdego. Wydanie III, Helion, 2007 Lis M.: PHP i MySQL dla każdego, Helion, 2005 Leszek 'leon' Krupiński: Wykłady internetowe, 2007. Plan wykładu 1. Podstawowe elementy języka PHP.

chanel
Download Presentation

Technologie internetowe II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Technologie internetowe II Dr Krzysztof Heller

  2. Literatura • Meloni J.C.: PHP, MySQL i Apache dla każdego. Wydanie III, Helion, 2007 • Lis M.: PHP i MySQL dla każdego, Helion, 2005 • Leszek 'leon' Krupiński: Wykłady internetowe, 2007 Technologie internetowe II

  3. Plan wykładu 1 • Podstawowe elementy języka PHP. • Typy danych, stałe i zmienne, operatory i wyrażenia. • Instrukcje warunkowe i instrukcje pętli. • Tablice. Technologie internetowe II

  4. Podstawowe elementy języka PHP

  5. Język PHP • PHP - język skryptowy służący do rozszerzania możliwości stron internetowych. • składnia bardzo podobna do popularnych języków programowania C/C++, lecz uproszczona • wbudowana obsługa wielu popularnych baz danych • dzięki połączeniu z biblioteką GD możliwe jest także dynamiczne tworzenie obrazków GIF (starsze wersje GD) lub PNG (nowsze wersje) Technologie internetowe II

  6. Podstawy programowania PHP • Aby plik był rozpoznany przez serwer WWW jako skrypt PHP musi on mieć odpowiednie rozszerzenie. • Rozszerzenia są definiowalne w konfiguracji serwera WWW, zazwyczaj: • .php3 (dla PHP w wersji 3), • .php lub php4 (dla PHP w wersji 4), • .phtml (dla PHP w wersji starszej niż 3). • serwer będzie wiedział, że plik ten nie jest przeznaczony do bezpośredniego wyświetlenia (jak w przypadku plików HTML), ale że najpierw trzeba go przepuścić przez parser PHP Technologie internetowe II

  7. Podstawy programowania PHP • Jeśli zwykłemu plikowi HTML nadamy rozszerzenie .php, to zostanie on prawidłowo wyświetlony • parser PHP przetwarzając stronę ma 2 tryby pracy: • HTML, gdzie cała treść jest wyświetlana, bez przetwarzania, • PHP, gdzie treść jest traktowana jako skrypt do przetworzenia. • Do określenia w pliku co jest kodem HTML a co PHP służą specjalne znaczniki. Początkowo parser jest w trybie HTML. Aby przejść do trybu PHP można użyć jednego z czterech znaczników: 1. skrócone: <? echo ("to jest najprostsza metoda, podobna do SGML'u\n"); ?>; uwaga - short_open_tag = on 2. standardowe: <?php echo("jeśli serwujesz pliki XML, użyj tej metody\n"); ?&>; 3. skryptowe: <script language="php"> echo ("niektóre edytory (np. FrontPage) nie lubią przetwarzania instrukcji"); </script> 4. ASP: <% echo ("Możesz też użyć metody podobnej do tej z ASP"); %> <%= ; # To jest skrót dla "<%echo .." %>; uwaga – asp_tags = on Technologie internetowe II

  8. Podstawy programowania PHP • niby-funkcja echo • dla większości normalnych funkcji parametry trzeba podawać w nawiasach • w przypadku funkcji echo można je pominąć • "echo" jest elementem składni języka • służy do wysyłania tekstu podanego jako parametr do przeglądarki użytkownika • echo nie wysyła znaku końca linii, więc w miejscu końca linii trzeba wstawić '\n • funkcja print() – działanie podobne, zwraca wartość Technologie internetowe II

  9. Pierwszy program <?php echo "Witaj sieci!"; ?> lub <?php print ("Witaj sieci!„); ?> Technologie internetowe II

  10. Drugi program – łączenie z HTML <html> <head> <title>Skrypt PHP zawierający HTML</title> </head> <body> <b> <?php echo "witaj świecie"; ?> </b> </body> </html> Technologie internetowe II

  11. Składnia • Zakańczanie - umieszczenie na końcu każdej instrukcji (niekoniecznie linii) znaku średnika (';'). • można pominąć gdy jest przejście do trybu HTML • Komentarz – zaznaczanie tekstu nie będącego programem. Są 3 sposoby: • Znak // • Znak # • Pomiędzy znakami /* a */ • Przykład: <? echo „cokolwiek"; // jak w C/C++ echo „cokolwiek 2"; # jak w UNIX shell /* komentarza w kilku liniach */ ?> Technologie internetowe II

  12. Typy danych, stałe i zmienne, operatory i wyrażenia

  13. Zmienne • Zmienne oznacza się za pomocą znaku dolara ('$') przed identyfikatorem. • Zmienna jest inicjalizowana przy pierwszym jej użyciu. • Nazwy zmiennych muszą zaczynać się od litery (dużej lub małej) lub "underscore" (dolna kreska - '_') a dalej mogą się składać z dowolnej ilości liter, cyfr i znaków o kodzie ASCII powyżej 127. • Przy nazwach zmiennych ważna jest wielkość znaków - zmienne $Test i $test to dwie różne zmienne. • Zmienne są widoczne tylko wewnątrz funkcji lub skryptu, w którym się znajdują. Technologie internetowe II

  14. Przykłady użycia zmiennych <? $nazwa = 1; // Zmiennej "nazwa" przypisywana jest wartość liczbowa 1 $druga_nazwa = "Tekst"; /* Zmiennej "druga_nazwa" przypisany jest ciąg znaków "Tekst" */ $trzecia_nazwa = $nazwa; /* Zmiennej "trzecia_nazwa" przypisywana jest wartość zmiennej "nazwa" */ echo "To jest $druga_nazwa"; /* Powinien wyświetlić się napis "To jest Tekst" */ echo '$druga_nazwa'; // Powinien wyświetlić się napis "$druga_nazwa" echo $nazwa; // Powinna wyświetlić się cyfra 1 ?> Technologie internetowe II

  15. Typy zmiennych • liczby całkowite (integer) • liczby rzeczywiste (double) • ciągi (string) • tablice (array) • obiekty (object) • PHP potrafi konwertować zmienne całkowite zapisane w różnych formatach liczbowych: <? $a = 1234; # liczba dziesiętna $a = -123; # liczba ujemna $a = 0123; # liczba ósemkowa (równoznaczne z dziesiętnym 83) $a = 0x12; # liczba szesnastkowa (równoznaczne z dziesiętnym 18) ?> Technologie internetowe II

  16. Ustalenie typu • PHP sam ustala typ zmiennej, zależnie od kontekstu: <? $blah = "0"; // $blah jest ciągiem (ASCII 48) $blah++; // $blah jest ciągiem "1" (ASCII 49) $blah += 1; // $blah jest teraz wartością całkowitą (2) $blah = + 1.3; // $blah jest wartością rzeczywistą (1.3) $blah = 5 + "10 Malutkich Świnek"; // jest wartością całkowitą (15) $blah = 5 + "10 Małych Świń"; // jest wartością całkowitą (15) ?> Technologie internetowe II

  17. Zmiana typu • Podczas przypisywania zmiennej nowej wartości, poprzednia wartość jest oczywiście zamazywana. W takim przypadku typ zmiennej ustalany jest od nowa. • Jeśli jednak zachodzi potrzeba zmiany typu lub PHP błędnie rozpoznaje typ, to można tego dokonać za pomocą rzutowania (cast - efekt jest jednorazowy) lub za pomocą ustalenia typu - funkcja settype (efekt trwały). Technologie internetowe II

  18. Rzutowanie typu • Dozwolone typy rzutowań: • (int), (integer) - rzutuj do typu całkowitego • (real), (double), (float) - rzutuj do typu rzeczywistego • (string) - rzutuj do ciągu • (array) - rzutuj do tablicy • (object) - rzutuj do obiektu Technologie internetowe II

  19. Rzutowanie typu <?php $nieokreslona = 3.14; $chwila = (double) $nieokreslona; echo "czy ".$chwila." jest typu double? ".is_double($chwila)."<br/>"; // double $chwila = (string) $nieokreslona; echo "czy ".$chwila." jest typu string? ".is_string($chwila)."<br/>"; // string $chwila = (integer) $nieokreslona; echo "czy ".$chwila." jest typu integer? ".is_integer($chwila)."<br/>"; // integer $chwila = (double) $nieokreslona; echo "czy ".$chwila." jest typu double? ".is_double($chwila)."<br/>"; // double $chwila = (boolean) $nieokreslona; echo "czy ".$chwila." jest typu boolean? ".is_bool($chwila)."<br/>"; // boolean echo "<hr/>"; echo "pierwotny typ zmiennej $nieokreslona: "; echo gettype($nieokreslona); // double ?> Technologie internetowe II

  20. Ustalenie typu • Funkcja settype pobiera 2 argumenty. Pierwszym jest nazwa zmiennej do ustalenia typu, a drugim ciąg określający nowy typ zmiennej: • "integer" • "double" • "string" • "array" • "object" • Funkcja zwraca wartość "true" gdy wszystko poszło pomyślnie, w przeciwnym razie zwracana jest wartość "false". Technologie internetowe II

  21. Ustalenie typu <?php $nieokreslona = 3.14; echo "czy ".$nieokreslona." jest typu double? ".is_double($nieokreslona)."<br/>"; // double settype($nieokreslona, 'string'); echo "czy ".$nieokreslona." jest typu string? ".is_string($nieokreslona)."<br/>"; // string settype($nieokreslona, 'integer'); echo "czy ".$nieokreslona." jest typu integer? ".is_integer($nieokreslona)."<br/>"; // integer settype($nieokreslona, 'double'); echo "czy ".$nieokreslona." jest typu double? ".is_double($nieokreslona)."<br/>"; // double settype($nieokreslona, 'bool'); echo "czy ".$nieokreslona." jest typu boolean? ".is_bool($nieokreslona)."<br/>"; // boolean ?> Technologie internetowe II

  22. Testowanie typu <?php $testing; // deklaracja bez przypisania wartości echo "typ null? ".is_null($test); // sprawdza, czy wartość jest typu null $testing = 5; echo "typ integer? ".is_int($test); // sprawdza, czy wartość typu integer $testing = "five"; echo "typ string? ".is_string($test); // sprawdza, czy wartość typu string $testing = 5.024; echo "typ double? ".is_double($test); // sprawdza, czy wartość typu double $testing = true; echo "typ boolean? ".is_bool($test); // sprawdza, czy wartość typu boolean $testing = array('apple', 'orange', 'pear'); echo "tablica? ".is_array($test); // sprawdza, czy wartość typu array echo "wartość numeryczna? ".is_numeric($test); // sprawdza, czy wartość numeryczna echo "zasób? ".is_resource($test); // sprawdza, czy jest to zasób ?> Technologie internetowe II

  23. Zmienne predefiniowane (superglobalne) • W każdym skrypcie PHP dostępne jest kilka zmiennych, których wartość jest ustalana na podstawie zmiennych środowiskowych serwera WWW. • Dostępne są jak zwykłe zmienne - ze znakiem dolara przed nazwą. • Zmienne dzielą się na: • ustawiane przez serwer WWW • ustawiane przez PHP Technologie internetowe II

  24. Tablice • $_GET – zmienne przesłane do skryptu metodą GET • $_POST – zmienne przesłane do skryptu metodą POST • $_COOKIE – zmienne przesłane do skryptu metodą COOKIE • $_FILES – zmienne przesłane do skryptu przez wysłanie pliku • $_SERVER – wysłane nagłówki, ścieżkę do pliku, adres skryptu • $_ENV – wartości zmiennych środowiskowych serwera • $_REQUEST – zmienne przesłane do skryptu przez użytkownika • $_SESSION – zmienne zarejestrowane w aktualnej sesji Technologie internetowe II

  25. Zmienne ustawiane przez serwer WWW • 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. Jeśli skrypt pracuje na wirtualnym hoście, to zmienna przyjmie jako wartość nazwę wirtualnego hosta. • SERVER_SOFTWARE - Ciąg identyfikujący serwera podawany przy odpowiadaniu 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 - Metoda zapytania użyta do uzyskania dostępu do strony, np. 'GET', 'HEAD', 'POST', 'PUT'. • QUERY_STRING - Ciąg zapytania (jeśli takowy istnieje) za pomocą którego połączono się ze stroną. • DOCUMENT_ROOT - Katalog główny drzewa dokumentów spod którego skrypt jest wykonywany - jest to ustawienie z pliku konfiguracyjnego serwera. Technologie internetowe II

  26. Zmienne ustawiane przez serwer WWW • HTTP_ACCEPT - Nagłówek z aktualnego zapytania, jeśli taki istnieje. • HTTP_ACCEPT_CHARSET - Zawartość nagłówka "Accept-Charset" z aktualnego zapytania, jeśli taki istnieje, np. 'iso-8859-1,*,utf-8'. • HTTP_ENCODING - Zawartość nagłówka "Accept-Encoding" z aktualnego zapytania, jeśli taki istnieje, np. 'gzip'. • HTTP_ACCEPT_LANGUAGE - Zawartość nagłówka "Accept-Language" z aktualnego zapytania, jeśli taki istnieje, np. 'en'. • HTTP_CONNECTION - Zawartość nagłówka "Connection" z aktualnego zapytania, jeśli taki istnieje, np. 'Keep-Alive'. • HTTP_HOST - Zawartość nagłówka "Host" z aktualnego zapytania, jeśli taki istnieje. • HTTP_REFERER - Adres strony (jeśli taka była), która wskazała przeglądarkę do tej strony. Wartość ta jest ustawiana przez przeglądarkę - nie wszystkie to robią. Technologie internetowe II

  27. Zmienne ustawiane przez serwer WWW • HTTP_USER_AGENT - Zawartość nagłówka "User-Agent" z zapytania, jeśli taki istnieje. Jest to ciąg informujący o przeglądarce która została użyta do obejrzenia bieżącej strony, np. Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Można użyć funkcji get_browser() aby dopasować funkcjonalność strony do przeglądarki użytkownika. • REMOTE_ADDR - Adres IP z którego użytkownik ogląda bieżącą stronę. • REMOTE_PORT - Port używany do komunikacji pomiędzy użytkownikiem a serwerem. • SCRIPT_FILENAME - Ścieżka do aktualnie wykonywanego skryptu. • SERVER_ADMIN - Wartość podana dla opcji SERVER_ADMIN w konfiguracji serwera WWW. Jeśli skrypt działa na wirtualnym serwerze, to będzie to wartość podana dla tego wirtualnego serwera. • SERVER_PORT - Port na serwerze którego użyto do połączenia. Dla normalnych połączeń będzie to '80'. • SERVER_SIGNATURE - Ciąg zawierający wersję i nazwę wirtualnego hosta który jest dodawany do stron generowanych przez serwer. • SCRIPT_NAME - Zawiera ścieżkę do aktualnie wykonywanego pliku. Jest to przydatne do skyptów, które muszą wskazywać samego siebie. • REQUEST_URI - URI który został podany aby uzyskać dostęp do tej strony. Technologie internetowe II

  28. Zmienne ustawiane przez PHP • argv - Tablica argumentów przekazywanych do skryptu. Jeśli skrypt jest uruchamiany z linii poleceń, to zmienna ta daję 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 (query string). • argc - Zawiera liczbę parametrów podanych podanych do skryptu w linii poleceń (jeśli skrypt został wywołany z linii poleceń). • PHP_SELF - Nazwa pliku aktualnie wykonywanego skryptu, względna do katalogu głównego dokumentów. Ta zmienna jest niedostępna jeśli PHP jest uruchamiany z linii poleceń. • HTTP_COOKIE_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez HTTP cookies. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>. • HTTP_GET_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę GET. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>. • HTTP_POST_VARS - Tablica asocjacjna zmiennych przekazanych do skryptu przez metodę POST. Dostępna tylko jeśli włączone zostało śledzenie zmiennych przez ustawienie w konfiguracji PHP opcji track_vars lub komendą <?php_track_vars?>. Technologie internetowe II

  29. Stałe ustawiane przez parser • __FILE__ - Nazwa pliku ze skryptem który jest aktualnie przetwarzany. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany (o poleceniu include w dalszej części kursu), to podana zostanie nazwa pliku zainkludowanego, a nie pliku nadrzędnego. • __LINE__ - Numer linii w skrypcie która aktualnie jest przetwarzana. Jeśli stała ta użyta jest wewnątrz pliku który został zainkludowany, to podany zostanie numer linii przetwarzanej w pliku zainkludowanym. • PHP_VERSION - Ciąg reprezentujący wersję parsera PHP aktualnie używaną. • PHP_OS - Nazwa systemu operacyjnego na którym uruchamiany jest parser PHP. • TRUE - Logiczna wartość prawdy. • FALSE - Logiczna wartość fałszu Technologie internetowe II

  30. Stałe definiowane przez użytkownika <?php define("ROK", "2006"); echo "Mamy rok ".ROK; ?> Technologie internetowe II

  31. Operatory • Operatory - symbole, które służą do operacji na zmiennych. • Operatory dzielą się na: • operatory arytmetyczne, • operatory przypisania, • operatory operacji bitowych, • operatory porównania, • operator kontroli błędów, • operator wywołania (uruchamianie zewnętrznych programów), • operatory inkrementacji i dekrementacji, • operatory logiczne • operatory ciągu. Technologie internetowe II

  32. Operator przypisania, operator konkatenacji • Podstawowym operatorem przypisania jest symbol '='. • Zmiennej można przypisać także wartość innej zmiennej: $b = 5; $a = $b. • Zmiennym można przypisywać wartości innych zmiennych. • Wartości te można przypisywać kaskadowo, przy czym wartości przypisywane będą od prawej do lewej • Operator konkatenacji . np. „Ala”.”kot” -> Alakot Technologie internetowe II

  33. Operatory arytmetyczne Operator konkatenacji . np. „Ala”.”kot” -> Alakot Technologie internetowe II

  34. Operator przypisania Technologie internetowe II

  35. Operatory operacji bitowych Technologie internetowe II

  36. Operatory porównania Technologie internetowe II

  37. Operator kontroli błędów • Operator kontroli błędów ('@') powoduje, że wyrażenie przed którym postawiono ten znak nie spowoduje wyświetlenia się jakiegokolwiek błędu lub ostrzeżenia. <? /* Jeden z najczęstszych błędów SQL (za dużo o jeden apostrof) */ $res = @mysql_query ("select nazwa, kod from 'lista") or die ("Zapytanie się nie powiodło: błąd to ''"); ?> Technologie internetowe II

  38. Operator wywołania • Operator ten służy do uruchamiania zewnętrznych programów lub poleceń powłoki. • Wystarczy wpisać polecenie pomiędzy znaki odwróconego apostrofu ('`') aby zostało ono wykonane <? $wynik = `ls -l /home/`; echo $wynik; ?> • Po uruchomieniu tego skryptu wyświetlona zostanie zawartość katalogu /home na serwerze Technologie internetowe II

  39. Operatory inkrementacji i dekrementacji Technologie internetowe II

  40. Operatory inkrementacji i dekrementacji <? echo "<h3>Postinkrementacja"; $a = 5; echo "Powinno być 5: " . $a++ . "<br>\n"; echo "Powinno być 6: " . $a . "<br>\n"; echo "<h3>Preinkrementacja"; $a = 5; echo "Powinno być 6: " . ++$a . "<br>\n"; echo "Powinno być 6: " . $a . "<br>\n"; echo "<h3>Postdekrementacja"; $a = 5; echo "Powinno być 5: " . $a-- . "<br>\n"; echo "Powinno być 4: " . $a . "<br>\n"; echo "<h3>Predekrementacja;"; $a = 5; echo "Powinno być 4: " . --$a . "<br>\n"; echo "Powinno być 4: " . $a . "<br>;\n"; ?> Technologie internetowe II

  41. Operatory logiczne Technologie internetowe II

  42. Instrukcje warunkowe i instrukcje pętli

  43. Struktury kontrolne • Instrukcje warunkowe • Instrukcje pętli: • For • While • Do … while • Break • Instrukcja switch Technologie internetowe II

  44. Instrukcje warunkowe <? if(wyrażenie_warunkowe) instrukcja wykonywana jeśli spełniony zostanie warunek else if(inne_wyrażenie_warunkowe) instrukcja wykonywana jeśli spełniony zostanie drugi warunek, a pierwszy nie else instrukcja wykonywana jeśli nie zostanie spełniony żaden z warunków ?> • wyrażeniem warunkowym jest dowolne wyrażenie • za warunek uznawane jest wszystko co zwraca wartość, czyli wszystkie zmienne, wyrażenia logiczne, funkcje itp. • spełniony warunek - wartość większa od zera Technologie internetowe II

  45. Instrukcje warunkowe <?php $nastroj = "smutny"; if ($nastroj == "radosny") { echo "Hurrra, jestem w dobrym nastroju!";} else { echo "Mój nastrój jest $nastroj.";} ?> • Jeśli chcemy, aby po sprawdzeniu warunku wykonane zostało nie jedno, ale kilka poleceń, to te polecenia trzeba ująć w nawiasy klamrowe Technologie internetowe II

  46. Instrukcje warunkowe <?php $nastroj = "smutny"; if ($nastroj == "radosny") { echo "Hurrra, jestem w dobrym nastroju!";} else if ($nastroj == "smutny") { echo "Nie martw się, wszystko będzie dobrze!";} else { echo "Ani wesoły, ani smutny, ale $nastroj.";} ?> Technologie internetowe II

  47. Instrukcje warunkowe <? $a = 6; $b = 5; $c = 7; $d = 6; $e = 6; if( ($a > $b || $a > $c) && // Nawiasy klamrowe nie są potrzebne - to $d == $e ) // 2 linie ale jedna instrukcja echo 'Zmienna $a jest większa od $b a zmienna $d jest równa $e, '. 'więc ten tekst pokaże się.'; // Taka konstrukcja jest dozwolona ?> Technologie internetowe II

  48. Pętla for <? for( inicjalizacja zmiennych ; sprawdzenie warunku ; modyfikacja zmiennych) { blok wyrażeń } ?> Technologie internetowe II

  49. Pętla for – przykład 1 <?php for ($licznik=1; $licznik<=12; $licznik++) { echo "$licznik razy 2 to ".($licznik * 2)."<br>";} ?> Technologie internetowe II

  50. Pętla for – przykład 2 <?php for ($licznik=1; $licznik<=10; $licznik++) { $tymcz = 4000/$licznik; echo "4000 dzielone przez $licznik to... $tymcz<br>"; } ?> Technologie internetowe II

More Related