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<br>"; }
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)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>Moja pierwsza strona WWW</title>
</head>
<body>
Nazywam się ... Witam wszystkich na mojej stronie,
która będzie stopniowo rozbudowywana...
<?php
echo (”<br><br><b>Studia podyplomowe: ");
echo ("Aplikacje i usługi internetowe</b>");
?
>
</body></html>
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:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8">
<title>Moja pierwsza strona WWW</title>
</head>
<body>
Nazywam się ... Witam wszystkich na mojej stronie,
która będzie stopniowo rozbudowywana...
<br><br><b>
Studia podyplomowe: Aplikacje i usługi internetowe
</b>
</body></html>
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
<?php
i zamykającym
?>
Jeśli znacznik zostanie pominięty, to interpreter nie
wykonana kodu
Starsze wersje PHP dopuszczały także parę znaczników
<? oraz ?> — 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 źródłowego programów
komputerowych lub urządzeń mikroprocesorowych
Kod źró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
Komputer — widok od strony sprzętu
(1)
(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)
.
0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7
8
9
11
12
13
14
15
10
bajt
słowo (ang. word)
Komputer — widok od strony sprzętu (3)
Komputer — widok od strony sprzętu (3)
.
0
1
2
3
4
5
6
7
2
3
2
2
2
1
2
0
2
6
2
5
2
4
2
7
1
=(23)
10
1
1 1
0
0
0
0
0
1
2
3
4
5
6
7
Kod litery A
1
1
0
0 0
0
0 0
Komputer — widok od strony sprzętu
Komputer — widok od strony sprzętu
(4)
(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 źródłowego na postać
zrozumiałą przez układy elektroniczne może być
realizowane poprzez przekształcanie pojedynczych
instrukcji kodu źró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 źró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 źró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óźniejszych 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óźniejszego 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
<?php
$dlugosc = 12 ;
$szerokosc = 5 ;
$powierzchnia = $dlugosc *
$szerokosc ;
echo ("<br><br>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
Łańcuchy znaków (typ string)
Łańcuchy znaków (typ string)
Łań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
Składnia
heredoc
heredoc
W przypadku stosowania składni heredoc
łańcuch znaków rozpoczyna się od sekwencji
<<<, po której występuje identyfikator, np.
$zdanie = <<<Z12
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 ”<pre>”;
print_r ($imiona);
echo ”</pre>”;
Wprowadzenie znacznika <pre> 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 <br>”;
echo ”$miasta[miasto1]<br>” ;
echo ”$miasta[miasto2]<br>” ;
echo ”$miasta[miasto3]<br>” ;
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 "<pre>" ;
print "$pliki" ;
echo "</pre>" ;
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
Pętla
for
for
— przykład
— przykład
for ($i = 1; $i <= 10; $i++)
{
print ”$i<br>” ;
}
Na ekranie przeglądarki pojawi się kolumna liczb:
1
2
3
4
5
6
7
8
9
10
Pętla
Pętla
for
for
(1) — postać ogólna
(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
Pętla
for
for
(2) — postać ogólna
(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
Pętla
for
for
— wyświetlanie tablicy (1)
— 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:<br>" ;
for ($indeks = 0; $indeks < $ilosc;
$indeks = $indeks + 1)
{
echo "$imiona[$indeks] <br>" ;
}
Pętla
Pętla
for
for
— wyświetlanie tablicy (2)
— 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
Pętla
foreach
foreach
(1)
(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
Pętla
foreach
foreach
(2)
(2)
Poniżej podano przykład wyświetlania zawartości
tablicy z wykorzystaniem polecenia foreach.
foreach ($imiona as $kolejne_imie)
{
print „$kolejne_imie<br>" ;
}
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<br>” ;
$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.
<?php
setCookie (”ustawienia”, ”70v3”) ;
?>
<html>
<body>
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 <html>, tak jak pokazano
w poprzednim przykładzie
dopuszczalna jest także poniższa konstrukcja
<?php
setCookie (”ustawienia”, ”70v3”) ;
echo (”<html>”) ;
echo (”<body>”) ;
— — — — — — (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
<?php
session_start();
$_SESSION['moja_zmienna'] = 'abcde' ;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
— — — — — — — — — — — — —
</head><body>
<?php
echo 'Identyfikator sesji = ' ;
echo session_id();
echo '<br><br>Wartość zmiennej sesji: ' ;
echo $_SESSION['moja_zmienna'] ;
?>
<a href=„sesja2.php"> Nastepna strona</a>
</body></html>
Przykład kodowania sesji (2)
Przykład kodowania sesji (2)
Fragmenty pliku sesja2.php
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
— — — — — — — — — — — — —
</head><body>
Trwa sesja ...
<?php
echo 'Identyfikator sesji = ' ;
echo session_id();
echo '<br><br>Wartość zmiennej sesji: ' ;
echo $_SESSION['moja_zmienna'] ;
?>
— — — — — — — — — — — — —
</body></html>
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
<?php
Wniosek: skrypty PHP dołączane do głównego
skryptu za pomocą
include
powinny zaczynać
się i kończyć znakami
<?php
i
?>
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:
o podłączenie do serwera bazy danych,
o wybór roboczej bazy danych,
o utworzenie zbioru wynikowego zawierającego wiersze
tablicy,
o zamknię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:
o nazwa komputera,
o nazwa użytkownika,
o hasł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 "<br>";
}
Wybrane funkcje PHP (6)
Wybrane funkcje PHP (6)
Funkcja
mysql_data_seek( )
przesuwa
wewnętrzny wskaźnik 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++;