Konfiguracja Serwera APACHE. Paweł Wąsik Wojciech Draczyński



Podobne dokumenty
Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Należy ściągnąć oprogramowanie Apache na platformę

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Bazy Danych i Usługi Sieciowe

Autor: Joanna Karwowska

Zmienne i stałe w PHP

PHP: bloki kodu, tablice, obiekty i formularze

Lekcja 1. Składnia języka zmienne i podstawowe instrukcje PHP. Do wyświetlania tekstu służy instrukcja echo echo Hello world ;

Systemy internetowe. Wykład 3 PHP. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

ZMIENNE. Podstawy PHP

Zaawansowane bazy danych i hurtownie danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Aplikacje WWW - laboratorium

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Wykład 5: PHP: praca z bazą danych MySQL

5. Współpraca z bazą danych MySQL

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Internetowe bazy danych

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Podstawy programowania skrót z wykładów:

PHP i MySQL dla każdego / Marcin Lis. Wyd. 3. Gliwice, cop Spis treści

Systemy internetowe Wykład 3 PHP

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Internetowe bazy danych

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Języki programowania wysokiego poziomu. PHP cz.2.

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

APLIKACJE INTERNETOWE 5 PHP W P R O W A D Z E N I E D O P R O G R A M O W A N I A

Oczywiście plik musi mieć rozszerzenie *.php

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

1 Podstawy c++ w pigułce.

Dlaczego PHP? - zalety

Zmienne, stałe i operatory

Podstawy programowania III WYKŁAD 2

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Obiektowe bazy danych

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

6. Bezpieczeństwo przy współpracy z bazami danych

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Ćwiczenie 1. Wprowadzenie do programu Octave

Aplikacje WWW - laboratorium

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Języki skryptowe w programie Plans

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

PHP. PHP: Hypertext Preprocessor. mgr inż. Remigiusz Pokrzywiński

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Instalacja MySQL.

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Smarty PHP. Leksykon kieszonkowy

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Wykład 8: klasy cz. 4

Podstawy Programowania C++

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

1 Podstawy c++ w pigułce.

Programowanie internetowe

Wykład 2 Składnia języka C# (cz. 1)

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

JAVASCRIPT PODSTAWY. opracowanie: by Arkadiusz Gawełek, Łódź

Wprowadzenie do Doctrine ORM

Rys. 1. Widok uruchomienia polecenia apt-get install build-essential. Rys. 2. Widok uruchomienia polecenia apt-get install apache2

Umieszczanie kodu. kod skryptu

Podstawy programowania w języku C

Praca Magisterska "System zdalnego składania ofert kupna i sprzedaży za pośrednictwem Internetu" AUTOR PROMOTOR

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Podstawy i języki programowania

Podstawy Programowania Podstawowa składnia języka C++

2 Przygotował: mgr inż. Maciej Lasota

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

KOTLIN. Język programowania dla Androida

LibreOffice Calc VBA

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

Krótki kurs JavaScript

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Praca w programie dodawanie pisma.

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Mikrokontroler ATmega32. Język symboliczny

Bazy Danych i Usługi Sieciowe

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Kurs PHP. Literatura. Zagadnienia: Wprowadzenie

Transkrypt:

Konfiguracja Serwera APACHE Paweł Wąsik Wojciech Draczyński

Serwer Apache Apache jest otwartym najszerzej stosowanym serwerem HTTP dostępnym dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD, Microsoft Windows).

Aby nasz serwer obsługiwał dodatkowe funkcje musimy zainstalować odpowiednie moduły, wraz z modułami dostarczane, są pliki konfiguracji z dyrektywami konfiguracyjnymi dla tego modułu. Apache domyślnie działa z uprawnieniami zwykłego użytkownika (http), dlatego trzeba zadbać o to by demon miał prawo do odczytu plików ze stronami WWW. Bardzo pożyteczną cechą Apache jest możliwość tworzenia lokalnych plików konfiguracji, dzięki którym można modyfikować niektóre opcje konfiguracji. Pliki te mają nazwę.htaccessi może ich używać każdy, kto ma tylko dostęp do katalogu ze stroną WWW. Wygoda w ich używaniu polega na tym, że nie ma potrzeby restartowania demona po każdorazowej ich modyfikacji.

Podstawowe pliki konfuracji Apache działa jako demon HTTP (httpd), a jego tradycyjna konfiguracja znajduje się w plikach: httpd.conf -jest to podstawowy plik konfiguracyjny, zawierający parametry związane z protokołem HTTP i działaniem serwera srm.conf - plik ten zwyczajowo zawiera ustawienia określające sposób odpowiadania przez serwer na zapytania klientów access.conf - definiujący zazwyczaj kontrolę dostępu do serwera i udostępniane przezeń informacje

/etc/httpd/httpd.conf - w tym katalogu przechowywane są pliki konfiguracyjne demona. Po instalacji poszczególnych składników Apache, właśnie w tym miejscu naleŝy szukać plików konfiguracyjnych od nich. /home/services/httpd - pliki domyślnej strony Apache, katalog z komunikatami o błędach oraz katalog przeznaczony dla skryptów cgi. /usr/lib/apache - moduły potrzebne do działania Apache oraz poszczególnych jego składników. Warto o tym pamiętać w przypadku problemów z uruchomieniem usługi. /usr/sbin - jest to katalog naleŝący stricte do Apache, jednak warto o nim wspomnieć ze względu na to iŝ przechowywane są w nim jego binaria.

Konfiguracja httpd.conf podstawowa konfiguracja # główny katalog serwera (katalog, w którym jest zainstalowany serwer) #określa połoŝenie plików serwera w drzewie katalogów ServerRoot sciezka_do_katalogu_glownego_serwera #podany w sekundach czas oczekiwania na odebrania Ŝądania GET maksymalny czas pomiędzy odebraniem kolejnych pakietów Ŝądania PUT lub POST; ilość sekund przed timeoutem Timeout 300 # określa czy naleŝy podtrzymać połączenie pomiędzy Ŝądaniami od klienta KeepAlive On # maxymalna ilość połączeń z jednego komputera. Określa, ile Ŝądań będzie obsłuŝonych podczas jednego połączenia z klientem. MaxKeepAliveRequests 100

Konfiguracja httpd.conf podstawowa konfiguracja # Domyślnie serwer nasłuchuje na wszystkich portach. Dyrektywa Listen pozwala ograniczyć działanie serwera do konkretnego portu/portów (lub adresu IP). JeŜeli chcemy aby serwer nasłuchiwał na kilku portach/adresach, naleŝy uŝyć tej dyrektywy kilkakrotnie. Listen 80 Listen 8004 UWAGA!! Od wersji 2.0 serwera, dyrektywa ta jest wymagana. W przypadku jej braku w konfiguracji, serwer nie uruchomi się. # status generowany przez serwer - on rozszerzony, off podstawowy ExtendedStatus On # port serwera Port 80

Konfiguracja httpd.conf podstawowa konfiguracja # e-mail administratora serwera, używany przy generowaniu stopki serwera ServerAdmin adres_email@domena.com # nazwa serwera ServerName Serwer www # główna strona serwera DocumentRoot sciezka

Konfiguracja httpd.conf podstawowa konfiguracja # określanie parametrów głównego katalogu, parametry są dziedziczne <Directory /> Options FollowSymLinks AllowOverride None </Directory> # katalog roota, głównej strony <Directory sciezka">

Konfiguracja httpd.conf Wirtualne Hosty Wykorzystywane do zawarcia grupy dyrektyw które będą stosowane tylko do określonego wirtualnego hosta. <VirtualHost 10.1.2.3> ServerAdmin webmaster@host.domena.com DocumentRoot /www/docs/host.domena.com ServerName host.domena.com ErrorLog logs/host.domena.com-error_log TransferLog logs/host.domena.com-access_log </VirtualHost> Jakakolwiek dyrektywa moŝe być uŝyta wewnątrz dyrektywy VirtualHost.

Część 1. PHP PHP I MYSQL W.Draczyński P.Wąsik

1. Wstęp PHP język skryptowy działający po stronie serwera Kod PHP jest interpretowany przez serwer WWW i tworzy on HTML lub inne wyniki widoczne dla odwiedzającego stronę internetową

Składnia i mechanizmy PHP Oparta na innych językach programowania (C, C++, Java, Perl) Dziedziczenie Atrybuty i metody prywatne oraz chronione Klasy i metody abstrakcyjne Interfejsy, konstruktory, destruktory

MoŜliwości wyskoczenia z HTML a 1. <? echo ( włączone krótkie znaczniki );?> 2. <?php echo ( przy uŝywaniu dokumentów XHTML i XML );?> 3. <script language= php > echo ( hello FrontPage ); </script> 4. <% echo ( znaczniki w stylu ASP ); %>

2. Typy danych Boolean TRUE lub FALSE Integer Z = {, -2, -1, 0, 1, 2, } $a = 1234; # liczba dziesiętna $a = -123; # ujemna liczba dziesiętna $a = 0123; # liczba ósemkowa (odpowiednik dziesiętnej 83) $a = 0x1A; # liczba szesnastkowa (odpowiednik dziesiętnej 26) Float $a = 1.234; $a = 1.2e3; $a = 7E-10;

Typy danych c.d. String łańcuch znaków echo 'przykładowy tekst'; echo 'Wewnątrz łańcuchów znaków mogą się znajdować przełamania linii, o właśnie takie.'; echo 'Adam powiedział: "I\'ll be back"'; // wynik:... "I'll be back" echo 'Czy na pewno chcesz skasować C:\\*.*?'; // wynik:... skasować C:\*.*? echo 'Czy na pewno chcesz skasować C:\*.*?'; // wynik:... skasować C:\*.*? echo 'Próbuję w tym miejscu wprowadzić: \n znak nowej linii'; // wynik:... wprowadzić: \n znak nowej linii

Typy danych c.d. String w podwójnych cudzysłowach Zmienne zapisane w podwójnych cudzysłowach zostają zamienione na ich wartości Znaki specjalne: sekwencja znaczenie \n Nowa linia \r Powrót karetki \t Tabulacja pozioma \\ Odwrotny ukośnik \$ Znak dolara \ Cudzysłów podwójny

Typy danych c.d. String przykłady uŝywania $str1 = "text1"; $str2 = "text2"; $liczba = 12; łączenie łańcuchów $str3 = $str1. $str2 text1text2 wyświetlanie wartości zmiennych $str3 = $str1. " = $liczba" text1 = 12 pobranie 7-tego znaku łańcucha $zn = $str3{6} e pobranie ostatniego znaku łańcucha $zn = $str3{strlen($str3)-1} 2

Typy danych c.d. Tablice indeksowane numerycznie Tablice nie muszą być inicjowane ani tworzone z wyprzedzeniem. Powstają one automatycznie przy pierwszym zastosowaniu. Inicjacja tablic indeksowanych numerycznie $tablica = array( Element1, Element2, Element3 ); Dostęp do zawartości tablicy $str2 = $tablica[1]; Element2 Modyfikacja elementu tablicy $tablica[0] = el_1 ; Dopisanie elementu do istniejącej tablicy $tablica[3] = Element4 ;

Typy danych c.d. Tablice z innymi indeksami PHP pozwala na zastosowanie tablic, w których można przypisać dowolną wartość dowolnemu indeksowi oraz kluczowi. Inicjacja tablicy $tablica = array( el1 =>123, el2 =>32, el3 =>0.3); Dostęp do zawartości tablicy $element_1 = $tablica[ el1 ]; 123 Modyfikacja elementu tablicy $tablica[ el3 ] = 0.35; Dopisanie elementu do istniejącej tablicy $tablica[ el4 ] = 443;

3. Zmienne Nazwa zmiennej poprzedzona jest znakiem dolara $ PHP rozróŝnia wielkości liter w nazwach zmiennych Nazwy zmiennych nie mogą zaczynać się cyframi Dozwolone jest uŝywanie polskich znaków (naleŝą do ASCII)

Zmienne c.d. Przypisanie zmiennych moŝliwe jest poprzez wartość (PHP3) oraz przez referencję (PHP4) Przypisanie przez wartość: $zm1 = hello ; Przypisanie przez referencję: $zm2 = &$zm1;

Zmienne c.d. Zmienne predefiniowane Od wersji PHP 4.2, zmienne przekazywane metodami GET, POST oraz zmienne serwera nie są domyślnie umieszczane w zasięgu globalnym zostały umieszczone w tzw. tablicach superglobalnych. Udostępnianie tych zmiennych w zasięgu globalnym moŝliwe jest poprzez ustawienie dyrektywy konfiguracyjnej register_globals na ON w pliku konfiguracyjnym php.ini

Zmienne c.d. Superglogalne tablice $GLOBALS zawiera referencje do zmiennych dostępnych w zasięgu globalnym skryptu, kluczami tablicy są nazwy zmiennych globalnych $_SERVER zmienne tworzone przez serwer $_GET zmienne przekazywane metodą GET $_POST zmienne przekazywane metodąą POST $_COOKIE zmienne dostarczone przez ciasteczka $_FILES zmienne dostarczone przez przesłanie plików do serwera metodą POST $_ENV zmienne dostarczone przez środowisko operacyjne $_REQUEST zmienne dostarczone przez kaŝdy mechanizm wejścia $_SESSIOIN zmienne zarejestrowane jako sesyjne

Zmienne c.d. Zasięg zmiennych Wewnątrz funkcji zdefiniowanej przez uŝytkownika, zmienna ma zasięg lokalny $a = 1; /* zasięg globalny */ function Test() { echo $a; /* odwołanie do zmiennej o zasięgu lokalnym */ } Test(); Ten skrypt nie wyświetli niczego, poniewaŝ instrukcja echo odwołuje się do zmiennej lokalnej $a, której jak dotąd nie została przypisana Ŝadna wartość

Zmienne c.d. Zasięg zmiennych c.d. Wewnątrz funkcji zmienne globalne muszą być jawnie określone $a = 1; $b = 2; functiontest() { global $a, $b; $b = $a + $b; } Test(); echo $b; Ten skrypt wyświetli 3, wszystkie odwołania do zmiennych oznaczonych jako global odnoszą się do ich globalnych wersji

Zmienne c.d. Zasięg zmiennych c.d. Drugi sposób dostępu do zmiennych lokalnych wewnątrz funkcji to uŝycie tablicy superglobalnej $GLOBALS $a = 1; $b = 2; functiontest() { $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; } Test(); echo $b; Ten skrypt wyświetli 3. $GLOBALS jest tablicą asocjacyjną, gdzie nazwa zmiennej jest kluczem, a zawartość zmiennej wartością komórki tablicy

Zmienne c.d. Zmienne statyczne Po wykonaniu funkcji zmienne statyczne zapamiętują swoją ostatnią wartość function Test_1() function Test_2() { { $a = 0; static $a = 0; echo $a; echo $a; $a++; $a++; } } Test_1(); Test_2(); Test_1(); Test_2(); Test_1(); Test_2(); wynik: 000 wynik: 012

4. Stałe Stała identyfikator dla prostej wartości Stała ma zasięg globalny Definicja stałej: define("nazwa_stałej", "wartość_stałej"); Tak jak w przypadku zmiennych: PHP rozróŝnia wielkości liter w nazwach zmiennych Nazwy stałych nie mogą zaczynać się cyframi Dozwolone jest uŝywanie polskich znaków (naleŝą do ASCII)

Stałe c.d. RóŜnice pomiędzy stałymi, a zmiennymi: Stałe nie mają znaku dolara ($) przed nazwą; Stałe mogą być zdefiniowane wyłącznie uŝywając funkcji define(), nie przez proste przypisanie; Stałe mogą być definiowane oraz uŝywane wszędzie bez zwaŝania na zasady dotyczące zakresu ich dostępności; Stałe nie mogą być redefiniowane po tym jak raz zostały zdefiniowane; Stałe mogą zawierać tylko wartości skalarne.

5. Operatory Arytmetyczne Przykład Nazwa Opis $a + $b Dodawanie Suma $a i $b $a - $b Odejmowanie RóŜnica $a od $b $a * $b MnoŜenie Iloczyn $a i $b $a / $b Dzielenie Iloraz $a przez $b $a % $b Modulo Reszta z dzielenia $a przez $b Operator dzielenia zawsze zwraca wartość zmiennoprzecinkową

Operatory c.d. Bitowe Przykład Nazwa Opis $a & $b Mnożenie bitowe Dany bit wynikowy jest równy 1 tylko jeśli obydwa bity składowe są równe 1 $a $b Sumowanie bitowe Dany bit wynikowy jest równy 1 jeśli co najmniej jeden bit składowy jest równy 1 $a ^ $b Sumowanie bitowe modulo 2 Dany bit wynikowy jest równy 1 wtedy i tylko wtedy, kiedy jeden z bitów składowych jest równy 1 a drugi jest równy 0 ~ $a Negacja bitowa Bity w zmiennej $a mające wartość 1 otrzymują wartość 0 i na odwrót $a << $b Przesunięcie w lewo Przesuwa bity w zmiennej $a o $b kroków w lewo (każdy krok znaczy pomnożenie przez dwa ) $a >> $b Przesunięcie w prawo Przesuwa bity w zmiennej $a o $b kroków w prawo (każdy krok znaczy podzielone przez dwa )

Operatory c.d. Porównania Przykład Nazwa Opis $a == $b Równy TRUE jeśli $a jest równe $b $a === $b Identyczny TRUE jeśli $a jest równe $b i obydwa operandy są tego samego typu $a!= $b Różny TRUE jeśli $a nie jest równy $b $a <> $b Różny TRUE jeśli $a nie jest równy $b $a!== $b Nie identyczny TRUE jeśli $a nie jest równy $b lub nie są tego samego typu $a < $b Mniejszy niż TRUE jeśli $a jest mniejszy od $b $a > $b Większy niż TRUE jeśli $a jest większy od $b $a <= $b Mniejszy lub równy TRUE jeśli $a jest mniejszy lub równy $b $a >= $b Większy lub równy TRUE jeśli $a jest większy lub równy $b

Operatory c.d. Inkrementacji i dekrementacji Przykład Nazwa Opis ++$a Pre-inkrementacja Najpierw zwiększa wartość $a o jeden, potem zwraca $a $a++ Post-inkrementacja Najpierw zwraca $a, potem zwiększa $a o jeden --$a Pre-dekrementacja Najpierw zmniejsza wartość $a o jeden, potem zwraca $a $a-- Post-dekrementacja Najpierw zwraca $a, potem zmniejsza $a o jeden

Operatory c.d. Logiczne Przykład Nazwa Opis $a and $b I TRUE jeśli zarówno $a jak i $b są TRUE $a or $b Lub TRUE jeśli $a lub $b jest TRUE $a xor $b Wyłącznie-Lub TRUE jeśli $a lub $b jest TRUE, ale nie jednocześnie! $a Nie TRUE jeśli $a nie jest TRUE $a && $b I TRUE jeśli zarówno $a jak i $b są TRUE $a $b Lub TRUE jeśli $a lub $b jest TRUE

Operatory c.d. Tablicowe Przykład Nazwa Opis $a + $b Unia Unia tablic $a i $b. Tablica $b jest dodawana do tablicy $a, zduplikowane klucze nie są nadpisywane $a == $b Równość TRUE jeśli $a i $b mają te same elementy $a === $b Identyczność TRUE jeśli $a i $b mają te same elementy ułożone w tej samej kolejności $a!= $b Nierówność TRUE jeśli $a i $b nie zawierają takich samych elementów $a <> $b Nierówność j.w. $a!== $b Nieidentyczność TRUE jeśli $a i $b nie zawierają tych samych elementów w tej samej kolejności

6. Struktury kontrolne if, else, elseif while, do.. while for, foreach break, continue switch return require, include require_once, include_once

Struktury kontrolne c.d. IF, ELSE, ELSEIF if (warunek) wyrażenie ----------------------------------- if (warunek) wyrażenie1 else wyrażenie2 ----------------------------------- if (warunek1) wyrażenie1 elseif (warunek2) wyrażenie2 else wyrażenie3 if ($a > $b) {echo a jest większe od b ;} ----------------------------------- if ($a > $b) { echo a jest większe od b ; } else { echo a nie jest większe od b ; } ----------------------------------- if ($a > $b) { echo a jest większe od b ; } elseif ($a == $b) { echo a jest równe b ; } else { echo a jest mniejsze od b ; }

WHILE Struktury kontrolne c.d. Składnia wyrażenia while jest podobna do składni w języku C: while (wyrażenie) instrukcja Zanim zostanie wykonana instrukcja, wyrażenie zostaje sprawdzone. Instrukcja będzie wykonywać się tak długo, jak długo wyrażenie będzie zwracać TRUE. Przykładowe składnie polecenia: $i = 0; while ($i < 10) { echo i = $i ; i++; } $i = 0; while ($i <10): echo i = $i ; i++; endwhile;

Struktury kontrolne c.d. DO.. WHILE Składnia wyrażenia do.. while: do instrukcja while (wyrażenie) Zanim zostanie sprawdzone wyrażenie, instrukcja zostanie wykonana. Instrukcja będzie wykonywać się tak długo, jak długo wyrażenie będzie zwracać TRUE. W przeciwieństwie do pętli while, instrukcja zostanie wykonana przynamniej jeden raz. $i=0; do{ echo i = $i ; }while($i>0);

FOR Struktury kontrolne c.d. Składnia wyrażenia for: for (wyrażenie1; wyrażenie2; wyrażenie3) instrukcje Składnia jest podobna do jej odpowiednika w języku C. Wyrażenie pierwsze wykonywane jest tylko jeden raz na początku pętli. Przy rozpoczęciu kolejnej iteracji obliczane jest wyrażenie2, jeśli wynikiem jest TRUE, zostaje wykonana instrukcja. Na końcu iteracji wykonywane jest wyrażenie3. Iteracje wykonywane są tak długo jak długo wyrażenie2 przyjmuje wartość TRUE. for ($i=0; $i<10; $i++) for ($i=0;;$i++) $i=1; for ($i=0; $i<10; echo $i, $i++) { { for (;;) } echo $i; } if ($i>10) break; echo $i; { } if ($i>10) break; echo $i; $i++;

Struktury kontrolne c.d. FOREACH Składnia wyrażenia foreach: foreach ($wyrażenie_tablicowe as $wartość) instrukcje; foreach ($wyrażenie_tablicowe as $klucz => $wartość) instrukcje; Przy rozpoczynaniu pętli foreach, wskaźnik tablicy jest resetowany I ustawiany na pierwszym elemencie. Foreach operuje na kopii tablicy, zmiany dokonane na pobranym elemencie tablicy nie oddziałują na oryginalną tablicę. Przykład: $arr=array("jeden","dwa","trzy"); foreach ($arr as $val) { echo element $a = $val ; } $arr = array("jeden"=>1,"dwa"=>2,"trzy"=>3); foreach ($arr as $key => $val) { echo element $a.$key = $val ; }

BREAK Struktury kontrolne c.d. Instrukcja break zakańcza wykonywanie instrukcji for, foreach while, do..while lub switch. Dzięki opcjonalnemu parametrowi, możliwe jest wskazanie ile zagnieżdżonych instrukcji ma zostać przerwanych. $i=0; while(++$i){ switch($i){ case 5: echo"na 5<br>\n"; break1; /*Wyjdźtylkozeswitch.*/ case 10: echo"na 10; wyjście<br>\n"; break2; /*Wyjdźzeswitchizwhile.*/ default: break; } }

Struktury kontrolne c.d. CONTINUE Instrukcja continue zakańcza wykonywanie danej pętli iteracji i rozpoczyna nową od początku. Podobnie jak instrukcja break, posiada opcjonalny parametr wskazujący na poziom zagnieżdżenia pętli. $i=0; while($i++<5){ echo"zewnętrzna<br>\n"; while(1){ echo" Środkowa<br>\n"; while(1){ echo" Wewnętrzna<br>\n"; continue 3; } echo"to się nigdy nie wyświetli.<br>\n"; } echo"ani to.<br>\n"; }

SWITCH Struktury kontrolne c.d. Instrukcja switch jest podobna do serii instrukcji if z warunkiem na to samo wyrażenie. Instrukcja ta jest wykonywana linia po linii, zakańcza wykonywanie przy końcu bloku switch lub przy napotkaniu instrukcji break. switch($i){ case 0: echo"ijestrówne0"; break; case 1: echo"ijestrówne1"; break; case 2: echo"ijestrówne2"; break; } W porównaniu do instrukcji if, switch może okazać się szybszy ponieważ wartość wyrażenia jest obliczana tylko raz, zaś w instrukcji if,elseif wiele razy.

RETURN Struktury kontrolne c.d. Instrukcja return służy do natychmiastowego zakończenia funkcji oraz zwrócenia przez nią wartości poprzez użycie argumentu instrukcji. W przypadku użycia instrukcji o zasięgu globalnym zakańcza wykonywanie całego skryptu. Jeśli blok skryptu był załadowany instrukcją require() lub include(), sterowanie zostaje zwrócone do pliku wywołującego. Jeżeli została return został użyty w pliku dołączonym poprzez include, argument instrukcji będzie wartością zwracaną przez funkcję include.

Struktury kontrolne c.d. REQUIRE, INCLUDE Instrukcja require oraz include służą do wczytania i wykonania pliku ze skryptem. Obie instrukcje są takie same, różnią się tylko obsługą błędów. Require w przypadku niepowodzenia generuje błąd krytyczny, include generuje jedynie ostrzeżenie. W przypadku braku pliku wskazanego przez require, wykonywanie skryptu zostaje przerwane. W przypadku braku pliku wskazanego przez include, skrypt nadal będzie wykonywany. <?php require'nagłówek.php'; require $plik; require('jakiś_plik.txt');?>

Struktury kontrolne c.d. REQUIRE_ONCE, INCLUDE_ONCE Instrukcja require_once oraz include_once służą do tego samego co instrukcje require i incluce z jednym wyjątkiem, tzn jeżeli plik już raz został wczytany do skryptu, drugi raz już nie będzie. Stosowane jest to w przypadku, gdy użytkownik chce mieć pewność że dany kod wykona się tylko jeden raz.

7. Funkcje Definiowanie funkcji function funkcja1 ($arg1, $arg2,, $argn) { echo "Przykładowa funkcja "; return $retval; } Wewnątrz funkcji może pojawić się dowolny poprawny kod PHP oraz definicje innych funkcji. PHP nie oferuje przeciążania funkcji.

Funkcje c.d. Argumenty funkcji PHP obsługuje przekazywanie argumentów poprzez wartość, referencję oraz wartości domyślne argumentów. Jeśli istnieje potrzeba zmiany wartości argumentów wewnątrz funkcji, naleŝy przekazać je poprzez referencję. function funkcja2(&$string) { $string.= dodatkowy tekst ; } $str = To jest ; funkcja2($str); echo $str; //wyświetli: To jest dodatkowy tekst

Funkcje c.d. Argumenty c.d. function podaj_kolor ($kolor = "czerwony") { } return "Podany kolor to $kolor\n"; echo podaj_kolor(); echo podaj_kolor("zielony"); PowyŜsza funkcja wykorzystuje moŝliwość zastosowania argumentów domyślnych. Wynikiem działania tego kodu jest: Podany kolor to czerwony Podany kolor to zielony

Funkcje c.d. Zwracane wartości Wartości z funkcji zwracane są przy użyciu instrukcji return(). Funkcja może zwracać dowolny typ danych. Instrukcja return powoduje natychmiastowe zakończenie działania funkcji i powrót do linii kodu z której została wywołana. function funkcja3 ($liczba) { return $liczba*$liczba; } echo funkcja3(5); // wyświetla 25

Funkcje c.d. Funkcje obsługujące funkcje mixed func_get_arg (int arg_num) zwraca argument funkcji o zadanym indeksie array func_get_args(void) zwraca tablicę wypełnioną argumentami int func_num_args(void) zwraca ilość argumentów

8. Współpraca z MySQL Połączenie z bazą danych <?php?> $host = mysql.servers.net ; $login = user ; $pass = userpassword ; $dbname = userdb ; $link = mysql_connect($host, $login, $pass) or die('nie można się połączyć: '. mysql_error()); echo 'Połączenie nawiązane'; mysql_select_db($dbname) or die ('Nie można wybrać bazy danych');

Współpraca z MySQL c.d. Przesyłanie zapytań Po ustanowieniu połączenia z wybraną bazą danych, dalsza komunikacja przebiega za pomocą zapytań wysyłanych instrukcją: mysql_query($zapytanie); gdzie $zapytanie jest zmienną zawierającą łańcuch znaków zapytanie MySQL Np.: $zapytanie = SELECT * FROM tabela ; $wynik = mysql_query($zapytanie) or die ('Zapytanie zakończone niepowodzeniem:'. mysql_error());

Współpraca z MySQL c.d. Przetwarzanie pobranych danych Najczęściej używane funkcje do przetwarzania danych pobranych za pomocą funkcji mysql_query: mysql_fetch_assoc Zapisuje wiersz wyniku w tablicy asocjacyjnej mysql_fetch_row Zapisuje wiersz wyniku w tablicy wyliczeniowej mysql_fetch_array Zapisuje wiersz wyniku w tablicy asocjacyjnej, numerycznej lub w obu

Współpraca z MySQL c.d. MYSQL_FETCH_ASSOC array mysql_fetch_assoc( resource $wynik ) Zwraca tablicę zawierającą pobrany wiersz, lub FALSEjeżeli nie ma więcej wierszy w wynik. $result = mysql_query( SELECT * FROM tablica ); while ($row = mysql_fetch_assoc($result)) { echo <br>$row[ id ] ; echo <br>$row[ imie ] ; echo <br>$row[ nazwisko ] ; }

Współpraca z MySQL c.d. MYSQL_FETCH_ROW array mysql_fetch_row( resource $wynik ) Zwraca tablicę numeryczną, która odpowiada pobranemu wierszowi i przesuwa do przodu wewnętrzny wskaźnik do danych. mysql_fetch_row() pobiera jeden wiersz danych z wyniku skojarzonego z podanym identyfikatorem wyniku. Wiesz zwracany jest jako tablica. Komórki są umieszczone pod oddzielnymi ofsetami, zaczynając od 0. $result = mysql_query( SELECT id,imie,nazwisko FROM tablica WHERE id= 023 ); $row = mysql_fetch_row($result); echo <br>$row[0] ; echo <br>$row[1] ; echo <br>$row[2] ;

Współpraca z MySQL c.d. MYSQL_FETCH_ARRAY array mysql_fetch_array( resource $wynik [, int $ typ_wyniku ] ) Zwraca tablicę zawierającą pobrany wiersz, lub FALSEjeżeli nie ma więcej wierszy w wynik. Opcjonalny drugi argument result_typew funkcji mysql_fetch_array()jest stałą i może przyjmować następujące wartości: MYSQL_ASSOC, MYSQL_NUM i MYSQL_BOTH. Tę funkcjonalność dodano w PHP 3.0.7. Wartością domyślną jest MYSQL_BOTH. $result = mysql_query( SELECT id,imie,nazwisko FROM tablica ); while ($row = mysql_fetch_array($result, MYSQL_BOTH)) { echo <br>$row[ nazwisko ] ; echo <br>$row[2] ; }

Inne funkcje Współpraca z MySQL c.d. mysql_affected_rows Zwraca liczbę wierszy przetworzonych w poprzedniej operacji MySQL mysql_change_user Zmienia użytkownika zalogowanego w aktywnym połączeniu mysql_client_encoding Zwraca nazwę zestawu znaków mysql_close Zamyka połączenie MySQL mysql_connect Otwiera połączenie do serwera MySQL mysql_create_db Tworzy bazę MySQL mysql_data_seek Przesuwa wewnętrzny wskaźnik wyniku mysql_db_name Pobiera dane wynikowe mysql_db_query Wysyła zapytanie do bazy MySQL mysql_drop_db Usuwa bazę MySQL

Inne funkcje Współpraca z MySQL c.d. mysql_errno Zwraca liczbową wartość kodu błędu z poprzedniej operacji MySQL mysql_error Zwraca tekst komunikatu błędu z ostatniej operacji MySQL mysql_escape_string Dodaje znaki unikowe na użytek mysql_query mysql_fetch_array Zapisuje wiersz wyniku w tablicy asocjacyjnej, numerycznej lub w obu mysql_fetch_assoc Zapisuje wiersz wyniku w tablicy asocjacyjnej mysql_fetch_field Pobiera z wyniku informacje o kolumnie i zwraca jako obiekt mysql_fetch_lengths Pobiera długość każdego pola w wierszu wyniku mysql_fetch_object Zapisuje wiersz wyniku jako obiekt mysql_fetch_row Zapisuje wiersz wyniku w tablicy wyliczeniowej

Inne funkcje Współpraca z MySQL c.d. mysql_fetch_row Zapisuje wiersz wyniku w tablicy wyliczeniowej mysql_field_flags Pobiera flagi dla danego pola w wyniku mysql_field_len Zwraca długość danego pola mysql_field_name Podaje nazwę danego pola w wyniku mysql_field_seek Przesuwa wskaźnik wyniku do wybranego pola mysql_field_table Pobiera nazwę tabeli w której znajduje się dane pole mysql_field_type Pobiera typ podanego pola mysql_free_result Zwalnia pamięć zajmowaną przez wynik mysql_get_client_info Pobiera informacje o kliencie MySQL mysql_get_host_info Pobiera informacje o hoście MySQL mysql_get_proto_info Pobiera informacje o protokole MySQL mysql_get_server_info Pobiera informacje o serwerze MySQL

Inne funkcje Współpraca z MySQL c.d. mysql_info Pobiera informacje o ostatnim zapytaniu mysql_insert_id Podaje numer ID wygenerowany podczas ostatniej operacji INSERT mysql_list_dbs Pobiera nazwy baz dostępnych na serwerze MySQL mysql_list_fields Pobiera informacje o polach tabeli MySQL mysql_list_processes Zwraca listę procesów MySQL mysql_list_tables Pobiera listę tabel z bazy MySQL mysql_num_fields Zwraca liczbę pól w wyniku mysql_num_rows Zwraca liczbę wierszy w wyniku mysql_pconnect Otwiera stałe połączenie z serwerem MySQL mysql_ping Sprawdza połączenie z serwerem, lub nawiązuje połączenie, jeśli go nie było

Inne funkcje Współpraca z MySQL c.d. mysql_query Wysyła zapytanie do serwera MySQL mysql_real_escape_string Dodaje znaki unikowe dla potrzeb poleceń SQL, biorąc po uwagę zestaw znaków używany w połączeniu. mysql_result Zwraca dane wynikowe mysql_select_db Wybiera bazę MySQL mysql_set_charset Sets the client character set mysql_stat Pobiera aktualny stan systemu mysql_tablename Zwraca nazwę tabeli mysql_thread_id Zwraca id bieżącego wątku mysql_unbuffered_query Wysyła zapytanie do serwera MySQL nie pobierając i buforując wyniku

Literatura [1] L.Welling, L.Thomson, PHP i MySQL. Tworzenie stron www. Vademecum profesjonalisty Helion 2005 [2] J.Greenspan, B.Bulger, MySQL/PHP Database Applications M&T Books 2004 http://pl.php.net/ PHP Manual