You are on page 1of 28

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

PHP4. Podrcznik
programisty
Autor: Sterling Hughes
Tumaczenie: Daniel Kaczmarek
ISBN: 83-7197-795-6
Tytu oryginau: PHP Developer's Cookbook
Format: B5, stron: 422
Przykady na ftp: 77 kB
Od teorii do praktyki prowadzi duga droga. Nie inaczej jest w przypadku PHP4,
popularnego jzyka sucego do tworzenia aplikacji WWW. Oficjalna dokumentacja
stanowi jedynie wstp w praktyce programista czsto staje wobec problemw,
ktrych rozwiza nie zawiera sam opis jzyka.
Ksika ta stanowi kombinacj podrcznika i instrukcji. Przedstawia treci, ktre nie
znalazy si w dokumentacji, a w wielu przypadkach znacznie t dokumentacj
rozszerza. Pomimo tego, e nie jest to kompletna instrukcja, staniesz si po jej lekturze
duo lepszym programist bdziesz mia solidne podstawy do rozwizywania
problemw programistycznych.
Opisano w niej:

Operacje na acuchach znakw


Prac z liczbami, datami i czasem
Uycie tablic w PHP
Wbudowane tablice i stae PHP
Wyraenia regularne
Prac z plikami i katalogami
Tworzenie wasnych funkcji
Klasy i obiekty w PHP
Sesje
Pisanie aplikacji niezalenych od baz danych
czenie kodu PHP z programami napisanymi w innych jzykach
Obsug poczty elektronicznej
Uycie protokow SNMP i LDAP
Tworzenie grafiki w PHP
Prac z dokumentami XML

Sterling i Andrei stworzyli podrcznik zawierajcy rozwizania konkretnych problemw,


przedstawiajc jednoczenie informacje niezbdne do rozwizania niemal kadego
problemu. Rasmus Lerdorf, twrca PHP

Spis treci
O Autorach ...................................................................................... 13
Przedmowa...................................................................................... 15
Wprowadzenie ................................................................................. 19

Cz I

Konstrukcje i techniki jzykowe......................................25

Rozdzia 1. Operacje na acuchach znakw....................................................... 27


1.0. Wprowadzenie............................................................................................................27
1.1. Rozkadanie acuchw znakw ................................................................................27
1.2. Stosowanie operatora trjargumentowego .................................................................31
1.3. Wymiana wartoci zmiennych ...................................................................................32
1.4. Konwersja kodw ASCII w znaki..............................................................................33
1.5. Dzielenie acucha na pojedyncze znaki....................................................................34
1.6. Odwracanie kolejnoci we fragmentach acuchw ..................................................36
1.7. Zmiana wielkoci liter w acuchu.............................................................................37
1.8. Usuwanie pustych przestrzeni z acucha znakw ....................................................38
1.9. Ucieczka od znakw specjalnych w acuchach........................................................39
1.10. Czytanie z pliku z tekstem dzielonym przecinkami.................................................40
1.11. Parsowanie adresu URL ...........................................................................................42
1.12. Dopasowywanie przyblione ...................................................................................42
1.13. Tworzenie unikalnego identyfikatora.......................................................................43
1.14. Szyfrowanie acucha znakw .................................................................................44
1.15. Konwersja midzy zestawami znakw cyrylicy ......................................................46

Rozdzia 2. Praca z liczbami, datami i czasem .................................................... 49


2.0. Wprowadzenie............................................................................................................49
2.1. Sprawdzanie, czy zmienna jest poprawn liczb .......................................................50
2.2. Praca z cigami liczbowymi.......................................................................................51
2.3. Praca z liczbami nie bdcymi liczbami cakowitymi ani zmiennoprzecinkowymi..52
2.4. Zaokrglanie liczb o staej precyzji............................................................................54
2.5. Przeksztacanie liczb o rnych bazach .....................................................................55
2.6. Obliczanie logarytmu liczby ......................................................................................56
2.7. Znajdowanie binarnej reprezentacji liczby ................................................................57
2.8. Konwersja midzy liczbami arabskimi i rzymskimi ..................................................58
2.9. Weryfikacja poprawnoci numerw kart kredytowych .............................................58
2.10. Formatowanie liczb ..................................................................................................60
2.11. Konwersja midzy radianami i stopniami................................................................61
2.12. Obliczanie cosinusw, sinusw i tangensw ...........................................................62
2.13. Generowanie liczb losowych ...................................................................................63
2.14. Generowanie unikalnych liczb losowych.................................................................64
2.15. Waenie liczb losowych...........................................................................................67

PHP4. Podrcznik programisty


2.16. adowanie dzisiejszej daty do tablicy......................................................................68
2.17. Weryfikacja poprawnoci daty.................................................................................69
2.18. Obliczanie odstpw czasowych..............................................................................70
2.19. Znajdowanie daty i godziny w innych regionach.....................................................71
2.20. Formatowanie znacznikw czasu.............................................................................72
2.21. Odczytywanie daty i godziny z acuchw znakw ................................................75
2.22. Przeprowadzanie testw wydajnoci........................................................................77
2.23. Zatrzymywanie wykonania programu......................................................................81

Rozdzia 3. Stosowanie tablic ............................................................................ 83


3.0. Wprowadzenie............................................................................................................83
3.1. Deklarowanie tablicy..................................................................................................84
3.2. Wypisywanie zawartoci tablicy................................................................................85
3.3. Usuwanie powtarzajcych si elementw..................................................................86
3.4. Powikszanie lub pomniejszanie tablicy....................................................................87
3.5. czenie tablic............................................................................................................88
3.6. Iteracyjne przetwarzanie elementw tablicy ..............................................................89
3.7. Uzyskiwanie dostpu do biecego elementu tablicy ................................................92
3.8. Uzyskiwanie dostpu do rnych obszarw tablicy ..................................................93
3.9. Przeszukiwanie tablicy...............................................................................................94
3.10. Odnajdywanie elementw rnicych dwie tablice .................................................95
3.11. Losowe ustawianie elementw w tablicy.................................................................96
3.12. Wyznaczanie iloczynu, rnicy i punktu przecicia dwch tablic...........................97
3.13. Sortowanie tablicy....................................................................................................98
3.14. Sortowanie naturalne..............................................................................................100
3.15. Odwracanie kolejnoci ...........................................................................................100
3.16. Funkcje tablicowe analogiczne do jzyka Perl ......................................................101

Rozdzia 4. Wbudowane tablice i stae PHP...................................................... 103


4.0. Wprowadzenie..........................................................................................................103
4.1. Wykorzystanie staych plikowych ...........................................................................104
4.2. Stae wersji PHP i systemu operacyjnego ................................................................105
4.3. Ustawianie punktw kontrolnych za pomoc staych bdw PHP.........................106
4.4. Definiowanie wasnych staych PHP .......................................................................107
4.5. Wykorzystanie zmiennych globalnych PHP ............................................................108
4.6. Uzyskiwanie dostpu do danych za porednictwem wbudowanych tablic PHP .....110

Rozdzia 5. Dopasowywanie danych do wyrae regularnych ............................. 113


5.0. Wprowadzenie..........................................................................................................113
5.1. Przypisywanie wynikw zastpienia wzorca ...........................................................120
5.2. Stosowanie w PHP wyrae regularnych zgodnych z Perlem.................................121
5.3. Niezgodnoci midzy bibliotek PCRE a wyraeniami regularnymi Perla.............123
5.4. Dopasowywanie wielu wierszy................................................................................125
5.5. Znajdowanie wystpienia dopasowania o okrelonym numerze .............................126
5.6. Praca z separowanymi rekordami ............................................................................128
5.7. Wyodrbnianie okrelonych wierszy .......................................................................129
5.8. Sprawdzanie znakw................................................................................................130
5.9. Weryfikacja poprawnoci danych WWW................................................................132
5.10. Weryfikacja poprawnoci adresu poczty elektronicznej........................................133
5.11. Sprawdzanie skadni wyraenia regularnego .........................................................133
5.12. Sprawdzanie powtrze sw.................................................................................134
5.13. Skracanie danych wejciowych..............................................................................135

Spis treci

Rozdzia 6. Obsuga plikw .............................................................................. 137


6.0. Wprowadzenie..........................................................................................................137
6.1. Sprawdzanie, czy dany plik istnieje .........................................................................139
6.2. Sprawdzanie praw do pliku ......................................................................................140
6.3. Tworzenie pliku tymczasowego...............................................................................141
6.4. Przechowywanie pliku wewntrz programu ............................................................142
6.5. Otwieranie pliku.......................................................................................................143
6.6. Bezpieczna obsuga danych binarnych ....................................................................144
6.7. Oprnianie bufora...................................................................................................145
6.8. Blokowanie plikw ..................................................................................................146
6.9. Sprawdzanie iloci wolnego miejsca na wskazanym napdzie................................148
6.10. Wywietlanie zawartoci pliku tekstowego uytkownikowi .................................149
6.11. Operacje na standardowych strumieniach wejcia-wyjcia ...................................150
6.12. Czytanie z pliku wiersz po wierszu........................................................................151
6.13. Przetwarzanie pliku sowo po sowie .....................................................................152
6.14. Przetwarzanie pliku w odwrotnej kolejnoci .........................................................153
6.15. Parsowanie pliku na podstawie wzorcowych separatorw ....................................154
6.16. Zmiana wartoci okrelonego rekordu ...................................................................155
6.17. Uzyskiwanie dostpu do rekordw o staej dugoci .............................................156
6.18. Odczytywanie z pliku pojedynczego wiersza ........................................................157
6.19. Przycinanie pliku....................................................................................................158
6.20. Zliczanie wierszy w pliku ......................................................................................159
6.21. Odczytywanie z pliku losowo wybranego wiersza ................................................160
6.22. Ustawianie wierszy i sw w porzdku losowym ..................................................161
6.23. Tworzenie plikw konfiguracyjnych .....................................................................163

Rozdzia 7. Praca z plikami w katalogach......................................................... 165


7.0. Wprowadzenie..........................................................................................................165
7.1. Praca ze znacznikami czasu .....................................................................................166
7.2. Usuwanie pliku.........................................................................................................166
7.3. Kopiowanie lub przenoszenie pliku .........................................................................167
7.4. ledzenie nazw plikw.............................................................................................168
7.5. Parsowanie czci nazwy pliku ................................................................................169
7.6. adowanie wszystkich plikw w katalogu do tablicy..............................................170
7.7. Przeszukiwanie systemu plikw...............................................................................170
7.8. Przetwarzanie katalogw plik po pliku ....................................................................172
7.9. Rekurencyjne usuwanie katalogu.............................................................................172
7.10. Tworzenie wyszukiwarki .......................................................................................174

Rozdzia 8. Funkcje ......................................................................................... 181


8.0. Wprowadzenie..........................................................................................................181
8.1. Przekazywanie do funkcji wartoci domylnej ........................................................182
8.2. Dostp do zmiennych spoza funkcji.........................................................................183
8.3. Zwracanie wartoci przez funkcj............................................................................184
8.4. Przekazywanie argumentw przez odwoanie .........................................................185
8.5. Zachowywanie wartoci zmiennej midzy kolejnymi wywoaniami funkcji ..........187
8.6. Zwracanie przez funkcj wicej ni jednej wartoci................................................187
8.7. Dynamiczne deklarowanie funkcji...........................................................................188
8.8. Dynamiczne tworzenie funkcji anonimowych.........................................................189
8.9. Porednie wywoywanie funkcji ..............................................................................190
8.10. Pobieranie arbitralnie okrelonej liczby parametrw.............................................190

Rozdzia 9. Klasy............................................................................................. 193


9.0. Wprowadzenie..........................................................................................................193
9.1. Tworzenie klasy .......................................................................................................194

PHP4. Podrcznik programisty


9.2. Uzyskiwanie dostpu do zmiennych z wntrza klasy ..............................................195
9.3. Dziedziczenie ...........................................................................................................196
9.4. Tworzenie zmiennych lub funkcji publicznych lub prywatnych .............................198
9.5. Tworzenie konstruktora............................................................................................199
9.6. Zwracanie innego obiektu przez konstruktor ...........................................................200
9.7. Tworzenie destruktora klasy ....................................................................................201
9.8. Uywanie funkcji klasy bez inicjowania obiektu.....................................................202
9.9. Poredni dostp do metod klasy rodzica ..................................................................202
9.10. Zwracanie obiektu bdu w razie niepowodzenia ..................................................204

Rozdzia 10. Utrzymywanie sesji w PHP ............................................................. 207


10.0. Wprowadzenie........................................................................................................207
10.1. Tworzenie zmiennej sesji w PHP...........................................................................208
10.2. Zapisywanie sesji przy uyciu bazy danych ..........................................................210
10.3. Ustawianie nazwy sesji ..........................................................................................213
10.4. Ustawianie i pobieranie parametrw cookie ..........................................................214
10.5. Wyrejestrowywanie zmiennej z sesji .....................................................................215
10.6. Usuwanie wszystkich zmiennych sesji ..................................................................215
10.7. Stosowanie obiektu jako zmiennej sesji.................................................................216
10.8. Kodowanie danych.................................................................................................218
10.9. Tworzenie koszyka na zakupy z zastosowaniem sesji w PHP...............................218
10.10. Serializacja ...........................................................................................................224
10.11. Serializacja WDDX..............................................................................................225
10.12. Deserializacja WDDX..........................................................................................226

Rozdzia 11. Interakcja z witrynami i serwerami WWW ....................................... 227


11.0. Wprowadzenie........................................................................................................227
11.1. Pobieranie strony WWW .......................................................................................227
11.2. Przeprowadzanie transakcji SSL............................................................................228
11.3. Przeprowadzanie wywoania HTTP POST ............................................................230
11.4. Zaadowywanie pliku w protokole HTTP..............................................................231
11.5. Wysyanie cookies w ramach wywoania ..............................................................233
11.6. Doczanie lub pomijanie nagwkw z transmisji cURL.....................................234
11.7. czenie si za porednictwem serwera proxy ......................................................235
11.8. Pobieranie informacji dotyczcych transmisji cURL.............................................236
11.9. Interakcja z ramkami..............................................................................................237
11.10. Uzyskiwanie wszystkich URL ze strony WWW .................................................238
11.11. Wyszukiwanie czy pustych i prawidowych .....................................................239
11.12. Uzyskiwanie nowych czy ze strony WWW ......................................................240
11.13. Tworzenie lustrzanej kopii strony WWW............................................................242
11.14. Parsowanie i formatowanie pliku dziennika zdarze...........................................242

Cz II

Bazy danych.................................................................245

Rozdzia 12. Tworzenie API niezalenego od baz danych w PHP .......................... 247
12.0. Wprowadzenie........................................................................................................247
12.1. cznik ...................................................................................................................249
12.2. Modu MySQL .......................................................................................................251
12.3. Modu mSQL..........................................................................................................254
12.4. Modu Oracle..........................................................................................................256
12.5. Modu MSSQL.......................................................................................................258
12.6. Modu ODBC .........................................................................................................260
12.7. Modu PostgreSQL.................................................................................................261
12.8. Modu InterBase.....................................................................................................263
12.9. Modu Sybase.........................................................................................................265

Spis treci

Cz III Wychodzenie na zewntrz PHP......................................267


Rozdzia 13. czenie z innymi programami i jzykami ........................................ 269
13.0. Wprowadzenie........................................................................................................269
13.1. Przechwytywanie danych wynikowych innego programu.....................................270
13.2. Wywietlanie danych wynikowych programu .......................................................271
13.3. Otwieranie potoku do innego programu.................................................................271
13.4. Praca z gniazdami...................................................................................................272
13.5. Praca z obiektami COM .........................................................................................273
13.6. Uzyskiwanie dostpu do predefiniowanych metod i klas jzyka Java...................275
13.7. Uzyskiwanie dostpu do wasnych klas i metod jzyka Java ................................276

Rozdzia 14. Komunikacja z gniazdami ............................................................... 281


14.0. Wprowadzenie........................................................................................................281
14.1. Klient TCP..............................................................................................................281
14.2. Serwer TCP ............................................................................................................283
14.3. Czytanie z gniazd i zapisywanie do nich ...............................................................284
14.4. Klient UDP.............................................................................................................285
14.5. Serwer UDP ...........................................................................................................287
14.6. Domeny gniazd Uniksa ..........................................................................................288
14.7. Obsuga wielu adresw IP......................................................................................290
14.8. Gniazda nieblokujce si........................................................................................290
14.9. Odczytywanie i zapisywanie wektorw wejcia-wyjcia ......................................291
14.10. Sterowanie czasem transmisji danych..................................................................292
14.11. Sprawdzanie statusu gniazda................................................................................293

Rozdzia 15. Obsuga wiadomoci poczty elektronicznej ..................................... 295


15.0. Wprowadzenie........................................................................................................295
15.1. Otwieranie skrzynki pocztowej IMAP...................................................................296
15.2. Sprawdzanie, czy strumie IMAP jest nadal aktywny...........................................297
15.3. Przeksztacanie wiadomoci do czytelnej postaci..................................................298
15.4. Wysyanie wiadomoci poczty elektronicznej .......................................................298
15.5. Wysyanie zacznikw przy uyciu PHP..............................................................299
15.6. Wysyanie zacznikw binarnych.........................................................................300
15.7. Wysyanie wiadomoci w formacie HTML ...........................................................303
15.8. Sprawdzanie rozmiaru wiadomoci .......................................................................305
15.9. Parsowanie nagwkw wiadomoci .....................................................................305

Rozdzia 16. Praca z obiektami SNMP................................................................ 307


16.0. Wprowadzenie........................................................................................................307
16.1. Ustawianie obiektu SNMP .....................................................................................308
16.2. Pobieranie obiektu SNMP......................................................................................308
16.3. Pobieranie wszystkich obiektw SNMP do tablicy ...............................................309

Rozdzia 17. LDAP............................................................................................. 311


17.0. Wprowadzenie........................................................................................................311
17.1. Dodawanie pozycji do serwera LDAP ...................................................................311
17.2. Usuwanie pozycji z serwera LDAP .......................................................................312
17.3. Wykonywanie zapytania i pobieranie wynikw ....................................................313
17.4. Zwalnianie zbioru wynikw LDAP .......................................................................314
17.5. Przeszukiwanie drzewa ..........................................................................................315
17.6. Sortowanie wynikw przeszukiwania....................................................................317

10

PHP4. Podrcznik programisty

Cz IV Generowanie innych jzykw ........................................319


Rozdzia 18. Tworzenie obrazkw i zarzdzanie nimi ........................................... 321
18.1. Tworzenie obrazka z GD........................................................................................322
18.2. Otwieranie obrazka ju istniejcego ......................................................................323
18.3. Sprawdzanie rozmiaru obrazka ..............................................................................324
18.4. Dodawanie tekstu do obrazkw .............................................................................325
18.5. Sprawdzanie koloru okrelonej czci obrazka......................................................329
18.6. Sprawdzanie cakowitej liczby kolorw w obrazku...............................................330
18.7. Tworzenie przezroczystych obrazkw GIF/PNG ..................................................331
18.8. Kopiowanie czci jednego obrazka do drugiego ..................................................332
18.9. Rysowanie prostoktw .........................................................................................333
18.10. Rysowanie wieloktw ........................................................................................334
18.11. Rysowanie uku ....................................................................................................335
18.12. Tworzenie obrazka z przeplotem .........................................................................337
18.13. Przyciski dynamiczne...........................................................................................337
18.14. Stosowanie czcionek TrueType ...........................................................................340

Rozdzia 19. HTML ............................................................................................ 341


19.0. Wprowadzenie........................................................................................................341
19.1. Usuwanie znacznikw HTML ...............................................................................341
19.2. Konwersja ASCII do HTML..................................................................................342
19.3. Generowanie list <select> ......................................................................................343
19.4. Generowanie skryptu JavaScript realizujcego efekty rollover.............................345
19.5. Tworzenie szablonw HTML ................................................................................346

Rozdzia 20. XML .............................................................................................. 349


20.0. Wprowadzenie........................................................................................................349
20.1. Obsuga bdw......................................................................................................351
20.2. Parsowanie prostych dokumentw XML...............................................................352
20.3. Parsowanie dokumentu XML do tablicy................................................................354
20.4. Odwzorowywanie znacznikw XML.....................................................................356
20.5. Ustawianie uchwytu zewntrznego odwoania do jednostki..................................357
20.6. Przeszukiwanie XML.............................................................................................361
20.7. Oszczdzanie pamici ............................................................................................363
20.8. Ustawianie i sprawdzanie opcji..............................................................................363
20.9. Parsowanie z zastosowaniem funkcji DOM-XML ................................................364
20.10. Tworzenie dokumentu XML................................................................................367
20.11. Przeksztacanie XML za pomoc XSL ................................................................369
20.12. Filtrowanie danych wyjciowych za pomoc pliku XSL.....................................370

Cz V

API Zend .....................................................................371

Rozdzia 21. API Zend ....................................................................................... 373


21.0. Wprowadzenie........................................................................................................373
21.1. Pobieranie argumentw..........................................................................................374
21.2. Modyfikowanie argumentw funkcji .....................................................................376
21.3. Zwracanie acuchw znakw lub liczb przez funkcj..........................................378
21.4. Zwracanie tablic i obiektw przez funkcj ............................................................379
21.5. Dodawanie funkcji do PHP ....................................................................................381
21.6. Tworzenie identyfikatorw zasobw .....................................................................382
21.7. Pobieranie identyfikatorw zasobw .....................................................................383
21.8. Przechodzenie w ptli przez tablice .......................................................................384
21.9. Tworzenie moduu PHP .........................................................................................386
21.10. Dodawanie wasnego pliku do instalacji PHP......................................................400

Spis treci

11

Dodatki .......................................................................................403
Dodatek A Instalacja PHP............................................................................... 405
Dodatek B Identyfikowanie i usuwanie usterek w PHP ..................................... 411
Najczstsze bdy i co one oznaczaj..............................................................................411
Techniki unikania bdw i usterek ................................................................................413

Dodatek C Zasoby online PHP......................................................................... 415


Oficjalna witryna PHP ...................................................................................................415
Witryna Zend...................................................................................................................415
PHPBuilder......................................................................................................................416
PHPWizard.net ...............................................................................................................416
Repozytorium klas PHP ..................................................................................................416
Weberdev ........................................................................................................................416
DevShed ..........................................................................................................................417

Dodatek D Migracja do PHP4.......................................................................... 419


Inicjujce zmienne statyczne i argumenty domylne akceptuj tylko wartoci skalarne.......419
Instrukcje break i continue maj zasig lokalny wzgldem plikw doczanych
lub acuchw znakw przetwarzanych funkcj eval ..................................................420
Instrukcja return z pliku doczanego instrukcj require nie dziaa................................420
Unset jest teraz instrukcj, a nie funkcj.........................................................................421
"{$" nie jest obsugiwane w acuchach znakw............................................................421

Skorowidz...................................................................................... 423

Rozdzia 10.

Utrzymywanie sesji
w PHP
Prawdziw sztuk pamici jest sztuka skupiania uwagi.
Samuel Johnson
W rozdziale tym poruszone zostan zagadnienia zwizane z utrzymywaniem stanu
procesem polegajcym na zachowywaniu wartoci zmiennych midzy wywoaniami kolejnych skryptw. Najpierw omwione zostan nowe mechanizmy zarzdzania sesjami w PHP4, po czym przejdziemy do czci powiconej niewielkiemu systemowi koszykw na zakupy. Nastpnie przyjrzymy si funkcjom serializacji w PHP
(w tym WDDX), ktre stanowi wydajny sposb przechowywania zmiennych PHP.

10.0. Wprowadzenie
HTTP jest protokoem bezstanowym, co oznacza, e po opuszczeniu przez uytkownika strony WWW lub zakoczeniu dziaania aplikacji komputer utraci wszelkie dane
dotyczce przeprowadzonych transakcji (chyba e oprzesz si na dziennikach zdarze
systemowych serwera WWW). Poczwszy od Netscape 3.0, firma Netscape rozwizywaa ten problem za pomoc cookies. Cookies to pliki przechowywane na komputerze uytkownika, dostpne dla skryptu, ktry je wysa. Umoliwiaj one zapisywanie
i odczytywanie informacji o ewentualnych wczeniejszych wizytach, ktre uytkownik odby na stronie WWW.
czc cookies i bazy danych, moesz zapisywa na swoim komputerze kady bit informacji posiadanych na temat uytkownika oraz odczytywa je, stosujc unikalny identyfikator przypisany temu uytkownikowi, przechowywany w cookie na jego komputerze.
Podejcie takie wymagao jednak znacznego nakadu pracy programistw, a uruchomienie
zabierao duo czasu. Dlatego aby uatwi Ci ycie, grupa zajmujca si rozwojem
PHP udostpnia cile zintegrowany zbir narzdzi sucych do zarzdzania sesjami.

Cz I Konstrukcje i techniki jzykowe

208

To, co w kadym przypadku wymagao dotychczas od dwudziestu do stu wierszy kodu, teraz zajmuje co najwyej kilka wierszy dobrze przemylanego kodu rdowego.

Jak to dziaa?
Sesje dziaaj w nastpujcy sposb. W wyniku wywoania funkcji  

lub   
PHP aduje ze schowka sesji zapisane dane dotyczce sesji.
Podczas wykonywania skryptu moesz za pomoc funkcji   
rejestrowa dane, ktre maj zosta zapisane w schowku sesji. W momencie zakoczenia
wykonywania skryptu PHP zmienne sesji zostaj zapisane w schowku sesji, ktrego
cieka wskazywana jest przez pozycj   w pliku php.ini. Przypisany
sesji unikalny identyfikator jest wstawiany do pliku cookie i wysyany do uytkownika,
ale to dzieje si tylko przy pierwszym uruchomieniu sesji.

Czasami serializacja
Jednym ze sposobw utrzymywania stanu jest zastosowanie moduu sesji. Jednak
w niektrych przypadkach nie bdziesz zmuszony korzysta ze wszystkich moliwoci
tego moduu wystarczy zapisywanie i odczytywanie pewnych zmiennych. W takiej
sytuacji moesz zastosowa udostpniane przez PHP funkcje serializacji ( 

i  
) lub skorzysta z doczonego rozszerzenia WDDX, ktre zapisuje
zmienne PHP w standardowym formacie, przez co mog one by pniej odczytywane
i wykorzystywane przez inne jzyki.

10.1. Tworzenie zmiennej sesji w PHP


Chcesz utworzy zmienn sesji przy zastosowaniu PHP.

Technika
Aby zarejestrowa zmienn sesji, zastosuj funkcj   
:


   
 

 
 
 

 


Uwagi
W PHP istniej obecnie trzy typy zmiennych o rnym zasigu i speniajce rne cele.
Pierwszym typem zmiennej, majcym najmniejszy zasig, jest zmienna lokalna. Zmienne

Rozdzia 10. Utrzymywanie sesji w PHP

209

lokalna to kada zmienna znajdujca si w zasigu funkcji i istniejca tylko na czas


wykonania tej funkcji. Przeanalizujmy nastpujcy przykad:

   !"  "#
$!    
!"  !"%
 !"#  
  !  !"
&
 !"  
!"   
 !"  
!" '
 !" ( 
!" '
  )*+ !"   !" ,  ,
*+ !"   !" ,  ,
*+ !" (  !" (,  , )


W powyszym przykadzie zmienna  ma zasig lokalny, a wic jej warto nie
jest dostpna spoza zasigu funkcji 
.
Nastpnym typem zmiennej jest zmienna globalna, czyli kada zmienna zadeklarowana poza klas lub funkcj (lub zadeklarowana instrukcj  albo za porednictwem tablicy ). Zmienne globalne istniej przez cay czas trwania skryptu.
Ostatnim typem zmiennej wprowadzonym w PHP4 jest zmienna sesji. Zmienna sesji
moe (teoretycznie) trwa wiecznie, chyba e Ty lub uytkownik j usuniecie (dziki
odpowiedniemu ustawieniu opcji konfiguracyjnych zmienne takie mog rwnie by
automatycznie usuwane po upywie pewnego czasu).
Tak wic zmienne sesji to po prostu zwyke zmienne zadeklarowane przy uyciu funkcji
  
. Zmienne te mog by dowolnego typu obsugiwanego przez PHP:
tablic, acuchem znakw, liczb, a nawet obiektem. Zachowanie   

zaley od wartoci parametru konfiguracyjnego    . Jeli wartoci
    jest ,   
 zapisze zmienn globaln 
w schowku sesji. Jeeli natomiast ma on warto , wykorzystana zostanie tablica
 !"#$%&'( i nastpi zapisanie  !"#$%&'(.
Podczas lektury tego rozdziau pamitaj o poruszonych tu kwestiach. W dalszej kolejnoci bdziemy zajmowa si takimi kwestiami, jak:
 Zapisywanie zmiennych sesji w bazie danych.
 Utrzymywanie sesji przegldarki midzy odsonami kolejnych stron WWW.
 Ustawianie i pobieranie nazw sesji.
 Usuwanie zmiennych sesji.
 Znajdowanie cieki, w ktrej zapisany jest identyfikator sesji.

Cz I Konstrukcje i techniki jzykowe

210

10.2. Zapisywanie sesji


przy uyciu bazy danych
Wolisz zapisywa dane sesji w bazie danych, a nie w systemie plikw.

Technika
Zastosuj funkcj )
, aby zarejestrowa funkcje operujce na
bazie danych:
Skrypt 10.1.

---"   
--    
--
  (   !.
--
  /    !.
--
/    !      !.
-- " 010
 
- ! 
 234
--5"   
 67**
$!   

  
 .
"%
  
 23  "08--!   9 -:;<=
:=::;>6:. !
$23=   %
   $3?@ AB CB. D  E . D  F 
&
&
$!   

 
%
--<$! 1G "!  H.
--!I0J"0?@+  ? 
&
$!   

 10
%
  
 " ) 
 $ " )
 " 4)K 
 10)
 " 4) 
/    K)

Rozdzia 10. Utrzymywanie sesji w PHP


  D8! 0 
 K D$ LK23
M=<ENF>2=
O::>E
  !  KA
 C
&
$!   

K  10.
%
  
 
 
 " )    !10.. K(P)
!  
 " )!    
 .)
!  
 " 4)
/    K(P)
!  
 " 4)K 
 10)
--6G K Q!G"0   GJ + +?.+ + .
--IGG G!I+ K  +G@!1 ! H
$23=   D8! 0 
 " 
 D8! 0!  
 " 
&
$!   

 010
%
  
 " )  $ " K 
 10)
 D8! 0 " 
&
$!   

"/
$ "
%
  
--R 0" +01? + S +"0 KH " !"/
$ "
--T  !!! "0K+0 1G.1 Q K0 ?0
 " )  $ " K 
/    K)
 D8! 0 " 
&

  
--5 G !G+" @!  G1+SJHG

   )!  )
--R1I$! 1G +K0K G



  )

  ).)

 ).
)

 ).)

K  ).
)

 0).)

)
--: K U"0.S  
!  
  !  

211

Cz I Konstrukcje i techniki jzykowe

212

 0


Uwagi
Funkcja )
umoliwia wskazanie funkcji obsugi, ktre bd
wywoywane przez system sesji w celu wykonania operacji rozpoczcia, zakoczenia,
zaadowania i zapisania sesji.
Pierwszym argumentem )
jest funkcja, ktra bdzie wywoywana przez system sesji w momencie inicjacji sesji. Funkcja ta pobiera dwa argumenty: pierwszy to cieka, w ktrej przechowywana bya sesja (jest ona taka sama,
jak warto dyrektywy  ), a drugi to nazwa ustawionego cookie sesji
(domylnie jest to !!"#*).
Nastpnym argumentem jest funkcja wywoywana w momencie zakoczenia sesji
(zazwyczaj na kocu wykonania skryptu) i powinna ona czyci wszystkie dane.
Funkcja ta nie pobiera adnych argumentw.
Trzecim argumentem funkcji )
jest funkcja wykonywana
w momencie, gdy konieczne jest odczytanie danych sesji ze schowka sesji. Argumentem pobieranym przez t funkcj jest identyfikator sesji (a wic otrzymuje ona
co w rodzaju +,,,-)+-.+.//012-)203///041.). Identyfikator sesji to losowa liczba
wygenerowana, eby utrudni hakerom odgadnicie identyfikatora sesji (i przez to uzyskanie dostpu do danych uytkownika).
Czwartym argumentem )
jest funkcja wykonywana w momencie, gdy zachodzi konieczno zapisania danych w schowku sesji. Funkcja wskazywana przez ten argument pobiera warto identyfikatora biecej sesji (patrz poprzedni
akapit) oraz dane sesji majce posta pojedynczego acucha znakw.
Pitym argumentem )
jest funkcja wykonywana w sytuacji,
gdy warto sesji ma ulec zniszczeniu. Funkcja ta pobiera argument, ktrego wartoci jest identyfikator biecej sesji.
Szstym i ostatnim argumentem )
jest funkcja odmiecania.
Jest ona co jaki czas wywoywana przez system sesji w celu usunicia tych sesji, ktre
ju wygasy. Funkcja wskazywana przez ten argument pobiera liczb sekund, po upyniciu ktrych dane sesji powinny zosta uznane za przestarzae i usunite.
Funkcja )
stanowi podstaw przystosowywania mechanizmu zarzdzania sesjami w PHP do wasnych potrzeb. Cho moe nie wydaje si to
atwe, pobaw si ni troch. Wyprbuj jakie trywialne skrypty wraz z 
)
, a sam zobaczysz, jakie to proste.

Rozdzia 10. Utrzymywanie sesji w PHP

213

10.3. Ustawianie nazwy sesji


Nazwa sesji to nazwa przechowywana przez przegldark uytkownika i wywietlana tym
uytkownikom odwiedzajcym stron WWW, ktrzy maj ustawione ostrzeganie o cookies.
Chcesz zmieni nazw sesji z takiej, jaka okrelona jest w pliku konfiguracyjnym.

Technika
Aby zmieni nazw cookie sesji, zastosuj funkcj 
. Pamitaj, e naley
j wywoywa przed funkcjami   
i  
:
Skrypt 10.2.


 
"R < 1 
---K0K? + " QK
"
--+K Q1 ! @ +KSG
- K
 
"
--+ G !G K@+" @G

   
 
  )2 0+K +KG +"?
 .)
  ) K +KG  K
 )


Uwagi
Domyln wartoci nazwy cookie przechowywanego przez przegldark uytkownika
jest !!"#*, lecz nie jest to nazwa zbyt wiele mwica. Tak naprawd wikszo
spord uytkownikw, ktrzy maj wczone ostrzeganie o cookies i zostan poproszeni o zaakceptowanie cookie o nazwie !!"#*, najprawdopodobniej bdzie si waha. Funkcja 
pozwala na zmian nazwy cookie w fazie wykonania, dziki
czemu nie musisz wprowadza zmian na caej witrynie, modyfikujc warto parametru   w pliku php.ini.
Istnieje kilka zasad dotyczcych wywoywania funkcji 
. Po pierwsze,
nazwa sesji musi by alfanumeryczna nie moe zawiera znakw zapytania, tyld
(5) i tak dalej. Po drugie, aby wywoanie funkcji 
przynioso odpowiednie efekty, musi ona by wywoywana przed funkcjami  
i 
 
.
Wywoana z parametrem 
zmieni warto zmiennej nazwy sesji i zwrci
nazw dotychczasow. Jeli jednak 
zostanie wywoana w kontekcie
), zwrci po prostu nazw biecej sesji w postaci acucha znakw.

Cz I Konstrukcje i techniki jzykowe

214

10.4. Ustawianie i pobieranie


parametrw cookie
Chcesz pobiera lub ustawia parametry cookie w fazie wykonania, a nie w pliku php.ini.

Technika
Aby ustawi parametry, zastosuj funkcj 46 
, ktra umoliwia ustawienie czasu ycia cookie, jego cieki oraz domeny:



1
 " "VP.-1 .  "! " 4"


Aby odczyta parametry cookie, zastosuj funkcj  46 


:
Skrypt 10.3.

1
 "

1
 "
  )E+I011
 "A$ "C,  ,
WI111
 "A C,  ,
2" 11
 "A " C,  , )


Uwagi
Funkcja 46 
ma nastpujc skadni:
 

1
 " +
+0A.  +1A.   " CC

Umoliwia ona modyfikowanie w fazie wykonania parametrw cookie okrelonych


w pliku php.ini. Parametr 474 okrela, ile czasu ma upyn do wyganicia cookie. Opcjonalny parametr 46 wskazuje ciek, w jakiej cookie bdzie przechowywane, a ) domen, ktra bdzie udostpnia cookie. Funkcja zwraca warto 3
w razie powodzenia i 2 w przypadku niepowodzenia; jeli nie zostan podane adne
argumenty, funkcja zwrci tablic z aktualnymi ustawieniami.
Wszystkie wspomniane parametry mona ustawia w pliku php.ini, jednak czsto lepiej
mie moliwo zmieniania opcji sesji w fazie wykonania, zwaszcza w przypadku
czego tak charakterystycznego jak cookies.
Funkcja  46 
zwraca tablic zawierajc ustawienia czasu ycia,
cieki i domeny cookie, a wic mona zastosowa  46 
do
upewnienia si, e wykonanie 46 
zakoczyo si powodzeniem:

Rozdzia 10. Utrzymywanie sesji w PHP

215


$ " "VP
 -1 
 " 4  
$

1
 "$ ". . " %
1
 "

1
 "
$1
 "A$ "C$ "XX
1
 "A C XX
1
 "A " C " %
  )Y  !G.$! 1G

1
 "  K S
+ +??)
&
&


10.5. Wyrejestrowywanie zmiennej z sesji


Musisz usun zmienn sesji lub wyrejestrowa j przed zakoczeniem wykonywania skryptu.

Technika
Aby usun zmienn z sesji, zamiast 
zastosuj funkcj   
:


   " 
$

    " %

!    "   6"I K0 G KH" 
&


Uwagi
Funkcja   
usuwa wskazan zmienn z rejestru sesji, a wic w momencie zapisywania sesji nie bdzie ona ju zawiera wyrejestrowanej zmiennej. Funkcja
ta nie usuwa jednak zawartoci zmiennej.

10.6. Usuwanie wszystkich zmiennych sesji


Chcesz usun wszystkie zmienne z biecej sesji.

Technika
Aby wymaza sesj, zastosuj funkcj ) 7
:

Cz I Konstrukcje i techniki jzykowe

216
Skrypt 10.4.


  

   )$)

   )$ )

   )$  )

$ 0)  ).)G?1).)" Z+).)" )


$ )K)
$  )K +0K)

 0
  $ 


Uwagi
Funkcja ) 7
usunie wszystkie dane sesji ze schowka sesji. Zauwa jednak, e nie zostan usunite zawartoci zmiennych sesji. Aby to osign, bdziesz musia
zastosowa funkcj 
i przej przez wszystkie zmienne sesji, usuwajc
je z tabeli symboli.

10.7. Stosowanie obiektu


jako zmiennej sesji
Masz problemy z adowaniem obiektw z sesji.

Technika
Pamitaj, e w kadym miejscu, w ktrym uywasz obiekt, musisz doczy definicj klasy.
obiekty/std_class.inc

---T1
4 
--5K  $ GS10 +S @   .
--01 "Q ?0H+" @G4
-M
%
  "
 "

Rozdzia 10. Utrzymywanie sesji w PHP

217

---T  $! 1G!1+!G@  S K0


-$!     "+
"
%
 " 
)-4-).),,). D "
  ! !  "..'
&
&


obiekty/main.php

---T1" 4
--<!S +"0+0KH +0 0KH1
- ! 
 
4 

   $ 
$[$ %
$  KM
$ D "):   N! )
$ D")   94  )
$ D  "+
"
&

 $) / T 4)\1 G ! G-

obiekty/nextPage.php

---T1 / T 4
--R0JK "S  G!G@10  ! KG@+" 0
- ! 
 
4 

   $ 
  $ D "


Uwagi
W czasie, gdy powstawaa ta ksika, aby zapewni prawidowe funkcjonowanie moduu
sesji PHP z obiektami, konieczne byo doczenie definicji klasy przed rozpoczciem
sesji. Operacja taka musi zosta wykonana w przypadku kadego obiektu przechowywanego w sesji. W nastpnych wersjach PHP moe si to zmieni, jednak obecnie
czynno taka jest niezbdna. Jeli definicja klasy nie zostanie doczona, kadorazowa prba uzyskania dostpu do metody lub waciwoci obiektu spowoduje wywietlenie przez PHP ostrzeenia informujcego o koniecznoci wczeniejszego doczenia definicji klasy.

Cz I Konstrukcje i techniki jzykowe

218

10.8. Kodowanie danych


Chcesz zapisa wszystkie zmienne sesji w formie acucha znakw i z powrotem wczyta je
do zmiennych w pniejszym czasie.

Technika
Zastosuj funkcje 4)
i )4)
:
kodowanie/write.php


   )" 10)
" 10 0)K +H).) H)
 
" 10
  
$9$ )
" 104 / ).)K)  )6"I  K +0H

" 104 / )
9$K  $. 
" 10
9$$  )6"I +"1 @H
" 04 / )
  )E+0 J+ )


kodowanie/read.php

$9$ )
" 104 / ).) )  )6"I  K +0H
" 104 / )
  $  $.$+)
" 104 / )
9$$  )6"I +"1 @H
" 104 / )

   
$ " 10  %
  )  ,  , )
&


Opis
Funkcja 4)
pobiera wszystkie informacje biecej sesji i koduje je do postaci acucha znakw, ktry moe by parsowany przez funkcj )4)
.
Nastpnie )4)
parsuje ten acuch znakw i na podstawie zawartych
w nim informacji tworzy zmienne sesji.

10.9. Tworzenie koszyka na zakupy


z zastosowaniem sesji w PHP
Nastpna cz tego rozdziau bdzie dotyczy przechowywania zmiennych i danych,
myl jednak, e zanim do niej przejdziemy, cz rozdziau dotyczca sesji powinna
zosta zakoczona skryptem. Napisaem wic niewielki skrypt koszyka na zakupy

Rozdzia 10. Utrzymywanie sesji w PHP

219

zawierajcy wszystkie niezbdne funkcje (dodawanie produktw, usuwanie ich z koszyka i podgldanie). Zwr jednak uwag, e w skrypcie tym brakuje fragmentu realizujcego wysanie zamwienia to wykracza ju poza temat naszych rozwaa.
koszyk/site_lib.inc

--- 
4 DD
--5K $! 1GS* T  ! 4
---<  +K+0 1"  !1 "
--* " 
  ! 
 K0?   ++$! 1GS* T  ! 4
" 
  ! 
  0
--- * T  !  
--] !GK+0 1  !1 0.G1" @+ UHSK1+01!.
--   G 0" 
  ! 
 4
-$!   * T  ! %
 " 
  ! 
 
$ "  ! 4 / 
$9$ $ ".) )  )6"I  K +0H$ ")
--6K+1K0 1 1? "01 SKQ?!I0 1K @
--"?0+ + . 00J"0 QK I+0K   1!4
9$1$.  )6"I  ?I0H1 0KQ?!I0 1K G 
$ ")
K $  $.^%
  . ". . / _. 
  " -- G  + + 1
" 
  ! 
 A C 0) ") ".
) ) .
) ) 
&
9$$  )6"I +"1 @H$ ")
&


koszyk/products.txt
1 (_LK _6G$G G+0 K  JK_(4V(
11_: 0T0   _=10 !G@  _(4

koszyk/cart.php

--- 41 ?QK 0
- 8!  
4 

    --LG !G"0 +@GS
--; G!G1+01.GJ + ?G+++ GK 0

Cz I Konstrukcje i techniki jzykowe

220

$[  A !"


 "C%
  0) !"
 ").)  ! ) 0
&
--5? !G S" 
  ! 
 + 
4 
* T  ! 

 "
 
  :1++K1":  -  
- 
 0
R GK1++K1":   -

$ A !"
 "C%--`JG J 1+ 

T  !1 0+ G !G@SK<K"1+01!-
 
   ))  )') ))
 
 
6+K  !1 !
- 
 
\ Q 1
- 
 
E 
- 
 
;JH
- 
 
X 
- 
- 

--T +G U ++K+0 1  !1 0
$  A  ! C  ! %
  !
   ! AC
8!  0  ! AC
  8!  0# !" 
  ! 
 A  !
 CA C

 
 
" 
  ! 
 A  !
 CA "C
- 
 
" 
  ! 
 A  !
 CA C
- 
 
" 
  ! 
 A  !
 CA C
- 
 

Rozdzia 10. Utrzymywanie sesji w PHP

221

$ "  ) 


8! 4)"  )Y=<)
 !  0)  ) ") )!))
 !  0) / )+)() ")8!  0)!)8!  0
)
- 
 
 !  0)!" )!)5"ZJH)
-$ "
- 
- 

&

 
  ))
L+"-
- 
  ))
  T*6
- 
- 
- 
 
 

&

5K1  S K1++K1":   -
 

F"0K$   S!G@+K1
-
 
   ))  )') ))
 
 
6+K  !1 !
- 
 
>  !1 !
- 
 
E 
- 
 
X 
- 
- 

--T1IK+0 1  !1 0
$ " 
  ! 
   !
  "%

 
 
 "A "C
- 
 
 "A C

Cz I Konstrukcje i techniki jzykowe

222

- 
 
 "A CT*6
- 
 
 $)
 "4   !
 )
2 G    !1  1+01
-
- 
- 

&

- 
- 0
- "

koszyk/add_item.php

---
 "4
--2 G  !1  1+01 +1!0
- 8!  
4 --* T  ! 
* T  ! --] !G  !1 0+" 
  ! 

--7 KQ +  @ S!
  !
!
  !  0
--T +G U ++  !1 0+ +0"GS +0 0".
--1 Q 0   !G
$ " 
  ! 
  
   ! %
$ " 
  " %
!
  !   ! 
&
&
--5 G !GGS

    
$   %--`J+ ?K0  0  !1
 0
! A  ! C. 0 " .8!  0
 A !"
 "C8!  0
&

 "
 
  
$   %
2  !
  ! A "C 1+01 +1!0
&%
2 G!
  ! A "C 1+01 +1!0
&
-  
- 

Rozdzia 10. Utrzymywanie sesji w PHP


 0
$   %
!
  ! A "C
+ ?   0 1+01 +1!0-
 $) 4)R QH-1 0 !!G+1!04
&%
2 G!
  ! A "C 1+01 +1!0-
$ "  )TNT
:=*M)"  )Y=<)
6+K  !1 !!
  ! A "C
 
>  !1 !!
  ! A C
 
E   !1 !!
  ! A C
 
;JH  !1 ! !  0) / )+)a) ")8!  0)
 !  0)  ) ") )!) )
 !  0)  ) ")   )!))
 !  0)!" )!)2 G 1+01)
-$ "
&
- 0
- "

koszyk/change_quant.php

--- 
8! 4
--5" JH  !1 !K1+01! +1!04
-
    --+ G !GGS
--L+! K  0!  .0!K HS.
--I "0K?JK0"
  
--5+  0+K@JH  !1 !K+ K0
-- +0G@K0JK H

!" A  ! CACAC
$8!  0%
 A  ! CACAC8!  0--+"ZJH
&%
!   A  ! CAC--   !1  G +K+"  
&
--71 ! G+S  !1 QK
 A !"
 "C
!"8!  0
 A !"
 "CD
!"D8!  0
 A !"
 "C8!  0D
!"

 "
 
  

223

Cz I Konstrukcje i techniki jzykowe

224

;JH+ ?+"  
-  
- 
 0
;JH+"  +
!" 8!  0-
 $) 4)R QH-1!!G G4
- 0
- "

10.10. Serializacja
Chcesz zapisa zawarto zmiennej w postaci acucha znakw.

Technika
Utwrz funkcje implementujce funkcje  
i  
, a nastpnie odczytuj i zapisuj dane do pliku:
serializacja/loadsave.inc

---T1 4 
--3 1$! 1G+!G@0
-- +0 !G@0   +1!
----    "
--5!GK JH+" G " 1!4
-$!    %
  
   + --?Z!  + !G@0
$ ")
 +
 -)4 4)4 / )
$9$ $ ".)K)  )6"I  K +0H$ " +!)
$K  $.  
9$$  )6"I +"1 @H$ ")
  !  !
&
---     "
--] !GK JH+" G "+1!4
-$!     
%
  --7"JH+ @+" @K+S !  0"
$ ")
 +
 -)4 4)4 / )
$9$ $ ".) )  )6"I  K +0H$ "  +0 !)
  $  $.$+$ "

Rozdzia 10. Utrzymywanie sesji w PHP

225

9$$  )6"I +"1 @H$ ")


 !  +  
  !  !
&


Nowo utworzone funkcje mona wywoywa w nastpujcy sposb:


serializacja/save.php

 !  4 
$)+JH)
$

 $) 4)\1 G ! G-

serializacja/load.php

 !  4 
 $
  $


Uwagi
Funkcja  
tworzy acuchow reprezentacj danych PHP, niezalenie od tego,
czy dane te maj posta tablicy, obiektu, zwykego acucha znakw czy liczby. Funkcja
 
odczyta ten acuch znakw i przywrci mu oryginaln form. Jest to
dosy podobne do dziaania programw kompresji i dekompresji, takich jak bzip czy
gzip. Zauwa, e w przypadku deserializacji obiektw musisz najpierw zaadowa definicj klasy obiektu, podobnie jak w przypadku sesji.

10.11. Serializacja WDDX


Chcesz przeprowadzi serializacj wielu zmiennych naraz, a nie kadej zmiennej oddzielnie,
albo chcesz, by zmienne mogy by wspuytkowane z innymi jzykami lub procesami

Technika
Zastosuj funkcje WDDX, ktre przeprowadzaj serializacj zgodn ze standardem
WDDX opisanym na stronie http://www.wddx.org/.


 " 0)FS KD+1 K).)R K).)E+1 K).)\KK)
1
 K /
1
  )TNT)
K /

 1
 .)
 ")
1 K /
1
 1
 


Cz I Konstrukcje i techniki jzykowe

226

Uwagi
Format WDDX, czyli Web Distributed Data eXchange, to ... mechanizm wymiany
zoonych struktur danych midzy rodowiskami aplikacji (http://www.wddx.org/
DTD.htm). Mwic w skrcie, przeprowadzanie serializacji z zastosowaniem funkcji
WDDX polega na tym, e funkcje te tworz pakiety zawierajce informacje na temat
zmiennych.
Pakiety te mog by przechowywane oraz z powrotem wczytywane do programu, podobnie jak robilimy to za pomoc funkcji  
i  
w podrozdziale 10.10. Kolejnym popularnym zastosowaniem WDDX jest serializacja zmiennych w formacie WDDX w celu umoliwienia ich odczytywania i wykorzystywania
przez inne programy.

10.12. Deserializacja WDDX


Dysponujesz acuchem znakw powstaym po serializacji WDDX i chcesz z powrotem wydoby z niego dane.

Technika
Zastosuj funkcj 8))9) 
do odkodowania acucha WDDX i wczytania
go do zmiennej PHP:
Skrypt 10.5.

$  

K 0)F#O#:#N).): $ ).):" K)
 / K /
 +
 )$  

K)
$  

K
  K /
 + / 
$ $  

K
  $  
K%
$ $  
KK%
  )K,  , )
&
&


Uwagi
Funkcja 8))9) 
pobiera pakiet WDDX i konwertuje go do postaci tablicy
z odpowiadajcymi zmiennymi PHP. Jednym z ciekawszych zastosowa 8))9) :

jest pobranie pakietw WDDX wygenerowanych przez inne jzyki i przetumaczenie ich na zmienne PHP.

You might also like