PHP podst progr wyklad grudzien 2011


Politechnika Gdańska
Politechnika Gdańska
Wydział Elektroniki, Telekomunikacji i Informatyki
Wydział Elektroniki, Telekomunikacji i Informatyki
Studia Podyplomowe
 Aplikacje i usługi internetowe
Podstawy programowania (PHP/Java)
Cz. I: Wprowadzenie do PHP
Opracował dr inż. Andrzej Jędruch
Styczeń 2011
Wprowadzenie do PHP (1)
Wprowadzenie do PHP (1)
PHP jest uważany za bardzo łatwy do
opanowania dla poczÄ…tkujÄ…cego
jednocześnie oferuje wiele zaawansowanych
właściwości, które mogą wykorzystywać
zawodowi programiści
osoby mające pewne doświadczenie w
programowaniu mogą szybko się nauczyć PHP i
już po kilku godzinach pisać proste skrypty
(programy)
znaczna część elementów programowania w
PHP została zapożyczona z języka C., np.
for ($n = 1; $n < 10; $n++)
{ echo "$n
"; }
Wprowadzenie do PHP (2)
Wprowadzenie do PHP (2)
PHP  Personal Home Page, Hypertext
Preprocessor
PHP klasyfikowany jest jako skryptowy język
programowania ogólnego przeznaczenia, ale w
praktyce stosowany jest głównie do generowania
stron internetowych
prace na stworzeniem PHP podjęto w połowie lat
dziewięćdziesiątych ubiegłego stulecia (R.
Lerdorf, 1994), a około roku 1998 dostępna była
już rozwinięta wersja
aktualnie używana jest wersja 5 PHP z roku 2004
PHP  obszary zastosowań
PHP  obszary zastosowań
Cel: szybkie wytwarzanie stron z
dynamicznie generowaną treścią
Przykłady:
tworzenie aplikacji, w których wyniki tworzone są
bieżąco i mogą zależeć od danych wprowadzonych
przez klienta
obsługa baz danych
wysyłanie i odbieranie poczty elektronicznej
pobieranie danych z formularzy (i ewentualne
zwrócenie klientowi przetworzonych danych)
ograniczenie dostępu do zasobów poprzez
sprawdzanie praw użytkownika
PHP  strony internetowe
PHP  strony internetowe
Google w odpowiedzi na zapytanie  PHP podaje
ponad 13 mld stron (styczeń 2011)
Poniżej podano adres internetowy oficjalnego
podręcznika PHP
http://www.php.net/manual/pl/
m.in. opisy funkcji podano tu:
http://pl.php.net/
PHP  scenariusz komunikacji (1)
PHP  scenariusz komunikacji (1)
PHP jest językiem skryptowym, który
wykonywany jest na odległym komputerze, a do
przeglądarki w komputerze użytkownika
przesyłany jest wynik jego działania
Mówimy, że skrypt PHP jest wykonywany
(interpretowany) po stronie serwera (ang. server-
side)  sam skrypt PHP nie jest przesyłany do
przeglądarki, lecz jedynie wynik jego działania
PHP  scenariusz komunikacji (2)
PHP  scenariusz komunikacji (2)
Scenariusz:
klient żąda strony HTML / PHP
kod PHP zostaje wykonany i zwrócony jako HTML
kod wynikowy HTML zostaje przesłany do klienta
PrzeglÄ…darka Serwer
Moduł
PHP
Przykład PHP (1)
Przykład PHP (1)


content="text/html; charset=UTF-8">
Moja pierwsza strona WWW


Nazywam siÄ™ ... Witam wszystkich na mojej stronie,
która będzie stopniowo rozbudowywana...
echo (

Studia podyplomowe: ");
echo ("Aplikacje i usługi internetowe
");
?>

Przykład PHP (2)
Przykład PHP (2)
Podany poprzednio kod zostanie przetworzony przez
serwer, w wyniku czego do komputera klienta zostanie
kod wynikowy w postaci:


content="text/html; charset=UTF-8">
Moja pierwsza strona WWW


Nazywam siÄ™ ... Witam wszystkich na mojej stronie,
która będzie stopniowo rozbudowywana...



Studia podyplomowe: Aplikacje i usługi internetowe


Przykład PHP (3)
Przykład PHP (3)
W rezultacie w oknie klienta pojawi się poniższy
tekst:
Znaczniki kanoniczne
Znaczniki kanoniczne
Cały kod PHP musi zawierać się pomiędzy
znacznikami:
otwierajÄ…cym i zamykajÄ…cym ?>
Jeśli znacznik zostanie pominięty, to interpreter nie
wykonana kodu
Starsze wersje PHP dopuszczały także parę znaczników
 są one niezalecane, a w PHP 6 nie będą
dostępne
Akceptowane znaczniki można określić za pomocą pliku
php.ini
Programowanie  ogólne koncepcje
Programowanie  ogólne koncepcje
Programowanie to proces projektowania, tworzenia,
testowania i utrzymywania kodu zródłowego programów
komputerowych lub urządzeń mikroprocesorowych
Kod zródłowy jest napisany w języku programowania z
użyciem określonych reguł
Wiedza potrzebna do programowania: projektowanie
aplikacji, umiejętność analizy algorytmów, znajomość
języków programowania i narzędzi programistycznych,
znajomość zasad pracy kompilatorów, znajomość zasad
działania podstawowych modułów sprzętowych
komputera
W sensie inżynierii oprogramowania, programowanie jest
tylko jednym z etapów powstawania projektu
(implementacja)
Komputer  widok od strony sprzętu (1)
Komputer  widok od strony sprzętu (1)
Komputer to urządzenie cyfrowe, które realizuje
swoje zadania poprzez wykonywanie instrukcji
przekazanych przez człowieka
Specyficzne cechy elementów stosowanych w
urządzeniach cyfrowych spowodowały, że
przechowywane i przetwarzane informacje majÄ…
postać ciągów złożonych z zer i jedynek
Komputer  widok od strony sprzętu (2)
Komputer  widok od strony sprzętu (2)
.
7 6 5 4 3 2 1 0
bajt
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
słowo (ang. word)
Komputer  widok od strony sprzętu (3)
Komputer  widok od strony sprzętu (3)
.
7 6 5 4 3 2 1 0
0 0 0 1 0 1 1 =(23)10
1
7 6 5 4 3 2 1 0
2 2 2 2 2 2 2 2
7 6 5 4 3 2 1 0
0 0 0 0 0 0 1
1
Kod litery A
Komputer  widok od strony sprzętu (4)
Komputer  widok od strony sprzętu (4)
Ciąg instrukcji, który opisuje sposób wykonania
pewnego zadania określamy nazwą programu
Układy elektroniczne komputera pozwalają
rozpoznać i wykonać bardzo ograniczony zbiór
prostych instrukcji  każdy program napisany w
języku wysokiego poziomu musi zostać
przekształcony na takie instrukcje, aby mógł
zostać wykonany
Rozmiar ww. zbioru instrukcji wynika z dążenia
do ograniczenia kosztu i złożoności układów
elektronicznych
Translacja i interpretacja programów (1)
Translacja i interpretacja programów (1)
Przekształcenie programu zródłowego na postać
zrozumiałą przez układy elektroniczne może być
realizowane poprzez przekształcanie pojedynczych
instrukcji kodu zródłowego na odpowiadający im ciąg
instrukcji podstawowych i ich wykonanie  technika ta
nazywa jest interpretacją, a program który to realizuje
nazywa siÄ™ interpreterem
Inny sposób realizacji określany terminem translacja
polega zamianie każdej instrukcji kodu zródłowego na
równoważną sekwencję instrukcji podstawowych  po
zakończeniu zamiany uzyskany ciąg instrukcji
podstawowych zostaje wykonany przez układy
elektroniczne
Translacja i interpretacja programów (2)
Translacja i interpretacja programów (2)
Stosowane są też techniki hybrydowe, np. przed
pierwszym wykonaniem programu tłumaczy się fragmenty
programu, a nie cały program zródłowy
Technika ta została zastosowana w konstrukcji
platformy .NET firmy Microsoft: program w języku
wysokiego poziomu tłumaczony jest w całości na pewien
kod pośredni, który na etapie wykonywania tłumaczony
jest partiami na kod docelowy
Komentarze w PHP
Komentarze w PHP
komentarze są ignorowane podczas wykonywania treści
skryptu
komentarze ułatwiają pracę programisty, zwłaszcza przy
poszukiwaniu błędów i pózniejszych zmianach lub
poprawkach
w języku PHP można stosować dwa rodzaje komentarzy:
komentarze blokowe
komentarze jednowierszowe
Komentarze blokowe
Komentarze blokowe
komentarze blokowe (wywodzą się z języka C)
mogą obejmować kilka znaków, kilka wyrazów,
lub nawet kilka wierszy
poczÄ…tek komentarza blokowego wskazuje para
znaków /*, zaś koniec para znaków */
Przykład:
/*
wiele linii
komentarza
        
*/
Komentarze jednowierszowe
Komentarze jednowierszowe
Komentarze jednowierszowe poprzedza siÄ™
znakami //, np.
// obliczenie zysków i strat
komentarze jednowierszowe można też zaczynać
od znaku #, (co wywodzi siÄ™ z systemu Unix), np.
# obliczenie zysków i strat
Redakcja programów
Redakcja programów
Kod PHP zapisywany jest za pomocą znaków w
kodzie ASCII
PHP ignoruje spacje, znaki tabulacji, znaki nowej
linii i powrotu karetki
Rozróżniane są małe i wielkie litery, ale PHP
toleruje różne formy zapisu nazw funkcji
wbudowanych, np. wszystkie poniższe wersje są
poprawne
Print
PRINT
PrINT
Wyświetlanie informacji w PHP
Wyświetlanie informacji w PHP
w praktyce programowania wyniki przetwarzania
przesyłane są do klienta w postaci tekstu, w którym mogą
występować również wartości liczbowe
ogólnie, mówimy że do przeglądarki musi zostać
przesłany ciąg znaków  w skryptach PHP do tego celu
używa się instrukcji echo
zazwyczaj instrukcja ma postać:
echo  jakiÅ› tekst ;
ciąg znaków do wyświetlania musi być ujęty w znaki
apostrofu lub cudzysłowu, np.:
echo  ciąg znaków ;
echo  ciąg znaków ;
Zmienne w PHP (1)
Zmienne w PHP (1)
zmienne służą do przechowywania danych w
celu ich pózniejszego wykorzystania
zmienna jest identyfikowana przez nazwÄ™, przez
co można się do niej odwoływać w kodzie skryptu
Nazwa zmiennej zaczyna siÄ™ od znaku $ (cyfra
nie może się znajdować za znakiem $)
cyfry i znak _ są dozwolone jako drugi i następne
znaki nazwy
małe i duże litery są rozróżniane
Zmienne w PHP (2)
Zmienne w PHP (2)
zmiennej nadaje się wartość za pomocą operacji
przypisania, np.
$suma = 12 ;
zmienne w PHP nie wymagajÄ… deklaracji i nie
posiadają jawnych typów, co więcej typ zmiennej
może się zmieniać dynamicznie w trakcie
działania kodu
jeżeli kontekst wyrażenia wymaga zmiany jego
typu, to stosowane jest rzutowanie do typu
wymaganego, np. w przypadku przekroczenia
zakresu wartość integer jest przekształcana na
wartość typu float
Podstawowe typy danych w PHP (1)
Podstawowe typy danych w PHP (1)
typy całkowite (integer)
$a =  12 ; // dziesiętnie
$b = 037 ; // ósemkowo
$c = 0xA3 ; // szesnastkowo
typy zmiennoprzecinkowe (float)
$y = 475.32 ;
$x =  0.348 ;
ciągi (łańcuchy) znaków (string)
$napis= Zalecenie dla użytkowników ;
Podstawowe typy danych w PHP (2)
Podstawowe typy danych w PHP (2)
W szczególnych przypadkach danej można
przypisać wartość pustą, np..
$c = null ;
zazwyczaj typ danych nie jest ustalany przez
programistÄ™  wykonuje to PHP na podstawie
kontekstu, w jakim zmienna jest używana
wykonywana jest też automatyczna konwersja
typów  jeśli w wyrażeniu zawierającym
operatory dodawania + występuje operand typu
float, to całe wyrażenie będzie typu float
Przykład: obliczanie powierzchni
Przykład: obliczanie powierzchni
$dlugosc = 12 ;
$szerokosc = 5 ;
$powierzchnia = $dlugosc *
$szerokosc ;
echo ("

Obliczona
powierzchnia wynosi $powierzchnia");
?>
Na ekranie przeglądarki będzie można odczytać:
Obliczona powierzchnia wynosi 60
Zmienne w wyrażeniach
Zmienne w wyrażeniach
Zmienne w połączeniu z operatorami tworzą
wyrażenia. Wyrażenie zakończone średnikiem
tworzy instrukcjÄ™.
Znaczna część operatorów została zapożyczona
z innych języków programowania, głównie z
języka C  warto zwrócić uwagę na następujące
konstrukcje:
$a = $a + 5 ; // można zapisać krócej $a += 5;
$c = $a % $b ; // reszta z dzielenia
Aańcuchy znaków (typ string)
Aańcuchy znaków (typ string)
Aańcuchy (ciągi znaków) tworzy poprzez
zamknięcie ciągu charakterystycznymi znakami
przed i po ciÄ…gu:
apostrofy
cudzysłowy
Jeśli w ciągu znaków występuje apostrof lub
cudzysłów, to należy poprzedzić go znakiem \
Stosowana jest także składnia heredoc
(omawiana dalej)
Składnia heredoc
Składnia heredoc
W przypadku stosowania składni heredoc
łańcuch znaków rozpoczyna się od sekwencji
<<<, po której występuje identyfikator, np.
$zdanie = <<Uruchomienie systemu
Z12;
Ten sam identyfikator sygnalizuje koniec
łańcucha znaków (linia zawierająca identyfikator
zamykający nie może zawierać żadnych innych
znaków (z wyjątkiem średnika)
Tablice w PHP  wprowadzenie (1)
Tablice w PHP  wprowadzenie (1)
Przykład
$imiona[0] =  Zosia ;
$imiona[1] =  Marysia ;
$imiona[2] =  Kasia ;
Podaną tablicę można też utworzyć w poniższy
sposób:
$imiona = array('Zosia', 'Marysia',
'Kasia');
Tablice w PHP  wprowadzenie (2)
Tablice w PHP  wprowadzenie (2)
Nie trzeba podawać rozmiaru tablicy, nie trzeba
podawać typu zmiennych, indeksy w tablicy nie
muszą zmieniać się po kolei
Wyświetlenie elementu tablicy
echo $imiona[2] ;
Nowe elementy można wstawić na koniec tablicy
za pomocÄ… polecenia:
array_push($imiona, 'Ewa', 'Beata');
Tablice w PHP  wprowadzenie (3)
Tablice w PHP  wprowadzenie (3)
Najprostszy sposób wyświetlania tablicy polega
na wykonaniu polecenia print_r
echo 
 ;
print_r ($imiona);
echo 
 ;
Wprowadzenie znacznika
 powoduje 
zachowanie oryginalnego podziału wierszy i
odstępów w tekście
Tablice numeryczne i asocjacyjne (1)
Tablice numeryczne i asocjacyjne (1)
W wielu typach tablic wyznaczenie wartości
pewnego elementu, np. autora książki wymaga
podania numeru pozycji w tablicy, pod którą ten
autor został zapisany, np.
echo $imiona[2] ;
Zazwyczaj pierwszy element takiej tablicy ma
numer 0, następny numer 1, itd.  numery te
nazywane sÄ… indeksami. Tego rodzaju tablice
określane są jako tablice numeryczne
W PHP obok tablic numerycznych dostępne
także tablice asocjacyjne.
Tablice numeryczne i asocjacyjne (2)
Tablice numeryczne i asocjacyjne (2)
W tablicach asocjacyjnych indeksami nie sÄ…
liczby, ale łańcuchy znaków.
W tablicach asocjacyjnych elementy tablicy
identyfikowane sÄ… nie przez numery, ale przez
unikatowe klucze, czyli charakterystyczne słowa
nawiązujące do zawartości elementu
Tablice numeryczne i asocjacyjne (3)
Tablice numeryczne i asocjacyjne (3)
W celu zdefiniowania tablicy z kluczami w postaci
łańcuchów znaków, używamy również polecenia
array, ale w nieco innej postaci, używając
znaków => , np.>:
$miasta = array(
'miasto1' => 'Tczew',
'miasto2' => 'Malbork',
'miasto3' => 'Wejherowo'
) ;
Tablice numeryczne i asocjacyjne (4)
Tablice numeryczne i asocjacyjne (4)
Utworzoną tablicę asocjacyjną można wyświetlić:
echo  Zawartość tablicy
 ;
echo  $miasta[miasto1]
 ;
echo  $miasta[miasto2]
 ;
echo  $miasta[miasto3]
 ;
Na ekranie przeglądarki zostaną wyświetlone
poniższe wiersze:
Zawartość tablicy
Tczew
Malbork
Wejherowo
Wykonanie polecenia zewnętrznego (1)
Wykonanie polecenia zewnętrznego (1)
Możliwości kodowania PHP można znacznie
zwiększyć poprzez wywoływanie poleceń
realizowanych przez system operacyjny, np. w
Linuksie polecenie ls  la powoduje
wyświetlenie listy plików zawartych w bieżącym
katalogu; w systemie Windows analogiczne
działanie ma polecenie dir
Polecenie takie można wysłać również z poziomu
skryptu PHP w postaci:
$pliki = `ls  la ` ; // Linux
$pliki = `dir` ; // Windows
Wykonanie polecenia zewnętrznego (2)
Wykonanie polecenia zewnętrznego (2)
Właściwe polecenie umieszcza się w apostrofach
(na klawiaturze po lewej stronie pod znakiem ~)
Przykładowo, w wyniku wykonania poniższych
instrukcji
$pliki = `dir d:\\doc` ;
echo "
" ;
print "$pliki" ;
echo "
" ;
Na ekranie zostanie wyświetlona zawartość
katalogu \doc na dysku D:, np.
Wykonanie polecenia zewnętrznego (3)
Wykonanie polecenia zewnętrznego (3)
Wolumin w stacji D nie ma etykiety.
Numer seryjny woluminu: 1E56-A0B3
Katalog: d:\doc
2011-01-07 22:50
Informatyka GB D F E RUS.doc 2011-01-03 13:53 68żÿ096
MKZL_lab36_38.doc 2009-12-05 13:30 239żÿ104
PHP_cz_1_grudz_2009_14pkt.doc 2011-01-04 12:01 60żÿ416
zaw.doc 4 plik(żÿw) 534żÿ016 bajtżÿw
2 katalog(żÿw) 792żÿ109żÿ056 bajtżÿw wolnych
Instrukcje warunkowe (1)
Instrukcje warunkowe (1)
Przykład
if ($v1 > $v2)
print  v1 jest większe od v2 ;
Instrukcje warunkowe używane są do wyboru
dalszego sposobu działania programu (spośród
dwóch lub więcej możliwych) w zależności od
wartości uzyskanych wyników pośrednich
wyrażenie podane w nawiasie po if stanowi
warunek, który może być spełniony lub nie 
jeśli jest spełniony, to wykonywana jest podana
instrukcja
Instrukcje warunkowe (2)
Instrukcje warunkowe (2)
Często wykonuje się sprawdzenie czy wartości
dwóch zmiennych (lub wyrażeń) są równe  w
tym celu stosuje siÄ™ operatory:
= = gdy wymagana jest tylko zgodność
wartości obu argumentów
= = = gdy wymagana jest zgodność
wartości i typów obu argumentów
Przykład:
if ($v1 == $v2)
print  v1 jest równe v2 ;
Instrukcje warunkowe (3)
Instrukcje warunkowe (3)
Analogicznie, gdy wykonuje siÄ™ sprawdzenie czy
wartości dwóch zmiennych (lub wyrażeń) są
różne stosuje się operatory:
! = gdy wymagane jest by wartości obu
argumentów były różne
! = = gdy wymagane jest by wartości obu
argumentów były różne i były różnych typów
Instrukcje warunkowe (4)
Instrukcje warunkowe (4)
Niekiedy warunek ma bardziej złożoną postać,
np. gdy żądamy wykonania instrukcji, gdy
wartość zmiennej $a zawiera się w przedziale
<3, 12>
($a >= 3) && ($a <= 12)
Występujący tu operator logiczny && ma sens
iloczynu logicznego: całe wyrażenie jest
prawdziwe, wtedy i tylko wtedy gdy oba składniki
sÄ… prawdziwe
Stosuje się również inne operatory logiczne: !
(negacja), || (lub), xor (różnica symetryczna)
Instrukcja warunkowa if ma kilka odmian
Instrukcje warunkowe (5)
Instrukcje warunkowe (5)
if (warunek)
{
instrukcja1 ;
instrukcja2 ;
instrukcja3 ;
           
}
Instrukcje warunkowe (6)
Instrukcje warunkowe (6)
if (warunek)
{
instrukcja1 ;
instrukcja2 ;
          
}
else
{
instrukcja3 ;
instrukcja4 ;
           
}
Instrukcje warunkowe (7)
Instrukcje warunkowe (7)
if (warunek)
{
instrukcja1 ;
          
}
else if
{
instrukcja2 ;
           
}
else
{
instrukcja3 ;
           
}
Pętla for  przykład
Pętla for  przykład
for ($i = 1; $i <= 10; $i++)
{
print  $i
 ;
}
Na ekranie przeglÄ…darki pojawi siÄ™ kolumna liczb:
1
2
3
4
5
6
7
8
9
10
Pętla for (1)  postać ogólna
Pętla for (1)  postać ogólna
for (wyrażenie_początkowe;
wyrażenie_warunkowe;
wyrażenie_modyfikujące)
{
instrukcje_do_wykonania
}
wyrażenie_początkowe obliczane (wykonywane)
jest bezwarunkowo na początku pętli;
Na początku każdej iteracji obliczane jest
wyrażenie_warunkowe  jeśli wartość tego
wyrażenia wynosi TRUE, to pętla jest
kontynuowana i wykonywane sÄ…
instrukcje_do_wykonania
Pętla for (2)  postać ogólna
Pętla for (2)  postać ogólna
Jeśli wartość wyrażenie_warunkowe  wynosi
FALSE, to wykonywanie pętli zostaje
zakończone.
Na końcu każdej iteracji obliczane jest
wyrażenie_modyfikujące
Pętla for  wyświetlanie tablicy (1)
Pętla for  wyświetlanie tablicy (1)
Pętla for może być zastosowana do
wyświetlenia omawianej wcześniej tablicy
przykładowej imiona
$ilosc = count($imiona) ;
echo "Tablica \"imiona\" zawiera
$ilosc elementy. SÄ… to:
" ;
for ($indeks = 0; $indeks < $ilosc;
$indeks = $indeks + 1)
{
echo "$imiona[$indeks]
" ;
}
Pętla for  wyświetlanie tablicy (2)
Pętla for  wyświetlanie tablicy (2)
W wyniku wykonania podanej pętli for na ekranie
przeglądarki zostanie wyświetlony poniższy tekst:
Tablica "imiona" zawiera 3 elementy. SÄ… to:
Zosia
Marysia
Kasia
Pętla foreach (1)
Pętla foreach (1)
W operacjach wykonywanych na tablicach
stosuje się często pętlę foreach, która ma
postać:
foreach ($tablica as $wartość) wyrażenie
Polecenie to wykonuje działania na tablicy, która
określona jest przez parametr $tablica.
W kolejnych krokach do zmiennej $wartość
przypisywane są wartości poszczególnych
elementów tablicy, i w każdym kroku
wykonywane są działania opisane przez
parametr wyrażenie.
Pętla foreach (2)
Pętla foreach (2)
Poniżej podano przykład wyświetlania zawartości
tablicy z wykorzystaniem polecenia foreach.
foreach ($imiona as $kolejne_imie)
{
print  $kolejne_imie
" ;
}
Na ekranie przeglądarki zostaną wyświetlone
poniższe wiersze
Zosia
Marysia
Kasia
Pętla while (1)
Pętla while (1)
Przykład
$i = 1 ;
while ($i <= 10)
{
print  $i
 ;
$i++ ;
}
Pętla while (2)
Pętla while (2)
Postać ogólna:
while (warunek)
{
instrukcje_do_wykonania
}
Najpierw obliczany jest warunek  jeśli ma
wartość TRUE, to wykonywane są
instrukcje_do_wykonania i czynności
powtarzane są od początku; jeśli warunek ma
wartość FALSE, to wykonywanie pętli zostaje
zakończone.
Funkcje  wprowadzenie
Funkcje  wprowadzenie
Przykład
function suma_kwadratow ($a, $b)
{
$c = $a * $a + $b * $b ;
return $c ;
}
$x = 5; $y = 7;
$wynik = suma_kwadratow ($x, $y);
Zasięg zmiennych (1)
Zasięg zmiennych (1)
Zmienna zdefiniowana w skrypcie ma zasięg
globalny, tzn. można korzystać z niej w każdym
miejscu skryptu z wyjątkiem wnętrza funkcji
Z kolei zasięg zmiennej deklarowanej wewnątrz
funkcji ogranicza się tylko do wnętrza funkcji
Jeśli wewnątrz funkcji chcemy się odwołać do
zmiennej deklarowanej na zewnątrz, to można
zastosować konstrukcję ze słowem kluczowym
global, np.:
Zasięg zmiennych (2)
Zasięg zmiennych (2)
$wynik = 27;
function podaj ( )
{
global $wynik;
echo  $wynik ;
}
Politechnika Gdańska
Politechnika Gdańska
Wydział Elektroniki, Telekomunikacji i Informatyki
Wydział Elektroniki, Telekomunikacji i Informatyki
Studia Podyplomowe
 Aplikacje i usługi internetowe
Podstawy programowania (PHP/Java)
Cz. II: Wprowadzenie do PHP
Opracował dr inż. Andrzej Jędruch
Grudzień 2011
Przekazywanie parametrów (1)
Przekazywanie parametrów (1)
W typowych konstrukcjach do funkcji
przekazywane są wartości argumentów 
działania na tych wartościach realizowane
wewnątrz funkcji nie zmieniają wartości
zmiennych globalnych
Istnieje możliwość przekazywania parametrów
przez referencjÄ™  w takim przypadku nazwÄ™
parametru poprzedza siÄ™ znakiem &
Jeśli parametr przekazywany jest przez
referencję, to działania na nim wewnątrz funkcji
sÄ… odwzorowywane na zewnÄ…trz funkcji
Przekazywanie parametrów (2)
Przekazywanie parametrów (2)
Przykład przekazywania parametru przez
referencjÄ™:
function dodaj (&$liczba)
{
$liczba = $liczba + 1;
}
             
$wynik = 1;
dodaj($wynik);
echo  $wynik ;
Operacje plikowe (1)
Operacje plikowe (1)
Plik traktujemy jako ciąg bajtów, które
przechowywane są na nośniku informacji,
niezależnie od znaczenia tych bajtów
Pliki przechowywane są głównie w urządzeniach
pamięciowych, w których wykorzystuje się
zjawiska magnetyczne i optyczne  dominujÄ…ce
znaczenie mają dyski twarde, których pojemności
przekraczajÄ… obecnie 1 TB (terabajt)
Sposób przechowywania pliku na dysku stanowi
element konstrukcyjny systemu operacyjnego 
zazwyczaj pliki przechowywane sÄ… w postaci
rozproszonej, co oznacza że fragmenty pliku
znajdują się w różnych obszarach pamięci
dyskowej
Operacje plikowe (2)
Operacje plikowe (2)
W systemie Windows stosowana jest organizacja
systemu plików oznaczona symbolem NTFS, w
Linuksie najczęściej spotyka się system ext3.
Ponieważ liczba przechowywanych plików jest
bardzo duża, i nierzadko nawet w komputerach
PC przekracza 100 tysięcy, pliki rozmieszcza się
w postaci zespołów tworzących katalog
Ponieważ w katalogu obok plików mogą
znajdować się także inne katalogi, mówimy że
stosowana jest hierarchiczna struktura plików
Operacje plikowe (3)
Operacje plikowe (3)
System operacyjny prowadzi ewidencję plików
wraz z informacjami o ich położeniu na dysku
(lub innym nośniku)
System operacyjny oferuje użytkownikowi
komputera wiele operacji pozwalajÄ…cych na
kopiowanie plików, zmianę ich położenia w
strukturze katalogów, kasowania, itp..
Obok funkcji udostępnianych użytkownikowi
komputera, system operacyjny oferuje także
możliwości wykonywania działań na plikach
przez programy
Operacje plikowe (4)
Operacje plikowe (4)
Program może poprosić system operacyjny o
utworzenie nowego pliku, zapisanie lub
odczytanie danych, usunięcie pliku i wiele innych
operacji
Program wyraża życzenie wykonania operacji na
pliku poprzez wywołanie określonej funkcji
udostępnianej przez system operacyjny
Opisy funkcji udostępnianych przez systemy
operacyjne są publikowane przez producentów,
np. firma Microsoft udostępnia opis znany jako
Win32 API
Operacje plikowe (5)
Operacje plikowe (5)
W języku PHP nie odwołujemy się bezpośrednio
do funkcji systemowych, ale korzystamy z funkcji
języka PHP, które są znacznie wygodniejsze
Interpreter PHP przekształca automatycznie takie
wywołania na standard wymagany przez system
operacyjny
Scenariusz typowych operacji plikowych
Scenariusz typowych operacji plikowych
Na poziomie programowania operacja na pliku
składa się z kilku etapów:
Utworzenie nowego pliku albo otwarcie istniejÄ…cego 
wynikiem tej operacji jest wartość określana jako
deskryptor lub identyfikator pliku
We wszystkich dalszych operacjach plikowych
posługujemy się identyfikatorem uzyskanym w punkcie
1.
W dalszym ciągu można wielokrotnie zapisywać i
odczytywać dane z dysku
Po wykonaniu wszystkich działań operację na pliku
należy zakończyć, co określane jest jako zamknięcie
pliku
Wysyłanie zawartości plików (1)
Wysyłanie zawartości plików (1)
Funkcje wykonujÄ…ce operacje na plikach majÄ…
wiele zastosowań
Rozpatrzymy tutaj działania wykonywane w
trakcie przesyłania plików z serwera do
przeglÄ…darki
Wysyłanie zawartości plików (2)
Wysyłanie zawartości plików (2)
Najpierw posługując się odpowiednimi
nagłówkami HTTP określa się własności
przesyłanych danych:
Content-Type określa typ danych wg klasyfikacji
MIME (wyróżnia się 8 typów głównych i podtypy);
dla plików zwykle podaje się:
application/octet-stream
Content-Length określa długość pliku
Wysyłanie zawartości plików (3)
Wysyłanie zawartości plików (3)
Content-Disposition określa przeznaczenie
danych  w tym przypadku występuje
informacja, że przesłane dane mają być
traktowane jako załącznik (a nie jako treść)
nazwa pliku podana w poniższym poleceniu pojawi
siÄ™ w oknie dialogowym w komputerze klienta
attachment: filename=  jakis_plik.doc
Wysyłanie zawartości plików (4)
Wysyłanie zawartości plików (4)
Odpowiednie nagłówki protokołu HTTP wysyła
siÄ™ do przeglÄ…darki za pomocÄ… funkcji header ,
np.
header( Content Type:
application/octet stream ) ;
Po wysłaniu nagłówków przesyła się zawartość
pliku za pomocą zwykłej instrukcji echo, np.
echo $zawartosc ;
Przykład kodu PHP realizującego
Przykład kodu PHP realizującego
przesyłanie pliku do przeglądarki
przesyłanie pliku do przeglądarki
$rozmiar = filesize($pelna_nazwaPliku);
//otwarcie pliku, odczyt pliku i zamknięcie pliku
$uchwyt = fopen($pelna_nazwaPliku, "r");
$zawartosc = fread($uchwyt, $rozmiar);
fclose($uchwyt);
header("Content-Type: application/octet-stream") ;
header("Content-Length: $rozmiar;");
$plik_docelowy =  odpowiedz.doc ;
header("Content-Disposition:attachment; filename=$plik_docelowy");
echo $zawartosc ;
Obsługa cookies  wprowadzenie
Obsługa cookies  wprowadzenie
Cookies (ciasteczka) stanowiÄ… niewielkie porcje
danych tekstowych wymieniane między
serwerem a przeglÄ…darkÄ…
Cookies sÄ… przechowywane w komputerze
użytkownika
Wykorzystanie cookies pozwala na Å‚atwe
rozpoznawanie użytkownika (np. w celu
zestawienia listy towarów włożonych do koszyka
w sklepie internetowym)
Cookies stanowią część specyfikacji protokołu
HTTP i są wysyłane do przeglądarki w postaci
nagłówka HTTP o nazwie Set-Cookie
Obsługa cookies  scenariusz
Obsługa cookies  scenariusz
Przy pierwszym połączeniu serwer wysyła do
przeglądarki nagłówek Set-Cookie zawierający
dane cookies
PrzeglÄ…darka zapisuje otrzymane dane w
pamięci komputera (na dysku)
Podczas kolejnych połączeń z danym serwerem
przeglądarka przesyła do niego dane
przechowywane w pamięci (na dysku) w postaci
pary: nazwa  wartość
Obsługa cookies  wysyłanie danych do
Obsługa cookies  wysyłanie danych do
przeglÄ…darki (1)
przeglÄ…darki (1)
Do przesyłania danych do przeglądarki używa się
funkcji setCookie, która w najprostszym
przypadku może mieć postać, np.
setCookie ( ustawienia ,  70v3 ) ;
?>


Obsługa cookies  wysyłanie danych do
Obsługa cookies  wysyłanie danych do
przeglÄ…darki (2)
przeglÄ…darki (2)
Funkcja setCookie wysyła nagłówek HTTP, skąd
wynika że funkcja ta musi być wywołana przed
wysłaniem jakichkolwiek innych danych 
odpowiedni skrypt PHP musi się pojawić przed
wysłaniem znacznika , tak jak pokazano
w poprzednim przykładzie
dopuszczalna jest także poniższa konstrukcja
setCookie ( ustawienia ,  70v3 ) ;
echo (  ) ;
echo (  ) ;
      (itd.)
Obsługa cookies  parametry funkcji
Obsługa cookies  parametry funkcji
setCookie
setCookie
W przypadku ogólnym funkcja setCookie ma 6
parametrów, z których najczęściej używane są
trzy pierwsze:
nazwa identyfikujÄ…ca cookie
wartość cookie
czas_życia określający kiedy wygasa
ważność cookie
Pozostałe trzy parametry: ścieżka_dostępu,
domena, bezpieczne używane są rzadziej
Obsługa cookies  usuwanie
Obsługa cookies  usuwanie
Jeśli upłynął czas ważności, to przeglądarka
sama usuwa cookies (jeśli czas ważności nie jest
określony, to cookies są ważne tylko do chwili
zamknięcia przeglądarki)
Stosuje siÄ™ trzy sposoby kasowania:
1. Ustawienie czas ważności, który już upłynął, np.
setCookie ( ustawienia ,  v27 ,
time()  120) ;
2. Podanie jako wartości cookie pustego ciągu
znaków
3. Podając wartość false jako drugi argument, np.
setCookie ( ustawienia , false) ;
Obsługa cookies  dostęp do danych
Obsługa cookies  dostęp do danych
Przeglądarka w trakcie zestawiania połączenia z
serwerem sprawdza czy ma zapisane w pamięci
(na dysku) cookies dla tego serwera  jeśli tak,
to wysyła je w postaci nagłówka HTTP
Dostęp do cookies na poziomie PHP realizowany
jest za pomocÄ… tablicy superglobalnej $_COOKIE
 indeksami tej tablicy sÄ… nazwy
Wewnątrz kodu PHP dostęp do wartości cookies
uzyskuje siÄ™ za pomocÄ… konstrukcji
$adresat = $_COOKIE[ nazwa ] ;
Sesje
Sesje
Protokół HTTP jest bezstanowy: każde żądanie
pobrania strony jest niezależne od innych  w
konsekwencji nie ma możliwości stwierdzenia czy
nadchodzące żądanie pochodzi od tego samego
czy od innego użytkownika
Przedstawiony problem można rozwiązać
poprzez stosowanie cookies, aczkolwiek
występują tu pewne ograniczenia (np. wskutek
działania zapory ogniowej)
Sesje pozwalają na śledzenie postępowania
użytkownika od pierwszego połączenia aż do
opuszczenia witryny  pozwala to Å‚atwo realizo-
wać logowanie i uwierzytelnianie użytkownika, a
także wyświetlanie stron personalizowanych
Identyfikator sesji
Identyfikator sesji
Każda sesja użytkownika ma własny, unikatowy
identyfikator (w postaci liczby losowej
generowanej przez PHP)
Identyfikator sesji przechowywany jest na
serwerze i w komputerze użytkownika (w postaci
cookies); jeśli cookies nie są używane, to
identyfikator sesji jest dodawany do adresu URL
Każdej sesji można przypisać zmienne, które
będą dostępne przez cały czas jej trwania 
zmienne te przechowywane sÄ… na serwerze, a
użytkownik nie ma do nich dostępu
Rozpoczęcie i zakończenie sesji (1)
Rozpoczęcie i zakończenie sesji (1)
Rozpoczęcie sesji następuje w wyniku wykonania
funkcji
session_start() ;
W przypadku pozytywnym funkcja zwraca
wartość true, w przeciwnym razie false
Funkcja ta musi być wywołana zanim zostaną
przesłane jakiekolwiek dane do przeglądarki (w
jednym skrypcie odwołujemy się do sesji tylko
jeden raz)
Stosuje się też inne sposoby rozpoczęcia sesji
Rozpoczęcie i zakończenie sesji (2)
Rozpoczęcie i zakończenie sesji (2)
Funkcja
session_destroy() ;
usuwa zasoby powiÄ…zane z sesjÄ…
Funkcja zwraca wartość true albo false
Zmienne sesji (1)
Zmienne sesji (1)
Zmienne sesji dostępne są od chwili rozpoczęcia
sesji do jej zakończenia
Zmienne sesji zapisywane sÄ… w tablicy globalnej
$_SESSION
Operacje zapisania i odczytania zmiennej sesji
mają postać:
$_SESSION[ nazwa zmiennej ]=wartość ;
$zmienna=$_SESSION[ nazwa zmiennej ] ;
Zmienne sesji (2)
Zmienne sesji (2)
Sprawdzenie czy istnieje zmienna sesji o podanej
nazwie:
$wynik = isSet($_SESSION[ nazwa_zmiennej ] ;
Jeśli zmienna $wynik przyjmie wartość
true, to zmienna jest
zarejestrowana, w przeciwnym razie
false
Usuwanie zmiennej sesji:
unset($_SESSION[ nazwa zmiennej ]) ;
Przykład kodowania sesji (1)
Przykład kodowania sesji (1)
Fragmenty pliku sesja1.php
session_start();
$_SESSION['moja_zmienna'] = 'abcde' ;
?>


            

echo 'Identyfikator sesji = ' ;
echo session_id();
echo '

Wartość zmiennej sesji: ' ;
echo $_SESSION['moja_zmienna'] ;
?>
Nastepna strona

Przykład kodowania sesji (2)
Przykład kodowania sesji (2)
Fragmenty pliku sesja2.php
session_start();
?>

            

Trwa sesja ...
echo 'Identyfikator sesji = ' ;
echo session_id();
echo '

Wartość zmiennej sesji: ' ;
echo $_SESSION['moja_zmienna'] ;
?>
            

Instrukcja include (1)
Instrukcja include (1)
W przypadku obszernych skryptów PHP
wygodnie jest podzielić je na fragmenty
przechowywane w oddzielnych plikach, co
ułatwia wprowadzanie poprawek, zmian i
uzupełnień
Fragmenty te można ponownie połączyć
posługując się instrukcją include ; rzadziej
używana jest podobna instrukcja require
W miejscu wystÄ…pienia instrukcji include
wstawiana jest treść wskazanego pliku, np.
include ( konfiguracja.inc ) ;
Instrukcja include (2)
Instrukcja include (2)
Instrukcja include w PHP działa jednak nieco
inaczej niż jej odpowiedniki w konwencjonalnych
językach programowania
W chwili rozpoczęcia przetwarzania wierszy
zawartych w pliku wskazanym przez include
następuje wyłączenie trybu PHP  kolejne
wiersze przetwarzane sÄ… w trybie HTML
Po przetworzeniu wszystkich wierszy zawartych
w pliku następuje ponowne włączenie trybu PHP
i przetwarzanie wierszy podanych po instrukcji
include
Instrukcja include (3)
Instrukcja include (3)
Powracając do przykładu
include ( konfiguracja.inc ) ;
można powiedzieć, że przetwarzanie tego pliku
zostanie zrealizowane tak, jak gdyby główny
skrypt zawierał poniższe wiersze:
?>
wiersze zawarte w w pliku konfiguracja.inc
Wniosek: skrypty PHP dołączane do głównego
skryptu za pomocą include powinny zaczynać
się i kończyć znakami
Współdziałanie PHP i bazy danych
Współdziałanie PHP i bazy danych
Jeśli w trakcie wykonywania skryptu PHP nastąpi
odwołanie do bazy danych, to następuje:
opodłączenie do serwera bazy danych,
owybór roboczej bazy danych,
outworzenie zbioru wynikowego zawierajÄ…cego wiersze
tablicy,
ozamknięcie połączenia z serwerem bazy danych.
PHP i MySQL (1)
PHP i MySQL (1)
Podłączenie do serwera MySQL realizowane jest
za pomocą funkcji mysql_connect( ), która
w typowych zastosowaniach ma trzy parametry:
onazwa komputera,
onazwa użytkownika,
ohasło.
Omawiana funkcja zwraca identyfikator
nawiązanego połączenia, albo false w
przeciwnym razie
Opcjonalnie po nazwie komputera może wystąpić
znak  :  i numer portu, na którym serwer MySQL
oczekuje na połączenie
PHP i MySQL (2)
PHP i MySQL (2)
Uwaga zmienne PHP należy umieszczać w
znakach cudzysłowu, a nie apostrofu, np.:
$nazwa_serwera =  localhost ;
$db_link =
mysql_connect("$nazwa_serwera",
"ala","skok2011")
PHP i MySQL (3)
PHP i MySQL (3)
Z kolei za pomocÄ… funkcji mysql_select_db()
można wybrać bazę danych, na której będą
wykonywane działania.
Funkcja ta ma dwa parametry:
1. nazwa bazy
2. identyfikator połączenia (podany przez funkcję
mysql_connect)  parametr ten można
pominąć, wówczas wykorzystane będzie
ostatnio otwarte połączenie
PHP i MySQL (4)
PHP i MySQL (4)
Właściwe zapytanie do serwera MySQL
realizowane jest za pomocÄ… funkcji
mysql_query( ), która wysyła ciąg znaków
zapytania do serwera MySQL i zwraca wynik
jego wykonania.
Funkcja ta ma dwa parametry:
1. Zapytanie
2. identyfikator połączenia (podany przez funkcję
mysql_connect)  może być pominięty
PHP i MySQL (5)
PHP i MySQL (5)
W przypadku prostych poleceń, które nie
przekazujÄ… danych funkcja mysql_query( )
zwraca wartości true lub false;
Jeśli omawiana funkcja pobierała dane (np. przez
SELECT), to zwracany jest identyfikator
zasobów, albo wartość false jeśli działanie
zakończyło się niepomyślnie
Identyfikator zasobów może być argumentem
innych funkcji realizujÄ…cych przetwarzanie
danych
PHP i MySQL (6)
PHP i MySQL (6)
Połączenie otwarte za pomocą funkcji
mysql_connect( ) zostanie zamknięte:
a. gdy skrypt zakończy działanie
b. gdy zostanie wykonana funkcja
mysql_close( )
Wybrane funkcje PHP (1)
Wybrane funkcje PHP (1)
Funkcja mysql_num_rows( ) zwraca liczbÄ™
wierszy w zbiorze wynikowym, np.:
$zbior_wynikowy =
mysql_query($pytanie);
$liczba_klientow =
mysql_num_rows($zbior_wynikowy);
Wybrane funkcje PHP (2)
Wybrane funkcje PHP (2)
Funkcja mysql_result( ) podaje pojedynczÄ…
wartość ze zbioru wynikowego, np.:
$zbior_wynikowy =
mysql_query($pytanie);
$wartosc =
mysql_result($zbior_wynikowy,
$nr_wiersza, $nr_kolumny);
Wybrane funkcje PHP (3)
Wybrane funkcje PHP (3)
Funkcja mysql_fetch_row( ) zwraca tablicÄ™
odpowiadajÄ…cÄ… pojedynczemu wierszowi w
zbiorze wynikowym, np.:
$zbior_wynikowy =
mysql_query($pytanie);
$wiersz =
mysql_fetch_row ($zbior_wynikowy);
echo $wiersz[$nr_kolumny];
Wybrane funkcje PHP (4)
Wybrane funkcje PHP (4)
Funkcja mysql_fetch_assoc( ) zwraca
tablicÄ™ (asocjacyjnÄ…) zawierajÄ…cÄ… pobrany wiersz,
lub wartość false, jeśli nie ma więcej wierszy.
Kluczami tej tablicy sÄ… nazwy kolumn w zbiorze
wynikowym (nie trzeba używać indeksów
numerycznych).
Kolejne wywołania tej funkcji podają kolejne
wiersze.
Wybrane funkcje PHP (5)
Wybrane funkcje PHP (5)
Przykład:
$pytanie ="select * from adresy";
$zbior_wynikowy =
mysql_query($pytanie);
while ($wiersz =
mysql_fetch_assoc($zbior_wynikowy))
{
echo $wiersz['miejscowosc']; echo" ";
echo $wiersz['imie']; echo " ";
echo $wiersz['nazwisko']; echo "
";
}
Wybrane funkcje PHP (6)
Wybrane funkcje PHP (6)
Funkcja mysql_data_seek( ) przesuwa
wewnętrzny wskaznik wiersza na podany numer
wiersza.
Przykład (podany niżej argument
 $zbior_wynikowy pochodzi z wywołania funkcji
mysql_query()):
mysql_data_seek ($zbior_wynikowy, 0);
Wybrane funkcje PHP (7)
Wybrane funkcje PHP (7)
Funkcja in_array ( ) przeszukuje tablicÄ™
(drugi argument) w poszukiwaniu podanego
parametru (pierwszy argument). Jeśli wartość
została znaleziona, to zwraca wartość true lub
false w przeciwnym przypadku.
Przykład  jeśli liczba 4 zostanie znaleziona w
tablicy $tabl, to zmienna $punkty zostanie
zwiększona o 1:
if (in_array (4, $tabl)) $punkty++;


Wyszukiwarka