PHP podst progr wyklad grudzien 2011

background image

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

background image

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>"; }

background image

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

background image

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

background image

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/

background image

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

background image

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

background image

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>

background image

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>

background image

Przykład PHP (3)

Przykład PHP (3)

W rezultacie w oknie klienta pojawi się poniższy

tekst:

background image

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

background image

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)

background image

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

background image

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)

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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
— — — — — — — — —

*/

background image

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

background image

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

background image

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” ;

background image

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

background image

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

background image

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”;

background image

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

background image

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

background image

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

background image

Ł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)

background image

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)

background image

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');

background image

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');

background image

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

background image

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.

background image

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

background image

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'

) ;

background image

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

background image

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

background image

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.

background image

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

background image

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

background image

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” ;

background image

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

background image

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

background image

Instrukcje warunkowe (5)

Instrukcje warunkowe (5)

if (warunek)
{

instrukcja1 ;
instrukcja2 ;
instrukcja3 ;
– – – – – – – – – – – –

}

background image

Instrukcje warunkowe (6)

Instrukcje warunkowe (6)

if (warunek)
{

instrukcja1 ;
instrukcja2 ;
– – – – – – – – – – –

}
else
{
instrukcja3 ;
instrukcja4 ;

– – – – – – – – – – – –

}

background image

Instrukcje warunkowe (7)

Instrukcje warunkowe (7)

if (warunek)
{

instrukcja1 ;
– – – – – – – – – – –

}
else if
{
instrukcja2 ;
– – – – – – – – – – – –
}
else
{
instrukcja3 ;
– – – – – – – – – – – –
}

background image

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

background image

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

background image

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

background image

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>" ;

}

background image

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

background image

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.

background image

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

 

background image

Pętla while (1)

Pętla while (1)

Przykład

$i = 1 ;
while ($i <= 10)
{
print ”$i<br>” ;
$i++ ;
}

background image

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.

background image

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);

background image

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.:

background image

Zasięg zmiennych (2)

Zasięg zmiennych (2)

$wynik = 27;
function podaj ( )
{
global $wynik;
echo ”$wynik” ;
}

background image

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

background image

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

background image

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” ;

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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”

background image

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 ;

background image

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 ;

background image

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

background image

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: nazwawartość

background image

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>

background image

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.)

background image

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

background image

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) ;

background image

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’] ;

background image

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

background image

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

background image

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

background image

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

background image

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’] ;

background image

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’]) ;

background image

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>

background image

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>

background image

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”) ;

background image

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

background image

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

?>

background image

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.

background image

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

background image

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")

background image

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

background image

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

background image

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

background image

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( )

background image

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);

background image

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);

background image

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];

background image

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.

background image

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>";
}

background image

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);

background image

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++;


Document Outline


Wyszukiwarka

Podobne podstrony:
PHP podst progr suplement wyklad grudzien 2011
PHP podst progr suplement wyklad grudzien 2011
PHP podst progr suplement wyklad grudzien 2011
pmp wykład podmioty 2011 2012
wykład 5 2 IŚ 2011
BO I WYKLAD 01 3 2011 02 21
FIZJOLOGIA człowieka (VI wykład,1 03 2011)
Wykład 1 – 7 10 2011
FIZJOLOGIA CZŁOWIEKA (X WYKŁAD 5 05 2011 r )
Prawo gospodarcze publiczne wykład! 10 2011
controlling finansowy wykład 2 & 11 2011
KRWE-Wykład-3-Pokaz-2011-Konsumpcja, KRWE - wykład
Ćwiczenia semestr VI, Lekarski GUMed, III rok, INTERNA, PLAN WYKŁADÓW I ĆWICZEŃ 2011
Wykład 1-1.03.2011, Notatki UTP - Zarządzanie, Semestr II, Statystyka
BANKOWOŚĆ wykłady 10 2011
Prawo finansów publicznych wykład 11 2011

więcej podobnych podstron