Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00056 009135 10485392 na godz. na dobę w sumie
PHP4. Podręcznik programisty - książka
PHP4. Podręcznik programisty - książka
Autor: Liczba stron: 448
Wydawca: Helion Język publikacji: polski
ISBN: 83-7197-795-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook, audiobook).
Od teorii do praktyki prowadzi długa droga. Nie inaczej jest w przypadku PHP4, popularnego języka służącego do tworzenia aplikacji WWW. Oficjalna dokumentacja stanowi jedynie wstęp -- w praktyce programista często staje wobec problemów, których rozwiązań nie zawiera sam opis języka.

Książka ta stanowi kombinację podręcznika i instrukcji. Przedstawia treści, które nie znalazły się w dokumentacji, a w wielu przypadkach znacznie tę dokumentację rozszerza. Pomimo tego, że nie jest to kompletna instrukcja, staniesz się po jej lekturze dużo lepszym programistą -- będziesz miał solidne podstawy do rozwiązywania problemów programistycznych.

Opisano w niej:

'Sterling i Andrei stworzyli podręcznik zawierający rozwiązania konkretnych problemów, przedstawiając jednocześnie informacje niezbędne do rozwiązania niemal każdego problemu'. -- Rasmus Lerdorf, twórca PHP
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl PHP4. Podrêcznik programisty Autor: Sterling Hughes T³umaczenie: Daniel Kaczmarek ISBN: 83-7197-795-6 Tytu³ orygina³u: PHP Developer s Cookbook Format: B5, stron: 422 Przyk³ady na ftp: 77 kB Od teorii do praktyki prowadzi d³uga droga. Nie inaczej jest w przypadku PHP4, popularnego jêzyka s³u¿¹cego do tworzenia aplikacji WWW. Oficjalna dokumentacja stanowi jedynie wstêp — w praktyce programista czêsto staje wobec problemów, których rozwi¹zañ nie zawiera sam opis jêzyka. Ksi¹¿ka ta stanowi kombinacjê podrêcznika i instrukcji. Przedstawia treġci, które nie znalaz³y siê w dokumentacji, a w wielu przypadkach znacznie tê dokumentacjê rozszerza. Pomimo tego, ¿e nie jest to kompletna instrukcja, staniesz siê po jej lekturze du¿o lepszym programist¹ — bêdziesz mia³ solidne podstawy do rozwi¹zywania problemów programistycznych. Opisano w niej: • Operacje na ³añcuchach znaków • Pracê z liczbami, datami i czasem • U¿ycie tablic w PHP • Wbudowane tablice i sta³e PHP • Wyra¿enia regularne • Pracê z plikami i katalogami • Tworzenie w³asnych funkcji • Klasy i obiekty w PHP • Sesje • Pisanie aplikacji niezale¿nych od baz danych • £¹czenie kodu PHP z programami napisanymi w innych jêzykach • Obs³ugê poczty elektronicznej • U¿ycie protoko³ów SNMP i LDAP • Tworzenie grafiki w PHP • Pracê z dokumentami XML „Sterling i Andrei stworzyli podrêcznik zawieraj¹cy rozwi¹zania konkretnych problemów, przedstawiaj¹c jednoczeġnie informacje niezbêdne do rozwi¹zania niemal ka¿dego problemu”. — Rasmus Lerdorf, twórca PHP Spis treści O Autorach ...................................................h................................... 13 Przedmowa...................................................h................................... 15 Wprowadzenie ...................................................h.............................. 19 Część I Konstrukcje i techniki językowe......................................25 Rozdział 1. Operacje na łańcuchach znaków...................................................h.... 27 1.0. Wprowadzenie...................................................a...................................................a......27 1.1. Rozkładanie łańcuchów znaków ...................................................a.............................27 1.2. Stosowanie operatora trójargumentowego ...................................................a..............31 1.3. Wymiana wartości zmiennych ...................................................a................................32 1.4. Konwersja kodów ASCII w znaki...................................................a...........................33 1.5. Dzielenie łańcucha na pojedyncze znaki...................................................a.................34 1.6. Odwracanie kolejności we fragmentach łańcuchów ..................................................36 1.7. Zmiana wielkości liter w łańcuchu...................................................a..........................37 1.8. Usuwanie pustych przestrzeni z łańcucha znaków ...................................................a.38 1.9. Ucieczka od znaków specjalnych w łańcuchach...................................................a.....39 1.10. Czytanie z pliku z tekstem dzielonym przecinkami.................................................40 1.11. Parsowanie adresu URL ...................................................a........................................42 1.12. Dopasowywanie przybliżone ...................................................a................................42 1.13. Tworzenie unikalnego identyfikatora...................................................a....................43 1.14. Szyfrowanie łańcucha znaków ...................................................a..............................44 1.15. Konwersja między zestawami znaków cyrylicy ...................................................a...46 Rozdział 2. Praca z liczbami, datami i czasem ...................................................h. 49 2.0. Wprowadzenie...................................................a...................................................a......49 2.1. Sprawdzanie, czy zmienna jest poprawną liczbą ...................................................a....50 2.2. Praca z ciągami liczbowymi...................................................a....................................51 2.3. Praca z liczbami nie będącymi liczbami całkowitymi ani zmiennoprzecinkowymi..52 2.4. Zaokrąglanie liczb o stałej precyzji...................................................a.........................54 2.5. Przekształcanie liczb o różnych bazach ...................................................a..................55 2.6. Obliczanie logarytmu liczby ...................................................a...................................56 2.7. Znajdowanie binarnej reprezentacji liczby ...................................................a.............57 2.8. Konwersja między liczbami arabskimi i rzymskimi ..................................................58 2.9. Weryfikacja poprawności numerów kart kredytowych .............................................58 2.10. Formatowanie liczb ...................................................a...............................................60 2.11. Konwersja między radianami i stopniami...................................................a.............61 2.12. Obliczanie cosinusów, sinusów i tangensów ...................................................a........62 2.13. Generowanie liczb losowych ...................................................a................................63 2.14. Generowanie unikalnych liczb losowych...................................................a..............64 2.15. Ważenie liczb losowych...................................................a........................................67 6 PHP4. Podręcznik programisty 2.16. Ładowanie dzisiejszej daty do tablicy...................................................a...................68 2.17. Weryfikacja poprawności daty...................................................a..............................69 2.18. Obliczanie odstępów czasowych...................................................a...........................70 2.19. Znajdowanie daty i godziny w innych regionach...................................................a..71 2.20. Formatowanie znaczników czasu...................................................a..........................72 2.21. Odczytywanie daty i godziny z łańcuchów znaków ................................................75 2.22. Przeprowadzanie testów wydajności...................................................a.....................77 2.23. Zatrzymywanie wykonania programu...................................................a...................81 Rozdział 3. Stosowanie tablic ...................................................h......................... 83 3.0. Wprowadzenie...................................................a...................................................a......83 3.1. Deklarowanie tablicy...................................................a...............................................84 3.2. Wypisywanie zawartości tablicy...................................................a.............................85 3.3. Usuwanie powtarzających się elementów...................................................a...............86 3.4. Powiększanie lub pomniejszanie tablicy...................................................a.................87 3.5. Łączenie tablic...................................................a...................................................a......88 3.6. Iteracyjne przetwarzanie elementów tablicy ...................................................a...........89 3.7. Uzyskiwanie dostępu do bieżącego elementu tablicy ................................................92 3.8. Uzyskiwanie dostępu do różnych obszarów tablicy ..................................................93 3.9. Przeszukiwanie tablicy...................................................a............................................94 3.10. Odnajdywanie elementów różniących dwie tablice .................................................95 3.11. Losowe ustawianie elementów w tablicy...................................................a..............96 3.12. Wyznaczanie iloczynu, różnicy i punktu przecięcia dwóch tablic...........................97 3.13. Sortowanie tablicy...................................................a.................................................98 3.14. Sortowanie naturalne...................................................a...........................................100 3.15. Odwracanie kolejności ...................................................a........................................100 3.16. Funkcje tablicowe analogiczne do języka Perl ...................................................a...101 Rozdział 4. Wbudowane tablice i stałe PHP...................................................h... 103 4.0. Wprowadzenie...................................................a...................................................a....103 4.1. Wykorzystanie stałych plikowych ...................................................a........................104 4.2. Stałe wersji PHP i systemu operacyjnego ...................................................a.............105 4.3. Ustawianie punktów kontrolnych za pomocą stałych błędów PHP.........................106 4.4. Definiowanie własnych stałych PHP ...................................................a....................107 4.5. Wykorzystanie zmiennych globalnych PHP ...................................................a.........108 4.6. Uzyskiwanie dostępu do danych za pośrednictwem wbudowanych tablic PHP .....110 Rozdział 5. Dopasowywanie danych do wyrażeń regularnych ............................. 113 5.0. Wprowadzenie...................................................a...................................................a....113 5.1. Przypisywanie wyników zastąpienia wzorca ...................................................a........120 5.2. Stosowanie w PHP wyrażeń regularnych zgodnych z Perlem.................................121 5.3. Niezgodności między biblioteką PCRE a wyrażeniami regularnymi Perla.............123 5.4. Dopasowywanie wielu wierszy...................................................a.............................125 5.5. Znajdowanie wystąpienia dopasowania o określonym numerze .............................126 5.6. Praca z separowanymi rekordami ...................................................a.........................128 5.7. Wyodrębnianie określonych wierszy ...................................................a....................129 5.8. Sprawdzanie znaków...................................................a.............................................130 5.9. Weryfikacja poprawności danych WWW...................................................a.............132 5.10. Weryfikacja poprawności adresu poczty elektronicznej........................................133 5.11. Sprawdzanie składni wyrażenia regularnego ...................................................a......133 5.12. Sprawdzanie powtórzeń słów...................................................a..............................134 5.13. Skracanie danych wejściowych...................................................a...........................135 Spis treści 7 Rozdział 6. Obsługa plików ...................................................h........................... 137 6.0. Wprowadzenie...................................................a...................................................a....137 6.1. Sprawdzanie, czy dany plik istnieje ...................................................a......................139 6.2. Sprawdzanie praw do pliku ...................................................a...................................140 6.3. Tworzenie pliku tymczasowego...................................................a............................141 6.4. Przechowywanie pliku wewnątrz programu ...................................................a.........142 6.5. Otwieranie pliku...................................................a...................................................a.143 6.6. Bezpieczna obsługa danych binarnych ...................................................a.................144 6.7. Opróżnianie bufora...................................................a................................................145 6.8. Blokowanie plików ...................................................a...............................................146 6.9. Sprawdzanie ilości wolnego miejsca na wskazanym napędzie................................148 6.10. Wyświetlanie zawartości pliku tekstowego użytkownikowi .................................149 6.11. Operacje na standardowych strumieniach wejścia-wyjścia ...................................150 6.12. Czytanie z pliku wiersz po wierszu...................................................a.....................151 6.13. Przetwarzanie pliku słowo po słowie ...................................................a..................152 6.14. Przetwarzanie pliku w odwrotnej kolejności ...................................................a......153 6.15. Parsowanie pliku na podstawie wzorcowych separatorów ....................................154 6.16. Zmiana wartości określonego rekordu ...................................................a................155 6.17. Uzyskiwanie dostępu do rekordów o stałej długości .............................................156 6.18. Odczytywanie z pliku pojedynczego wiersza ...................................................a.....157 6.19. Przycinanie pliku...................................................a.................................................158 6.20. Zliczanie wierszy w pliku ...................................................a...................................159 6.21. Odczytywanie z pliku losowo wybranego wiersza ................................................160 6.22. Ustawianie wierszy i słów w porządku losowym ..................................................161 6.23. Tworzenie plików konfiguracyjnych ...................................................a..................163 Rozdział 7. Praca z plikami w katalogach...................................................h...... 165 7.0. Wprowadzenie...................................................a...................................................a....165 7.1. Praca ze znacznikami czasu ...................................................a..................................166 7.2. Usuwanie pliku...................................................a...................................................a...166 7.3. Kopiowanie lub przenoszenie pliku ...................................................a......................167 7.4. Śledzenie nazw plików...................................................a..........................................168 7.5. Parsowanie części nazwy pliku ...................................................a.............................169 7.6. Ładowanie wszystkich plików w katalogu do tablicy..............................................170 7.7. Przeszukiwanie systemu plików...................................................a............................170 7.8. Przetwarzanie katalogów plik po pliku ...................................................a.................172 7.9. Rekurencyjne usuwanie katalogu...................................................a..........................172 7.10. Tworzenie wyszukiwarki ...................................................a....................................174 Rozdział 8. Funkcje ...................................................h...................................... 181 8.0. Wprowadzenie...................................................a...................................................a....181 8.1. Przekazywanie do funkcji wartości domyślnej ...................................................a.....182 8.2. Dostęp do zmiennych spoza funkcji...................................................a......................183 8.3. Zwracanie wartości przez funkcję...................................................a.........................184 8.4. Przekazywanie argumentów przez odwołanie ...................................................a......185 8.5. Zachowywanie wartości zmiennej między kolejnymi wywołaniami funkcji ..........187 8.6. Zwracanie przez funkcję więcej niż jednej wartości................................................187 8.7. Dynamiczne deklarowanie funkcji...................................................a........................188 8.8. Dynamiczne tworzenie funkcji anonimowych...................................................a......189 8.9. Pośrednie wywoływanie funkcji ...................................................a...........................190 8.10. Pobieranie arbitralnie określonej liczby parametrów.............................................190 Rozdział 9. Klasy...................................................h.......................................... 193 9.0. Wprowadzenie...................................................a...................................................a....193 9.1. Tworzenie klasy ...................................................a...................................................a.194 8 PHP4. Podręcznik programisty 9.2. Uzyskiwanie dostępu do zmiennych z wnętrza klasy ..............................................195 9.3. Dziedziczenie ...................................................a...................................................a.....196 9.4. Tworzenie zmiennych lub funkcji publicznych lub prywatnych .............................198 9.5. Tworzenie konstruktora...................................................a.........................................199 9.6. Zwracanie innego obiektu przez konstruktor ...................................................a........200 9.7. Tworzenie destruktora klasy ...................................................a.................................201 9.8. Używanie funkcji klasy bez inicjowania obiektu...................................................a..202 9.9. Pośredni dostęp do metod klasy rodzica ...................................................a...............202 9.10. Zwracanie obiektu błędu w razie niepowodzenia ..................................................204 Rozdział 10. Utrzymywanie sesji w PHP ...................................................h.......... 207 10.0. Wprowadzenie...................................................a...................................................a..207 10.1. Tworzenie zmiennej sesji w PHP...................................................a........................208 10.2. Zapisywanie sesji przy użyciu bazy danych ...................................................a.......210 10.3. Ustawianie nazwy sesji ...................................................a.......................................213 10.4. Ustawianie i pobieranie parametrów cookie ...................................................a.......214 10.5. Wyrejestrowywanie zmiennej z sesji ...................................................a..................215 10.6. Usuwanie wszystkich zmiennych sesji ...................................................a...............215 10.7. Stosowanie obiektu jako zmiennej sesji...................................................a..............216 10.8. Kodowanie danych...................................................a..............................................218 10.9. Tworzenie koszyka na zakupy z zastosowaniem sesji w PHP...............................218 10.10. Serializacja ...................................................a...................................................a.....224 10.11. Serializacja WDDX...................................................a...........................................225 10.12. Deserializacja WDDX...................................................a.......................................226 Rozdział 11. Interakcja z witrynami i serwerami WWW ....................................... 227 11.0. Wprowadzenie...................................................a...................................................a..227 11.1. Pobieranie strony WWW ...................................................a....................................227 11.2. Przeprowadzanie transakcji SSL...................................................a.........................228 11.3. Przeprowadzanie wywołania HTTP POST ...................................................a.........230 11.4. Załadowywanie pliku w protokole HTTP...................................................a...........231 11.5. Wysyłanie cookies w ramach wywołania ...................................................a...........233 11.6. Dołączanie lub pomijanie nagłówków z transmisji cURL.....................................234 11.7. Łączenie się za pośrednictwem serwera proxy ...................................................a...235 11.8. Pobieranie informacji dotyczących transmisji cURL.............................................236 11.9. Interakcja z ramkami...................................................a...........................................237 11.10. Uzyskiwanie wszystkich URL ze strony WWW .................................................238 11.11. Wyszukiwanie łączy pustych i prawidłowych ...................................................a..239 11.12. Uzyskiwanie nowych łączy ze strony WWW ...................................................a...240 11.13. Tworzenie lustrzanej kopii strony WWW...................................................a.........242 11.14. Parsowanie i formatowanie pliku dziennika zdarzeń...........................................242 Część II Bazy danych...................................................n..............245 Rozdział 12. Tworzenie API niezależnego od baz danych w PHP .......................... 247 12.0. Wprowadzenie...................................................a...................................................a..247 12.1. Łącznik ...................................................a...................................................a.............249 12.2. Moduł MySQL ...................................................a...................................................a.251 12.3. Moduł mSQL...................................................a...................................................a....254 12.4. Moduł Oracle...................................................a...................................................a....256 12.5. Moduł MSSQL...................................................a...................................................a.258 12.6. Moduł ODBC ...................................................a...................................................a...260 12.7. Moduł PostgreSQL...................................................a..............................................261 12.8. Moduł InterBase...................................................a..................................................263 12.9. Moduł Sybase...................................................a...................................................a...265 Spis treści 9 Część III Wychodzenie na zewnątrz PHP......................................267 Rozdział 13. Łączenie z innymi programami i językami ........................................ 269 13.0. Wprowadzenie...................................................a...................................................a..269 13.1. Przechwytywanie danych wynikowych innego programu.....................................270 13.2. Wyświetlanie danych wynikowych programu ...................................................a....271 13.3. Otwieranie potoku do innego programu...................................................a..............271 13.4. Praca z gniazdami...................................................a................................................272 13.5. Praca z obiektami COM ...................................................a......................................273 13.6. Uzyskiwanie dostępu do predefiniowanych metod i klas języka Java...................275 13.7. Uzyskiwanie dostępu do własnych klas i metod języka Java ................................276 Rozdział 14. Komunikacja z gniazdami ...................................................h............ 281 14.0. Wprowadzenie...................................................a...................................................a..281 14.1. Klient TCP...................................................a...................................................a........281 14.2. Serwer TCP ...................................................a...................................................a......283 14.3. Czytanie z gniazd i zapisywanie do nich ...................................................a............284 14.4. Klient UDP...................................................a...................................................a.......285 14.5. Serwer UDP ...................................................a...................................................a.....287 14.6. Domeny gniazd Uniksa ...................................................a.......................................288 14.7. Obsługa wielu adresów IP...................................................a...................................290 14.8. Gniazda nieblokujące się...................................................a.....................................290 14.9. Odczytywanie i zapisywanie wektorów wejścia-wyjścia ......................................291 14.10. Sterowanie czasem transmisji danych...................................................a...............292 14.11. Sprawdzanie statusu gniazda...................................................a.............................293 Rozdział 15. Obsługa wiadomości poczty elektronicznej ..................................... 295 15.0. Wprowadzenie...................................................a...................................................a..295 15.1. Otwieranie skrzynki pocztowej IMAP...................................................a................296 15.2. Sprawdzanie, czy strumień IMAP jest nadal aktywny...........................................297 15.3. Przekształcanie wiadomości do czytelnej postaci..................................................298 15.4. Wysyłanie wiadomości poczty elektronicznej ...................................................a....298 15.5. Wysyłanie załączników przy użyciu PHP...................................................a...........299 15.6. Wysyłanie załączników binarnych...................................................a......................300 15.7. Wysyłanie wiadomości w formacie HTML ...................................................a........303 15.8. Sprawdzanie rozmiaru wiadomości ...................................................a....................305 15.9. Parsowanie nagłówków wiadomości ...................................................a..................305 Rozdział 16. Praca z obiektami SNMP...................................................h............. 307 16.0. Wprowadzenie...................................................a...................................................a..307 16.1. Ustawianie obiektu SNMP ...................................................a..................................308 16.2. Pobieranie obiektu SNMP...................................................a...................................308 16.3. Pobieranie wszystkich obiektów SNMP do tablicy ...............................................309 Rozdział 17. LDAP...................................................h.......................................... 311 17.0. Wprowadzenie...................................................a...................................................a..311 17.1. Dodawanie pozycji do serwera LDAP ...................................................a................311 17.2. Usuwanie pozycji z serwera LDAP ...................................................a....................312 17.3. Wykonywanie zapytania i pobieranie wyników ...................................................a.313 17.4. Zwalnianie zbioru wyników LDAP ...................................................a....................314 17.5. Przeszukiwanie drzewa ...................................................a.......................................315 17.6. Sortowanie wyników przeszukiwania...................................................a.................317 10 PHP4. Podręcznik programisty Część IV Generowanie innych języków ........................................319 Rozdział 18. Tworzenie obrazków i zarządzanie nimi ........................................... 321 18.1. Tworzenie obrazka z GD...................................................a.....................................322 18.2. Otwieranie obrazka już istniejącego ...................................................a...................323 18.3. Sprawdzanie rozmiaru obrazka ...................................................a...........................324 18.4. Dodawanie tekstu do obrazków ...................................................a..........................325 18.5. Sprawdzanie koloru określonej części obrazka...................................................a...329 18.6. Sprawdzanie całkowitej liczby kolorów w obrazku...............................................330 18.7. Tworzenie przezroczystych obrazków GIF/PNG ..................................................331 18.8. Kopiowanie części jednego obrazka do drugiego ..................................................332 18.9. Rysowanie prostokątów ...................................................a......................................333 18.10. Rysowanie wielokątów ...................................................a.....................................334 18.11. Rysowanie łuku ...................................................a.................................................335 18.12. Tworzenie obrazka z przeplotem ...................................................a......................337 18.13. Przyciski dynamiczne...................................................a........................................337 18.14. Stosowanie czcionek TrueType ...................................................a........................340 Rozdział 19. HTML ...................................................h......................................... 341 19.0. Wprowadzenie...................................................a...................................................a..341 19.1. Usuwanie znaczników HTML ...................................................a............................341 19.2. Konwersja ASCII do HTML...................................................a...............................342 19.3. Generowanie list select ...................................................a...................................343 19.4. Generowanie skryptu JavaScript realizującego efekty rollover.............................345 19.5. Tworzenie szablonów HTML ...................................................a.............................346 Rozdział 20. XML ...................................................h........................................... 349 20.0. Wprowadzenie...................................................a...................................................a..349 20.1. Obsługa błędów...................................................a...................................................a351 20.2. Parsowanie prostych dokumentów XML...................................................a............352 20.3. Parsowanie dokumentu XML do tablicy...................................................a.............354 20.4. Odwzorowywanie znaczników XML...................................................a..................356 20.5. Ustawianie uchwytu zewnętrznego odwołania do jednostki..................................357 20.6. Przeszukiwanie XML...................................................a..........................................361 20.7. Oszczędzanie pamięci ...................................................a.........................................363 20.8. Ustawianie i sprawdzanie opcji...................................................a...........................363 20.9. Parsowanie z zastosowaniem funkcji DOM-XML ................................................364 20.10. Tworzenie dokumentu XML...................................................a.............................367 20.11. Przekształcanie XML za pomocą XSL ...................................................a.............369 20.12. Filtrowanie danych wyjściowych za pomocą pliku XSL.....................................370 Część V API Zend ...................................................n..................371 Rozdział 21. API Zend ...................................................h.................................... 373 21.0. Wprowadzenie...................................................a...................................................a..373 21.1. Pobieranie argumentów...................................................a.......................................374 21.2. Modyfikowanie argumentów funkcji ...................................................a..................376 21.3. Zwracanie łańcuchów znaków lub liczb przez funkcję..........................................378 21.4. Zwracanie tablic i obiektów przez funkcję ...................................................a.........379 21.5. Dodawanie funkcji do PHP ...................................................a.................................381 21.6. Tworzenie identyfikatorów zasobów ...................................................a..................382 21.7. Pobieranie identyfikatorów zasobów ...................................................a..................383 21.8. Przechodzenie w pętli przez tablice ...................................................a....................384 21.9. Tworzenie modułu PHP ...................................................a......................................386 21.10. Dodawanie własnego pliku do instalacji PHP...................................................a...400 Spis treści 11 Dodatki ...................................................n....................................403 Dodatek A Instalacja PHP...................................................h............................ 405 Dodatek B Identyfikowanie i usuwanie usterek w PHP ..................................... 411 Najczęstsze błędy i co one oznaczają...................................................a...........................411 Techniki unikania błędów i usterek ...................................................a.............................413 Dodatek C Zasoby online PHP...................................................h...................... 415 Oficjalna witryna PHP ...................................................a................................................415 Witryna Zend...................................................a...................................................a.............415 PHPBuilder............................................a...................................................a.......................416 PHPWizard.net ...................................................a...................................................a.........416 Repozytorium klas PHP ...................................................a...............................................416 Weberdev ...................................................a...................................................a..................416 DevShed ...................................................a...................................................a....................417 Dodatek D Migracja do PHP4...................................................h....................... 419 Inicjujące zmienne statyczne i argumenty domyślne akceptują tylko wartości skalarne.......419 Instrukcje break i continue mają zasięg lokalny względem aplików dołączanych lub łańcuchów znaków przetwarzanych funkcją eval ..................................................420 Instrukcja return z pliku dołączanego instrukcją require nie działa................................420 Unset jest teraz instrukcją, a nie funkcją...................................................a......................421 {$ nie jest obsługiwane w łańcuchach znaków...................................................a.........421 Skorowidz...................................................h................................... 423 Rozdział 10. Utrzymywanie sesji w PHP „Prawdziwą sztuką pamięci jest sztuka skupiania uwa gi”. Samuel Johnson W rozdziale tym poruszone zostaną zagadnienia związane z utrzymywaniem stanu — procesem polegającym na zachowywaniu wartości zmiennych między wywoła- niami kolejnych skryptów. Najpierw omówione zostaną nowe mechanizmy zarządza- nia sesjami w PHP4, po czym przejdziemy do części poświęconej niewielkiemu sys- temowi koszyków na zakupy. Następnie przyjrzymy się funkcjom serializacji w PHP (w tym WDDX), które stanowią wydajny sposób przechowywaniha zmiennych PHP. 10.0. Wprowadzenie HTTP jest protokołem bezstanowym, co oznacza, że po opuszczeniu przez użytkow- nika strony WWW lub zakończeniu działania aplikacji komputer utraci wszelkie dane dotyczące przeprowadzonych transakcji (chyba że oprzesz się na dziennikach zdarzeń systemowych serwera WWW). Począwszy od Netscape 3.0, firma Netscape rozwią- zywała ten problem za pomocą cookies. Cookies to pliki przechowywane na kompute- rze użytkownika, dostępne dla skryptu, który je wysłał. Umożliwiają one zapisywanie i odczytywanie informacji o ewentualnych wcześniejszych wizytach, które użytkow- nik odbył na stronie WWW. Łącząc cookies i bazy danych, możesz zapisywać na swoim komputerze każdy bit infor- macji posiadanych na temat użytkownika oraz odczytywać je, stosując unikalny identy- fikator przypisany temu użytkownikowi, przechowywany w cookie na jego komputerze. Podejście takie wymagało jednak znacznego nakładu pracy programistów, a uruchomienie zabierało dużo czasu. Dlatego aby ułatwić Ci życie, grupa zajmująca się rozwojem PHP udostępniła ściśle zintegrowany zbiór narzędzi służących do zarządzania sesjami. 208 Część I ♦ Konstrukcje i techniki językowe To, co w każdym przypadku wymagało dotychczas od dwudziestu do stu wierszy ko- du, teraz zajmuje co najwyżej kilka wierszy dobrze prhzemyślanego kodu źródłowego. Jak to działa? Sesje działają w następujący sposób. W wyniku wywołania funkcji UGUUKQPAUVCTV lub UGUUKQPATGIKUVGT PHP ładuje ze schowka sesji zapisane dane dotyczące sesji. Podczas wykonywania skryptu możesz za pomocą funkcji UGUUKQPATGIKUVGT reje- strować dane, które mają zostać zapisane w schowku sesji. W momencie zakończenia wykonywania skryptu PHP zmienne sesji zostają zapisane w schowku sesji, którego ścieżka wskazywana jest przez pozycję UGUUKQPUCXGARCVJ w pliku php.ini. Przypisany sesji unikalny identyfikator jest wstawiany do pliku cookie i wysyłany do użytkownika, ale to dzieje się tylko przy pierwszym uruchomieniuh sesji. Czasami serializacja Jednym ze sposobów utrzymywania stanu jest zastosowanie modułu sesji. Jednak w niektórych przypadkach nie będziesz zmuszony korzystać ze wszystkich możliwości tego modułu — wystarczy zapisywanie i odczytywanie pewnych zmiennych. W takiej sytuacji możesz zastosować udostępniane przez PHP funkcje serializacji (UGTKCNKG i WPUGTKCNKG ) lub skorzystać z dołączonego rozszerzenia WDDX, które zapisuje zmienne PHP w standardowym formacie, przez co mogą one być później odczytywane i wykorzystywane przez inne języki. 10.1. Tworzenie zmiennej sesji w PHP Chcesz utworzyć zmienną sesji przy zastosowaniu PHPw. Technika Aby zarejestrować zmienną sesji, zastosuj funkcję UGUUKQPATGIKUVGT : !RJR UGUUKQPATGIKUVGT UGUUKQPAXCTKCDNG  UGUUKQPAXCTKCDNGUGUUKQPAXCTKCDNG!UGUUKQPAXCTKCDNG  GEJQUGUUKQPAXCTKCDNG ! Uwagi W PHP istnieją obecnie trzy typy zmiennych o różnym zasięgu i spełniające różne cele. Pierwszym typem zmiennej, mającym najmniejszy zasięg, jest zmienna lokalna. Zmienne Rozdział 10. ♦ Utrzymywanie sesji w PHP 209 lokalna to każda zmienna znajdująca się w zasięgu funkcji i istniejąca tylko na czas wykonania tej funkcji. Przeanalizujmy następujący przhykład: !RJR UTCPF FQWDNG OKETQVKOG    HWPEVKQPIGVAPWODGT PWO ] PWO TCPF  TGVWTP PWO  _ PWODGTIGVAPWODGT TCPF  PWODGTIGVAPWODGT   PWODGTIGVAPWODGT   RTKPV.KEDCPWOGTVQPWODGT PDT P .KEDCPWOGTVQPWODGT PDT P .KEDCPWOGTVQPWODGT PDT P ! W powyższym przykładzie zmienna PWO ma zasięg lokalny, a więc jej wartość nie jest dostępna spoza zasięgu funkcji IGVAPWODGT . Następnym typem zmiennej jest zmienna globalna, czyli każda zmienna zadeklaro- wana poza klasą lub funkcją (lub zadeklarowana instrukcją INQDCN albo za pośred- nictwem tablicy ).1$#.5). Zmienne globalne istnieją przez cały czas trwania shkryptu. Ostatnim typem zmiennej wprowadzonym w PHP4 jest zmienna sesji. Zmienna sesji może (teoretycznie) trwać wiecznie, chyba że Ty lub użytkownik ją usuniecie (dzięki odpowiedniemu ustawieniu opcji konfiguracyjnych zmienne takie mogą również być automatycznie usuwane po upływie pewnego czasu). Tak więc zmienne sesji to po prostu zwykłe zmienne zadeklarowane przy użyciu funkcji UGUUKQPATGIKUVGT . Zmienne te mogą być dowolnego typu obsługiwanego przez PHP: tablicą, łańcuchem znaków, liczbą, a nawet obiektem. Zachowanie UGUUKQPATGIKUVGT zależy od wartości parametru konfiguracyjnego TGIKUVGTAINQDCNU. Jeśli wartością TGIKUVGTAINQDCNU jest QP, UGUUKQPATGIKUVGT HQQ zapisze zmienną globalną HQQ w schowku sesji. Jeżeli natomiast ma on wartość QHH, wykorzystana zostanie tablica *662A5 55+10A8#45=? i nastąpi zapisanie *662A5 55+10A8#45= HQQ ?. Podczas lektury tego rozdziału pamiętaj o poruszonych tu kwestiach. W dalszej ko- lejności będziemy zajmować się takimi kwestiami, jak:    Zapisywanie zmiennych sesji w bazie danych. Utrzymywanie sesji przeglądarki między odsłonami kohlejnych stron WWW. Ustawianie i pobieranie nazw sesji.  Usuwanie zmiennych sesji.  Znajdowanie ścieżki, w której zapisany jest identyfikahtor sesji. 210 Część I ♦ Konstrukcje i techniki językowe 10.2. Zapisywanie sesji przy użyciu bazy danych Wolisz zapisywać dane sesji w bazie danych, a nie ww systemie plików. Technika Zastosuj funkcję UGUUKQPAUGVAUCXGAJCPFNGT , aby zarejestrować funkcje operujące na bazie danych: Skrypt 10.1. !RJR  UEJGOCVVCDGNK UGUUKQPU ETGCVGVCDNGUGUUKQPU UGUUKQPAKFEJCT  PQVPWNN UGUUKQPAFCVCVGZVPQVPWNN UGUUKQPAGZRKTCVKQPKPV  WPUKIPGFPQVPWNN RTKOCT[MG[ UGUUKQPAKF   KPENWFGAQPEG $RJR   OKGPPGINQDCNPG FDJ07.. HWPEVKQPQPAUGUUKQPAUVCTV UCXGARCVJUGUUKQPAPCOG ] INQDCNFDJ FDJ $EQPPGEV O[USNWUGTUGETGV NQECNJQUV5+6 A5 55+105 VTWG  KH $KU TTQT FDJ ] FKG URTKPVH $đæF=F?U FDJ IGV QFG FDJ IGV/GUUCIG  _ _ HWPEVKQPQPAUGUUKQPAGPF ] 6CHWPMELCPKGOWUKPKETQDKè DQWľ[NKħO[RQđæEGPKCUVCđGIQ _ HWPEVKQPQPAUGUUKQPATGCF MG[ ] INQDCNFDJ UVOVUGNGEVUGUUKQPAFCVCHTQOUGUUKQPU UVOVYJGTGUGUUKQPAKF MG[  UVOVCPFUGUUKQPAGZRKTCVKQP PQY  Rozdział 10. ♦ Utrzymywanie sesji w PHP 211 UVJFDJ SWGT[ UVJ  TQYUVJ HGVEJ4QY $A( 6 */1 A#551  TGVWTPTQY= UGUUKQPAFCVC ? _ HWPEVKQPQPAUGUUKQPAYTKVG MG[XCN ] INQDCNFDJ XCNCFFUNCUJGU XCN  KPUGTVAUVOVKPUGTVKPVQUGUUKQPUXCNWGU MG[  XCN PQY    WRFCVGAUVOVWRFCVGUGUUKQPUUGVUGUUKQPAFCVC XCN  WRFCVGAUVOVUGUUKQPAGZRKTCVKQPPQY   WRFCVGAUVOVYJGTGUGUUKQPAKF MG[  0CLRKGTYRTÎDWLGO[RQNGEGPKCKPUGTVLGħNKPKGCFKCđCAQPCECVQ ľGUGULCLGUVLWľCRKUCPCYVCDGNKKVTGDCLæWCMVWCNPAKè KH $KU TTQT FDJ SWGT[ KPUGTVAUVOV FDJ SWGT[ WRFCVGAUVOV  _ HWPEVKQPQPAUGUUKQPAFGUVTQ[ MG[ ] INQDCNFDJ UVOVFGNGVGHTQOUGUUKQPUYJGTGUGUUKQPAKF MG[  FDJ SWGT[ UVOV  _ HWPEVKQPQPAUGUUKQPAIE OCZANKHGVKOG ] INQDCNFDJ 9V[ORT[MđCFKGPKGDúFKGO[UVQUQYCèRCTCOGVTWOCZANKHGVKOG 2QRTQUVWWUWPKGO[YU[UVMKGUGULGMVÎTGY[ICUđ[ UVOVFGNGVGHTQOUGUUKQPUYJGTGUGUUKQPAGZRKTCVKQPPQY  FDJ SWGT[ UVOV  _ UGUUKQPAUVCTV   CTGLGUVTWLOKGPPæEQWPVGTLCMQEúħèUGULK UGUUKQPATGIKUVGT EQWPVGT  9UMCľHWPMELGRTGEJQY[YCPKCUGULK UGUUKQPAUGVAUCXGAJCPFNGT QPAUGUUKQPAUVCTVQPAUGUUKQPAGPF QPAUGUUKQPATGCFQPAUGUUKQPAYTKVG QPAUGUUKQPAFGUVTQ[QPAUGUUKQPAIE  5RTCYFļO[EQUKúUVCPKG EQWPVGT  RTKPVEQWPVGT 212 Część I ♦ Konstrukcje i techniki językowe UGUUKQPAFGUVTQ[  ! Uwagi Funkcja UGUUKQPAUGVAUCXGAJCPFNGT umożliwia wskazanie funkcji obsługi, które będą wywoływane przez system sesji w celu wykonania operacji rozpoczęcia, zakończenia, załadowania i zapisania sesji. Pierwszym argumentem UGUUKQPAUGVAUCXGAJCPFNGT jest funkcja, która będzie wy- woływana przez system sesji w momencie inicjacji sesji. Funkcja ta pobiera dwa argu- menty: pierwszy to ścieżka, w której przechowywana była sesja (jest ona taka sama, jak wartość dyrektywy UGUUKQPUCXGARCVJ), a drugi to nazwa ustawionego cookie sesji (domyślnie jest to 2*25 55+ ). Następnym argumentem jest funkcja wywoływana w momencie zakończenia sesji (zazwyczaj na końcu wykonania skryptu) i powinna ona czyścić wszystkie dane. Funkcja ta nie pobiera żadnych argumentów. Trzecim argumentem funkcji UGUUKQPAUGVAUCXGAJCPFNGT jest funkcja wykonywana w momencie, gdy konieczne jest odczytanie danych sesji ze schowka sesji. Argu- mentem pobieranym przez tę funkcję jest identyfikator sesji (a więc otrzymuje ona coś w rodzaju HFDDFED). Identyfikator sesji to losowa liczba wygenerowana, żeby utrudnić hakerom odgadnięcie identyfikatora sesji (i przez to uzy- skanie dostępu do danych użytkownika). Czwartym argumentem UGUUKQPAUGVAUCXGAJCPFNGT jest funkcja wykonywana w mo- mencie, gdy zachodzi konieczność zapisania danych w schowku sesji. Funkcja wskazy- wana przez ten argument pobiera wartość identyfikatora bieżącej sesji (patrz poprzedni akapit) oraz dane sesji mające postać pojedynczego łhańcucha znaków. Piątym argumentem UGUUKQPAUGVAUCXGAJCPFNGT jest funkcja wykonywana w sytuacji, gdy wartość sesji ma ulec zniszczeniu. Funkcja ta pobiera argument, którego warto- ścią jest identyfikator bieżącej sesji. Szóstym i ostatnim argumentem UGUUKQPAUGVAUCXGAJCPFNGT jest funkcja odśmiecania. Jest ona co jakiś czas wywoływana przez system sesji w celu usunięcia tych sesji, które już wygasły. Funkcja wskazywana przez ten argument pobiera liczbę sekund, po upły- nięciu których dane sesji powinny zostać uznane za przestarzałe i usunięte. Funkcja UGUUKQPAUGVAUCXGAJCPFNGT stanowi podstawę przystosowywania mechani- zmu zarządzania sesjami w PHP do własnych potrzeb. Choć może nie wydaje się to łatwe, pobaw się nią trochę. Wypróbuj jakieś trywialne skrypty wraz z UGUUKQPAUGVA UCXGAJCPFNGT , a sam zobaczysz, jakie to proste. Rozdział 10. ♦ Utrzymywanie sesji w PHP 213 10.3. Ustawianie nazwy sesji Nazwa sesji to nazwa przechowywana przez przeglądarkę użytkownika i wyświetlana tym użytkownikom odwiedzającym stronę WWW, którzy mają ustawione ostrzeganie o cookies. Chcesz zmienić nazwę sesji z takiej, jaka określona wjest w pliku konfiguracyjnym. Technika Aby zmienić nazwę cookie sesji, zastosuj funkcję UGUUKQPAPCOG . Pamiętaj, że należy ją wywoływać przed funkcjami UGUUKQPATGIKUVGT i UGUUKQPAUVCTV : Skrypt 10.2. !RJR QNFAUGUUKQPUGUUKQPAPCOG 9GDUKVG6TCEMGT   Y[YQđCPCDGRCTCOGVTÎYUGUUKQPAPCOG YTÎEKCMVWCNPæPCYúUGULK  PGYAUGUUKQPUGUUKQPAPCOG  CTGLGUVTWLPQYæOKGPPæUGULK UGUUKQPATGIKUVGT UGUUKQPAXCTKCDNG  RTKPV QV[EJECUQYCPCYCUGULKDTOKCđCQNFAUGUUKQP RTKPVPQYCPCYCUGULKVQPGYAUGUUKQP ! Uwagi Domyślną wartością nazwy cookie przechowywanego przez przeglądarkę użytkownika jest 2*25 55+ , lecz nie jest to nazwa zbyt wiele mówiąca. Tak naprawdę większość spośród użytkowników, którzy mają włączone ostrzeganie o cookies i zostaną popro- szeni o zaakceptowanie cookie o nazwie 2*25 55+ , najprawdopodobniej będzie się wa- hać. Funkcja UGUUKQPAPCOG pozwala na zmianę nazwy cookie w fazie wykonania, dzięki czemu nie musisz wprowadzać zmian na całej witrynie, modyfikując wartość para- metru UGUUKQPPCOG w pliku php.ini. Istnieje kilka zasad dotyczących wywoływania funkcji UGUUKQPAPCOG . Po pierwsze, nazwa sesji musi być alfanumeryczna — nie może zawierać znaków zapytania, tyld (`) i tak dalej. Po drugie, aby wywołanie funkcji UGUUKQPAPCOG przyniosło odpowied- nie efekty, musi ona być wywoływana przed funkcjami UGUUKQPAUVCTV i UGUUKQPA TGIKUVGT . Wywołana z parametrem UGUUKQPAPCOG zmieni wartość zmiennej nazwy sesji i zwróci nazwę dotychczasową. Jeśli jednak UGUUKQPAPCOG zostanie wywołana w kontekście XQKF, zwróci po prostu nazwę bieżącej sesji w postaci łańchucha znaków. 214 Część I ♦ Konstrukcje i techniki językowe 10.4. Ustawianie i pobieranie parametrów cookie Chcesz pobierać lub ustawiać parametry cookie w fazie wykonania, a nie w pliku php.ini. Technika Aby ustawić parametry, zastosuj funkcję UGUUKQPAUGVAEQQMKGARCTCOU , która umoż- liwia ustawienie czasu życia cookie, jego ścieżki oraz domeny: !RJR UGUUKQPAUGVAEQQMKGARCTCOU VKOG  EQQMKGRCVJ  FGUKIPOWNVKOGFKCEQO  ! Aby odczytać parametry cookie, zastosuj funkcję UGUUKQPAIGVAEQQMKGARCTCOU : Skrypt 10.3. !RJR EQQMKGARCTCOUUGUUKQPAIGVAEQQMKGARCTCOU  RTKPV CUľ[EKCEQQMKGEQQMKGARCTCOU=NKHGVKOG? PDT P ĦEKGľMCEQQMKGEQQMKGARCTCOU=RCVJ? PDT P  QOGPCEQQMKGEQQMKGARCTCOU=FQOCKP? PDT P ! Uwagi Funkcja UGUUKQPAUGVAEQQMKGARCTCOU ma następującą składnię: KPVUGUUKQPAUGVAEQQMKGARCTCOU KPVECUA[EKC=UVTKPIUEKGMC=UVTKPIFQOGPC??  Umożliwia ona modyfikowanie w fazie wykonania parametrów cookie określonych w pliku php.ini. Parametr ECUA[EKC określa, ile czasu ma upłynąć do wygaśnięcia co- okie. Opcjonalny parametr UEKGMC wskazuje ścieżkę, w jakiej cookie będzie przecho- wywane, a FQOGPC domenę, która będzie udostępniać cookie. Funkcja zwraca wartość  w razie powodzenia i  w przypadku niepowodzenia; jeśli nie zostaną podane żadne argumenty, funkcja zwróci tablicę z aktualnymi ustawiehniami. Wszystkie wspomniane parametry można ustawiać w pliku php.ini, jednak często lepiej mieć możliwość zmieniania opcji sesji w fazie wykonania, zwłaszcza w przypadku czegoś tak charakterystycznego jak cookies. Funkcja UGUUKQPAIGVAEQQMKGARCTCOU zwraca tablicę zawierającą ustawienia czasu życia, ścieżki i domeny cookie, a więc można zastosować UGUUKQPAIGVAEQQMKGARCTCOU do upewnienia się, że wykonanie UGUUKQPAUGVAEQQMKGARCTCOU zakończyło się powo- dzeniem: Rozdział 10. ♦ Utrzymywanie sesji w PHP 215 !RJR NKHGVKOGVKOG   RCVJ EQQMKGRCVJ  FQOCKP RJRPGV  KH UGUUKQPAUGVAEQQMKGARCTCOU NKHGVKOGRCVJFQOCKP ] EQQMKGARCTCOUUGUUKQPAIGVAEQQMKGARCTCOU  KH EQQMKGARCTCOU=NKHGVKOG?NKHGVKOG EQQMKGARCTCOU=RCVJ?RCVJ EQQMKGARCTCOU=FQOCKP?FQOCKP ] RTKPV)TCVWNCELGHWPMELCUGUUKQPAUGVAEQQMKGARCTCOU PCRTCYFú CFKCđCđC _ _ ! 10.5. Wyrejestrowywanie zmiennej z sesji Musisz usunąć zmienną sesji lub wyrejestrować ją prwzed zakończeniem wykonywania skryptu. Technika Aby usunąć zmienną z sesji, zamiast WPUGV zastosuj funkcję UGUUKQPAWPTGIKUVGT : !RJR UGUUKQPATGIKUVGT UQOGXCT  KH UGUUKQPAKUATGIKUVGTGF UQOGXCT ] UGUUKQPAWPTGIKUVGT UQOGXCT QTFKG 0KGOQľPCY[TGLGUVTQYCèUQOGXCT  _ ! Uwagi Funkcja UGUUKQPAWPTGIKUVGT usuwa wskazaną zmienną z rejestru sesji, a więc w mo- mencie zapisywania sesji nie będzie ona już zawierać wyrejestrowanej zmiennej. Funkcja ta nie usuwa jednak zawartości zmiennej. 10.6. Usuwanie wszystkich zmiennych sesji Chcesz usunąć wszystkie zmienne z bieżącej sesji. Technika Aby wymazać sesję, zastosuj funkcję UGUUKQPAFGUVTQ[ : Część I ♦ Konstrukcje i techniki językowe 216 Skrypt 10.4. !RJR UGUUKQPAUVCTV  UGUUKQPATGIKUVGT HQQ  UGUUKQPATGIKUVGT HQQDCT  UGUUKQPATGIKUVGT HQQDCTKPC  HQQCTTC[ DCPCPLCDđMQRQOCTCēECOCPIQ  HQQDCTQYQEG HQQDCTKPCYCT[YC UGUUKQPAFGUVTQ[  RTKPVHQQDCT ! Uwagi Funkcja UGUUKQPAFGUVTQ[ usunie wszystkie dane sesji ze schowka sesji. Zauważ jed- nak, że nie zostaną usunięte zawartości zmiennych sesji. Aby to osiągnąć, będziesz musiał zastosować funkcję UGUUKQPAWPUGV i przejść przez wszystkie zmienne sesji, usuwając je z tabeli symboli. 10.7. Stosowanie obiektu jako zmiennej sesji Masz problemy z ładowaniem obiektów z sesji. Technika Pamiętaj, że w każdym miejscu, w którym używasz obiekt, musisz dołączyć defini- cję klasy. obiekty/std_class.inc !RJR  2NKMUVFAENCUUKPE  CYKGTCFGHKPKELúMNCU[PKGDúFPæFQVGIQ D[QDKGMVOÎIđD[èOKGPPæUGULK  ENCUU(QQ ] XCTPCOG XCTGOCKN Rozdział 10. ♦ Utrzymywanie sesji w PHP 217  2TQUVCHWPMELCWMCWLæECKUVQVúURTCY[  HWPEVKQPPQTOCNKGAPCOG ] PCOGRTGIATGRNCEG J  K VJKU PCOG  TGVWTPUWDUVT PCOG  _ _ ! obiekty/main.php !RJR  2NKMOCKPRJR 6WDúFKGO[CRKU[YCèKQFE[V[YCèQDKGMV  KPENWFGAQPEG UVFAENCUUKPE  UGUUKQPATGIKUVGT HQQDCT  KH HQQDCT ] HQQDCTPGY(QQ HQQDCT PCOG5VGTNKPI*WIJGU HQQDCT GOCKNUVGTNKPI RJRPGV HQQDCT PQTOCNKGAPCOG  _ ! CJTGHPGZV2CIGRJR -NKMPKLVWVCLC obiekty/nextPage.php !RJR  2NKMPGZV2CIGRJR 9[ħYKGVNCKOKúPKGKPKELWLæEMNCU[CPKPKGWUVCYKCLæEOKGPP[AEJ  KPENWFGAQPEG UVFAENCUUKPE  UGUUKQPATGIKUVGT HQQDCT  RTKPVHQQDCT PCOG ! Uwagi W czasie, gdy powstawała ta książka, aby zapewnić prawidłowe funkcjonowanie modułu sesji PHP z obiektami, konieczne było dołączenie definicji klasy przed rozpoczęciem sesji. Operacja taka musi zostać wykonana w przypadku każdego obiektu przecho- wywanego w sesji. W następnych wersjach PHP może się to zmienić, jednak obecnie czynność taka jest niezbędna. Jeśli definicja klasy nie zostanie dołączona, każdora- zowa próba uzyskania dostępu do metody lub właściwości obiektu spowoduje wy- świetlenie przez PHP ostrzeżenia informującego o konieczności wcześniejszego dołą- czenia definicji klasy. 218 Część I ♦ Konstrukcje i techniki językowe 10.8. Kodowanie danych Chcesz zapisać wszystkie zmienne sesji w formie łańcucha znaków i z powrotem wczytać je do zmiennych w późniejszym czasie. Technika Zastosuj funkcje UGUUKQPAGPEQFG i UGUUKQPAFGEQFG : kodowanie/write.php !RJR UGUUKQPATGIKUVGT OQPMG[  OQPMG[CTTC[ YKFKGèTQDKè  UVTKPIAOQPMG[UGUUKQPAGPEQFG  HR HQRGP UCXGAOQPMG[VZVY QTFKG 0KGOQľPCQVYQT[è UCXGAOQPMG[VZV  HYTKVG HRUVTKPIAOQPMG[  HENQUG HR QTFKG 0KGOQľPCCOMPæèUCXGAOQPPG[VZV  RTKPV [PPQħEKCRKUCPG ! kodowanie/read.php !RJR HR HQRGP UCXGAOQPMG[VZVT QTFKG 0KGOQľPCQVYQT[èUCAXGAOQPMG[VZV  FCVCHTGCF HRHKNGUKG UCXGAOQPMG[VZV  HENQUG HR QTFKG 0KGOQľPCCOMPæèUCXGAOQPMG[VZV  UGUUKQPAFGEQFG FCVC  HQTGCEJ OQPMG[CUCEVKQP ] RTKPVCEVKQP PDT P _ ! Opis Funkcja UGUUKQPAGPEQFG pobiera wszystkie informacje bieżącej sesji i koduje je do po- staci łańcucha znaków, który może być parsowany przez funkcję UGUUKQPAFGEQFG . Następnie UGUUKQPAFGEQFG parsuje ten łańcuch znaków i na podstawie zawartych w nim informacji tworzy zmienne sesji. 10.9. Tworzenie koszyka na zakupy z zastosowaniem sesji w PHP Następna część tego rozdziału będzie dotyczyć przechowywania zmiennych i danych, myślę jednak, że zanim do niej przejdziemy, część rozdziału dotycząca sesji powinna zostać zakończona skryptem. Napisałem więc niewielki skrypt koszyka na zakupy Rozdział 10. ♦ Utrzymywanie sesji w PHP 219 zawierający wszystkie niezbędne funkcje (dodawanie produktów, usuwanie ich z ko- szyka i podglądanie). Zwróć jednak uwagę, że w skrypcie tym brakuje fragmentu reali- zującego wysłanie zamówienia — to wykracza już poza temat naszych rozważań. koszyk/site_lib.inc !RJR  UKVGANKDKPE  CYKGTCHWPMELú.QCF2TQFWEVU   6CDNKECINQDCNPCGYU[UVMKOKRTQFWMVCOK .KUVCOCUVGTARTQFWEVUANKUVY[RGđPKCPCRTGHWPMELú.QCF2TQFWEVU  OCUVGTARTQFWEVUANKUVCTTC[   XQKF.QCF2TQFWEVU XQKF ĐCFWLGYU[UVMKGRTQFWMV[LCMKGOQIæPCNGļèUKúYMQU[MW FQINQDCNPGLVCDNKE[OCUVGTARTQFWEVUANKUV  HWPEVKQP.QCF2TQFWEVU ] INQDCNOCUVGTARTQFWEVUANKUV HKNGPCOG RTQFWEVUVZV  HR HQRGP HKNGPCOGT QTFKG 0KGOQľPCQVYQT[èHKNGPCOG  0CYUGNMKY[RCFGMPCMđCFCO[DNQMCFúYURÎđWľ[VMQYCPæ OKCđCD[PCEGPKGIF[D[ħO[TÎYPKGľCRKU[YCNKFQVGIQRNKMW  HNQEM HR QTFKG 0KGOQľPCPCđQľ[èDNQMCF[YURÎđWľ[VMQYCPGLAPC HKNGPCOG  YJKNG NKPGHIGVU HR ] NKUV KFPCOGFGUERTKEG GZRNQFG ^ NKPG  KFVTKO KF QDGVPKLPKGRQVTGDPGPCMK OCUVGTARTQFWEVUANKUV=KF?CTTC[ PCOG PCOGA FGUE AFGUE RTKEGA RTKEG  _ HENQUG HR QTFKG 0KGOQľPCCOMPæèHKNGPCOG  _ ! koszyk/products.txt MF^4QYGT^0CLHCLPKGLU[TQYGTPCħYKGEKG^ FMUM^5QP[2NC[UVCVKQP^ MUE[VWLæECITCXKFGQ^ koszyk/cart.php !RJR  ECTVRJRRNKMIđÎYP[  TGSWKTG UKVGANKDKPE  UGUUKQPATGIKUVGT ECTV 4GLGUVTWLGO[PCUæUGULú +PKELWLMQU[MLGħNKPKGQUVCđLGUEGCKPKELQYCP[ 220 Część I ♦ Konstrukcje i techniki językowe KH KUUGV ECTV=PWOAKVGOU? ] ECTVCTTC[ PWOAKVGOU RTQFWEVU CTTC[  _  CđCFWLVCDNKEúOCUVGTARTQFWEVUANKUVUKVGANKDKPE .QCF2TQFWEVU  ! JVON JGCF VKVNG 5MNGRCDCYMCOK5VTGNKPICVKVNG JGCF DQF[ J 9KVCLYUMNGRKGCDCYMCOK5VGTNKPICJ !RJR KH ECTV=PWOAKVGOU? ],GħNKLGUVEQħFQRQMCCPKC ! J 2TQFWMV[PCLFWLæEGUKúY6YQKOMQU[MWJ DT VCDNGDQTFGTEGNNRCFKPIEGNNURCEKPI VT VJ 0CYCRTQFWMVW VJ VJ -TÎVMKQRKU VJ VJ  GPC VJ VJ +NQħè VJ VJ PDUR VJ VT !RJR 2TGLFļRTGYU[UVMKGRTQFWMV[ HQTGCEJ ECTV=RTQFWEVU?CUK RTQFWEV ] RTQFWEVAKFRTQFWEV=? SWCPVKV[RTQFWEV=? VQVCN SWCPVKV[  FQWDNG OCUVGTARTQFWEVUANKUV=RTQFWEVAKF?=RTKEG? ! VT VF !RJRGEJQOCUVGTARTQFWEVUANKUV=RTQFWEVAKF?=PCOG?! VF VF !RJRGEJQOCUVGTARTQFWEVUANKUV=RTQFWEVAKF?=FGUE?! VF VF !RJRGEJQOCUVGTARTQFWEVUANKUV=RTQFWEVAKF?=RTKEG?! VF VF Rozdział 10. ♦ Utrzymywanie sesji w PHP 221 HQTOCEVKQPEJCPIGASWCPVRJROGVJQF) 6 KPRWVV[RGJKFFGPPCOGKFXCNWG!RJRGEJQK!  KPRWVV[RGVGZVUKGPCOGSWCPVKV[XCNWG!RJRGEJQSWCPVKV[ !  VF VF KPRWVV[RGUWDOKVXCNWG OKGēKNQħè HQTO VF VT !RJR _ ! VT VFEQNURCP D 4CGOD VF VFEQNURCP !RJRGEJQVQVCN! 2.0 VF VT VCDNG DT DT !RJR _ ! J CDCYMKFQUVúRPGYUMNGRKGCDCYMCOK5VGTNKPICJ DT K /CO[YQHGTEKGPCUVúRWLæEGCDCYMK K DT VCDNGDQTFGTEGNNRCFFKPIEGNNURCEKPI VT VJ 0CYCRTQFWMVW VJ VJ 1RKURTQFWMVW VJ VJ  GPC VJ VJ PDUR VJ VT !RJR 2QMCľYU[UVMKGRTQFWMV[ HQTGCEJ OCUVGTARTQFWEVUANKUVCURTQFWEVAKF KVGO ] ! VT VF !RJRGEJQKVGO=PCOG?! VF VF !RJRGEJQKVGO=FGUE?! 222 Część I ♦ Konstrukcje i techniki językowe VF VF !RJRGEJQKVGO=RTKEG?! 2.0 VF VF CJTGHCFFAKVGORJR!KF!RJRGEJQRTQFWEVAKF!   QFCLVGPRTQFWMVFQMQU[MC C VF VT !RJR _ ! VCDNG DQF[ JVON koszyk/add_item.php !RJR  CFFAKVGORJR  QFCLGRTQFWMVFQMQU[MCPCCMWR[  TGSWKTG UKVGANKDKPE .QCF2TQFWEVU .QCF2TQFWEVU ĐCFWLGRTQFWMV[OCUVGTARTQFWEVUANKUV 7VYÎTINQDCNPæVCDNKEúEWTTARTQFWEV EWTTARTQFWEVCTTC[  2TGLFļRTGRTQFWMV[KCVT[OCLUKúRT[V[O MVÎT[PCUKPVGTGUWLG HQTGCEJ OCUVGTARTQFWEVUANKUVCURTQFAKF RTQFWEV ] KH VTKO RTQFAKF VTKO KF ] EWTTARTQFWEVRTQFWEV _ _  CTGLGUVTWLUGULú UGUUKQPATGIKUVGT ECTV  KH QTFGTGF ],GħNKQUVCđY[DTCP[RTQFWMV CTTC[ARWUJ ECTV=RTQFWEVU?CTTC[ VTKO KF SWCPVKV[ A ECTV=PWOAKVGOU? SWCPVKV[ _ ! JVON JGCF VKVNG !RJRKH QTFGTGF ]!  QFCPQ!RJRGEJQEWTTARTQFWEV=PCOG?! FQMQU[MCPCCMWR[ !RJR_GNUG]!  QFCL!RJRGEJQEWTTARTQFWEV=PCOG?! FQMQU[MCPCCMWR[ !RJR_! VKVNG JGCF Rozdział 10. ♦ Utrzymywanie sesji w PHP 223 DQF[ !RJRKH QTFGTGF ]! J !RJRGEJQEWTTARTQFWEV=PCOG?! QUVCđFQFCP[FQMQU[MCPCCMWR[J CJTGHECTVRJR 9TÎèC KMQPV[PWWLCMWR[ !RJR_GNUG]! J QFCL!RJRGEJQEWTTARTQFWEV=PCOG?! FQMQU[MCPCCMWR[J HQTOCEVKQP!RJRGEJQ2*2A5 .(! OGVJQF) 6 0CYCRTQFWMVW!RJRGEJQEWTTARTQFWEV=PCOG?! DT 1RKURTQFWMVW!RJRGEJQEWTTARTQFWEV=FGUE?! DT  GPCRTQFWMVW!RJRGEJQEWTTARTQFWEV=RTKEG?! DT +NQħèRTQFWMVWKPRWVV[RGVGZVUKGPCOGSWCPVKV[ KPRWVV[RGJKFFGPPCOGKFXCNWG!RJRGEJQKF!  KPRWVV[RGJKFFGPPCOGQTFGTGFXCNWG KPRWVV[RGUWDOKVXCNWG QFCLFQMQU[MC HQTO !RJR_! DQF[ JVON koszyk/change_quant.php !RJR  EJCPIGASWCPVRJR  OKGPKCKNQħèRTQFWMVWYMQU[MWPCCMWR[  UGUUKQPATGIKUVGT ECTV CTGLGUVTWLUGULú 4WVQYCPKGV[RWPCKPVCD[WRGYPKèUKú ľGRQDKGTCO[YđCħEKY[GNGOGPV K KPV KF  CRKUFQV[EJECUQYæKNQħèRTQFWMVWYEGNCEJQDNKEGPKQY[EJ QTCCD[LæY[ħYKGVNKè QNFAPWOECTV=RTQFWEVU?=K?=? KH SWCPVKV[ ] ECTV=RTQFWEVU?=K?=?SWCPVKV[OKGēKNQħè _GNUG] WPUGV ECTV=RTQFWEVU?=K? PKGEJRTQFWMVQFGLFKGYCRQAOPKGPKG _ 7CMVWCNPKLNKEDúRTQFWMVÎY ECTV=PWOAKVGOU? QNFAPWO SWCPVKV[ ! ECTV=PWOAKVGOU? QNFAPWOSWCPVKV[  ECTV=PWOAKVGOU?  SWCPVKV[QNFAP
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

PHP4. Podręcznik programisty
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: