Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót...

24

Transcript of Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót...

Page 1: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również
Page 2: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie,ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Opieka redakcyjna: Ewelina BurskaProjekt okładki: Studio Gravite/Olsztyn Obarek, Pokoński, Pazdrijowski, ZapruckiMateriały graficzne na okładce zostały wykorzystane za zgodą Shutterstock.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/php7pkMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

ISBN: 978-83-283-2478-7

Copyright © Helion 2017

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Spis treści Wstęp .............................................................................................. 7

O książce .......................................................................................................................... 7Narzędzia .......................................................................................................................... 8Listingi i rozwiązania ćwiczeń ......................................................................................... 9

Rozdział 1. Podstawy ....................................................................................... 11Lekcja 1. Czym jest PHP? .............................................................................................. 11

Język skryptowy ......................................................................................................... 11Krótka historia PHP .................................................................................................... 12Jak to działa? .............................................................................................................. 13

Lekcja 2. Instalacja i konfiguracja narzędzi .................................................................... 14Samodzielna instalacja narzędzi ................................................................................. 14Korzystanie z pakietu XAMPP ................................................................................... 30Plik konfiguracyjny PHP ............................................................................................ 39PHP w wierszu poleceń .............................................................................................. 40

Rozdział 2. Elementy języka ............................................................................. 43Lekcja 3. Pierwszy skrypt ............................................................................................... 43

Zaczynamy .................................................................................................................. 43Znaczniki PHP ............................................................................................................ 47Komentarze ................................................................................................................. 49Wyświetlanie informacji ............................................................................................. 51Instrukcja print ............................................................................................................ 53Łączenie skryptów ...................................................................................................... 53

Lekcja 4. Zmienne, typy danych i operatory .................................................................. 59Czym są zmienne? ...................................................................................................... 59Rodzaje zmiennych, czyli typy danych ....................................................................... 60Zmienne w kodzie skryptu .......................................................................................... 65Wyświetlanie wartości zmiennych .............................................................................. 66Operacje na zmiennych ............................................................................................... 71Operatory .................................................................................................................... 71Zmienne globalne (superglobalne) .............................................................................. 87Konwersje typów ........................................................................................................ 89Ćwiczenia do samodzielnego wykonania ................................................................... 93

Lekcja 5. Instrukcje sterujące ......................................................................................... 93Instrukcje warunkowe ................................................................................................. 93Instrukcja wyboru ..................................................................................................... 101Operator warunkowy ................................................................................................ 103

Poleć książkęKup książkę

Page 4: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

4 PHP7. Praktyczny kurs

Pętle .......................................................................................................................... 104Składnia alternatywna ............................................................................................... 115Ćwiczenia do samodzielnego wykonania ................................................................. 117

Lekcja 6. Funkcje ......................................................................................................... 118Definiowanie funkcji ................................................................................................ 118Argumenty funkcji .................................................................................................... 119Zwracanie wartości przez funkcje ............................................................................. 121Zasięg zmiennych ..................................................................................................... 123Sposoby przekazywania argumentów ....................................................................... 128Domyślne argumenty funkcji .................................................................................... 130Argumenty i typy danych .......................................................................................... 131Ćwiczenia do samodzielnego wykonania ................................................................. 133

Lekcja 7. Obsługa daty i czasu ..................................................................................... 134Wyświetlanie daty i czasu ......................................................................................... 134Tworzenie znacznika czasu ....................................................................................... 142Pozostałe funkcje ...................................................................................................... 145Ćwiczenia do samodzielnego wykonania ................................................................. 148

Lekcja 8. Ciągi znaków ................................................................................................ 148Rodzaje ciągów znaków ........................................................................................... 148Wyrażenia złożone w ciągach znaków ..................................................................... 151Która metoda jest szybsza? ....................................................................................... 152Formatowanie ciągów ............................................................................................... 153Przetwarzanie ciągów znaków .................................................................................. 159Porównania ............................................................................................................... 162Przeszukiwanie ......................................................................................................... 163Ćwiczenia do samodzielnego wykonania ................................................................. 165

Lekcja 9. Tablice .......................................................................................................... 165Proste tablice ............................................................................................................. 165Tablice asocjacyjne ................................................................................................... 169Operacje na tablicach ................................................................................................ 171Ćwiczenia do samodzielnego wykonania ................................................................. 178

Rozdział 3. Współpraca z systemem plików .................................................... 181Lekcja 10. Operacje na strukturze systemu plików ...................................................... 181

Odczyt zawartości katalogu ...................................................................................... 181Operacje na katalogach ............................................................................................. 187Operacje na plikach .................................................................................................. 189Miejsce na dysku ...................................................................................................... 191Rekurencyjne usuwanie zawartości katalogu ............................................................ 192Nawigacja po katalogach .......................................................................................... 193Ćwiczenia do samodzielnego wykonania ................................................................. 196

Lekcja 11. Operacje na plikach .................................................................................... 196Tworzenie i otwieranie plików ................................................................................. 197Zamykanie plików .................................................................................................... 199Odczyt danych .......................................................................................................... 199Zapis danych ............................................................................................................. 207Inne operacje ............................................................................................................. 208Ćwiczenia do samodzielnego wykonania ................................................................. 212

Lekcja 12. Praktyczne wykorzystanie plików ............................................................... 212Tekstowy licznik odwiedzin ..................................................................................... 212Licznik wykorzystujący grafikę ................................................................................ 215Lista odnośników ...................................................................................................... 216Lista odwiedzin ......................................................................................................... 218Ćwiczenia do samodzielnego wykonania ................................................................. 221

Poleć książkęKup książkę

Page 5: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Spis treści 5

Rozdział 4. Współpraca z przeglądarką ........................................................... 223Lekcja 13. Odbieranie danych z przeglądarki ............................................................... 223

Formularze HTML .................................................................................................... 223Wysyłanie metodą GET ............................................................................................ 224Metoda POST ........................................................................................................... 229Tablica REQUEST ................................................................................................... 231Zapis danych w praktyce .......................................................................................... 232Wysyłanie plików do serwera ................................................................................... 236Ćwiczenia do samodzielnego wykonania ................................................................. 240

Lekcja 14. Wysyłanie danych do przeglądarki ............................................................. 241Sposoby wysyłania danych ....................................................................................... 241Wysyłanie zawartości plików ................................................................................... 242Sposoby pobierania plików z serwisu ....................................................................... 245Ćwiczenia do samodzielnego wykonania ................................................................. 259

Lekcja 15. Obsługa cookies .......................................................................................... 259Krótko o cookies ....................................................................................................... 259Obsługa cookies w PHP ............................................................................................ 260Korzystanie z cookies ............................................................................................... 264Ćwiczenia do samodzielnego wykonania ................................................................. 269

Lekcja 16. Sesje ............................................................................................................ 269Wstęp do sesji ........................................................................................................... 269Identyfikator sesji ..................................................................................................... 270Rozpoczynanie sesji .................................................................................................. 270Kończenie sesji ......................................................................................................... 271Zmienne sesji ............................................................................................................ 271Konfiguracja sesji ..................................................................................................... 272Implementacja sesji ................................................................................................... 274Śledzenie zachowań użytkownika ............................................................................ 277Kontrola dostępu z wykorzystaniem sesji ................................................................. 279System logowania z danymi w pliku ........................................................................ 285Ćwiczenia do samodzielnego wykonania ................................................................. 288

Rozdział 5. Obiektowy PHP ............................................................................ 289Lekcja 17. Podstawy obiektowości ............................................................................... 289

Czym jest obiekt? ..................................................................................................... 289Definicja klasy .......................................................................................................... 290Tworzenie obiektów ................................................................................................. 293Konstruktory i destruktory ........................................................................................ 295Automatyczne ładowanie kodu klasy ........................................................................ 298Obiektowa lista odwiedzin ........................................................................................ 300Ćwiczenia do samodzielnego wykonania ................................................................. 303

Lekcja 18. Więcej o programowaniu obiektowym ....................................................... 303Dziedziczenie ............................................................................................................ 303Przesłanianie składowych ......................................................................................... 307Klasy i składowe finalne ........................................................................................... 309Konstruktory i destruktory klas bazowych ................................................................ 310Specyfikatory dostępu ............................................................................................... 312Składowe statyczne ................................................................................................... 314Ćwiczenia do samodzielnego wykonania ................................................................. 317

Lekcja 19. Wyjątki ....................................................................................................... 317Instrukcja throw ........................................................................................................ 318Klasa Exception i pochodne ...................................................................................... 318Blok try...catch .......................................................................................................... 319

Poleć książkęKup książkę

Page 6: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

6 PHP7. Praktyczny kurs

Przechwytywanie wielu wyjątków ............................................................................ 325Własne wyjątki ......................................................................................................... 327Ćwiczenia do samodzielnego wykonania ................................................................. 328

Rozdział 6. Grafika i obrazy ............................................................................ 329Lekcja 20. Obsługa grafiki ........................................................................................... 329

Biblioteka graficzna .................................................................................................. 329Jak utworzyć galerię obrazów? ................................................................................. 330Przetwarzanie grafiki ................................................................................................ 339Ćwiczenia do samodzielnego wykonania ................................................................. 352

Rozdział 7. Obsługa sieci ............................................................................... 353Lekcja 21. Połączenia, poczta i FTP ............................................................................. 353

Tablica $_SERVER .................................................................................................. 353Adresy IP .................................................................................................................. 356Jak rozpoznać przeglądarkę? .................................................................................... 358Połączenie FTP ......................................................................................................... 360Wysyłanie poczty ...................................................................................................... 363Ćwiczenia do samodzielnego wykonania ................................................................. 366

Rozdział 8. Współpraca z bazami danych ........................................................ 367Lekcja 22. Podstawy baz danych .................................................................................. 367

MySQL i SQLite ....................................................................................................... 367Tabele, klucze i relacje ............................................................................................. 368Bazy danych a PHP ................................................................................................... 372Instalacja systemu bazy danych ................................................................................ 373Obsługa serwera MySQL .......................................................................................... 380

Lekcja 23. Podstawy SQL ............................................................................................ 386Czym jest SQL? ........................................................................................................ 386Obsługa tabel ............................................................................................................ 387Typy danych w kolumnach ....................................................................................... 392Zapytania .................................................................................................................. 397

Lekcja 24. PHP i bazy danych ...................................................................................... 410PHP i MySQL ........................................................................................................... 410PHP i SQLite ............................................................................................................ 417Ćwiczenia do samodzielnego wykonania ................................................................. 425

Lekcja 25. Podejście obiektowe ................................................................................... 426Korzystanie z PDO ................................................................................................... 426PHP i SQLite ............................................................................................................ 434

Lekcja 26. Bazy danych w praktyce ............................................................................. 438Licznik ...................................................................................................................... 438Logowanie ................................................................................................................ 441Sonda (ankieta) ......................................................................................................... 443Lista odwiedzin ......................................................................................................... 449Liczba osób na stronie .............................................................................................. 452Ćwiczenia do samodzielnego wykonania ................................................................. 454

Skorowidz ................................................................................... 455

Poleć książkęKup książkę

Page 7: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Rozdział 2.

Elementy języka

Lekcja 3. Pierwszy skrypt

Zaczynamy

Poznawanie nowego języka programowania, niezależnie od tego, czy jest to językskryptowy (tak jak PHP), czy też klasyczny, najlepiej rozpocząć od przykładu, któryspowoduje wyświetlenie dowolnego napisu. Napiszemy zatem skrypt, który spowodujepojawianie się w treści strony HTML pewnego ciągu znaków — niech będzie to napisPierwszy skrypt w PHP. Kod przykładu realizującego to zadanie został przedstawionyna listingu 2.1. Przyjrzyjmy mu się uważnie.

Listing 2.1. Skrypt wyświetlający w przeglądarce wybrany tekst (HTML)

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Moja strona WWW</title> </head> <body> <p> <?php echo("Pierwszy skrypt w PHP."); ?> </p> </body></html>

Większa część kodu to standardowe znaczniki HTML tworzące strukturę najprostszej(poprawnej) strony zgodnej z HTML 5. Jak już wspomniano wcześniej, nie będziemyomawiać typowych konstrukcji HTML-a. Przypomnijmy tylko, że struktura taka składasię z deklaracji typu dokumentu (<!DOCTYPE>), nagłówka (<head>) oraz treści (<body>).

Poleć książkęKup książkę

Page 8: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

44 PHP7. Praktyczny kurs

W sekcji <head> określany jest sposób kodowania znaków (w tym przypadku jest tostandard UTF-8) oraz tytuł strony (znacznik <title>). Ten sam kod przystosowany dostandardu XHTML 1.1 w kodowaniu ISO-8859-2 wyglądałby tak, jak przedstawiono tona listingu 2.2.

Listing 2.2. Skrypt wyświetlający w przeglądarce wybrany tekst (XHTML)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <title>Moja strona WWW</title> </head> <body> <p> <?php echo("Pierwszy skrypt w PHP."); ?> </p> </body></html>

Różnice są czysto kosmetyczne. Zmieniła się bowiem jedynie deklaracja typu dokumentuoraz treść znacznika <meta> określającego kodowanie znaków. Dodana została równieżprzestrzeń nazw XML. Dla dalszych rozważań nie ma znaczenia, czy użyty zostaniekod HTML, czy XHTML. Podane w książce przykłady będą jednak dostosowane donajbardziej obecnie rozpowszechnionego standardu HTML 5.

W obu przykładach (listingi 2.1 i 2.2) w sekcji <body> wewnątrz znacznika <p> jestumieszczona treść skryptu PHP. Znajduje się ona między znacznikami <?php oraz ?>.Wszystko to, co znajduje się między nimi, stanowi kod PHP i jest przetwarzane przezaparat wykonawczy PHP. W przypadku listingu 2.1 cała treść skryptu to:

echo("Pierwszy skrypt w PHP.");

Jest to instrukcja, czyli coś, co możemy traktować jako polecenie do wykonania. To po-lecenie oznacza: wyślij do przeglądarki1 ciąg znaków znajdujący się między znakamicudzysłowu prostego2. Zwróćmy uwagę na występujący na końcu znak średnika. Oznaczaon koniec instrukcji3.

1 Jest to pewne uproszczenie. W rzeczywistości instrukcja echo powoduje wysłanie danych do standardowego

wyjścia, co akurat w omawianym przypadku będzie równoznaczne z wysłaniem tekstu do przeglądarki(za pośrednictwem serwera WWW). Gdyby skrypt został uruchomiony na konsoli, tekst pojawiłbysię właśnie na niej.

2 W rzeczywistości nie są to prawdziwe znaki cudzysłowu, ale tzw. znaki zastępcze cudzysłowu ASCII.Najczęściej jednak mówi się na nie po prostu „cudzysłów” lub „cudzysłów prosty”.

3 Formalnie rzecz ujmując, średnika trzeba używać do rozdzielania instrukcji lub wtedy, gdy nie kończymyw danym pliku trybu PHP. W tym przypadku średnik można by więc pominąć (mamy do czynieniatylko z jedną instrukcją PHP). Dla zachowania spójności kodu lepiej jednak zawsze dodawać średnik.

Poleć książkęKup książkę

Page 9: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Rozdział 2. Elementy języka 45

Zobaczmy teraz, jak zadziała taki skrypt po wczytaniu do przeglądarki. Całą treść li-stingu 2.1 zapisujemy w pliku o nazwie index.php, po czym umieszczamy go w katalogugłównym serwera WWW (patrz lekcja 2. z rozdziału 1.). Odwołujemy się następnie dopliku index.php, wpisując na pasku adresu: http://localhost/index.php lub http://127.0.0.1/index.php. Zobaczymy widok taki jak na rysunku 2.1, a zatem skrypt działa zgodniez założeniami.

Rysunek 2.1.Efekt działaniaskryptuz listingu 2.1

Obejrzyjmy dodatkowo, jak wygląda kod źródłowy tak wygenerowanej strony. W więk-szości przeglądarek należy w tym celu wybrać odpowiednią pozycję z menu bądź wci-snąć właściwą kombinację klawiszy. W Firefoksie 47 będą to kolejne menu: Narzędzia,Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również zależy od rodzaju przeglądarki, np. w przypadkuFirefoksa postać ta będzie podobna do przedstawionej na rysunku 2.2, a sam tekst zawszebędzie miał postać widoczną na listingu 2.3.

Rysunek 2.2.Kod źródłowystronyw przeglądarceMozilla Firefox

Listing 2.3. Kod HTML strony generowanej przez skrypt 2.1

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Moja strona WWW</title> </head>

Poleć książkęKup książkę

Page 10: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

46 PHP7. Praktyczny kurs

<body> <p> Pierwszy skrypt w PHP. </p> </body></html>

Widać wyraźnie, że zniknęły wszelkie znaczniki PHP i pozostał jedynie czysty kodHTML. Taka jest bowiem istota działania języków skryptowych pracujących po stro-nie serwera. Zadaniem skryptu PHP jest wygenerowanie takiego kodu, który będziemógł być zrozumiały dla przeglądarki. W tym przykładzie w miejsce skryptu zawar-tego między znacznikami <?php i ?> została wstawiona wytworzona przez niego treść,czyli napis Pierwszy skrypt PHP. A zatem, powtarzając raz jeszcze: skrypt PHP musiwygenerować taką treść, która zostanie zrozumiana przez przeglądarkę. Najczęściej jestto kod HTML, ale może to być również dokument PDF, plik skompresowany, obrazczy dowolne inne dane. Ważne jest to, żeby dane te zostały wysłane do przeglądarkiw taki sposób, aby mogła ona je poprawnie zinterpretować.

Zwróćmy w tym miejscu uwagę, że znacznik kończący akapit (</p>) znalazł się w tejsamej linii co napis wygenerowany przez skrypt. Dlaczego tak się stało? Otóż wynika toze sposobu interpretacji kodu przez PHP. Po prostu jako skrypt traktowany jest całyfragment:

<?php echo("Pierwszy skrypt w PHP".);?>

włącznie ze znajdującym się za znacznikiem ?> znakiem końca linii. Cały ten fragmentjest zamieniany na treść wygenerowaną przez skrypt. Skoro tą treścią jest napis Pierw-szy skrypt PHP, który nie zawiera znaku końca linii, łączy się on z następującym po ?>znacznikiem HTML. Tym znacznikiem jest </p>, a zatem powstaje połączona linia:

Pierwszy skrypt w PHP. </p>

Nie ma to znaczenia dla przeglądarki, która w trakcie interpretacji kodu i tak pomijaznaki końca linii, ale ma znaczenie dla osoby przeglądającej czy analizującej kod, bow takiej postaci jest on mniej czytelny. Jak więc zapobiec temu zjawisku? Logikapodpowiada, że trzeba po prostu wprowadzić dodatkowy znak końca linii. Można to zro-bić na dwa sposoby — albo w instrukcji echo, albo w kodzie HTML. Pierwsze rozwiąza-nie będzie wymagało zastosowania sekwencji znaków specjalnych. Ta tematyka zo-stanie przedstawiona w kolejnej lekcji. Na razie można powiedzieć tyle, że instrukcjaecho wyprowadzająca dodatkowy znak końca linii powinna mieć postać:

echo("Pierwszy skrypt w PHP.\n");

Drugi sposób to wprowadzenie do kodu dodatkowej pustej linii. Cały skrypt miałbyw takiej sytuacji postać widoczną na listingu 2.4. Kod źródłowy wygenerowanej przezniego strony (w interpretacji przeglądarki Firefox) jest natomiast widoczny na rysunku2.3. Tym razem do czytelności listingu nie powinniśmy mieć już żadnych zastrzeżeń.

Poleć książkęKup książkę

Page 11: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Rozdział 2. Elementy języka 47

Listing 2.4. Skrypt po wprowadzeniu do kodu dodatkowej pustej linii

<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>Moja strona WWW</title> </head> <body> <p> <?php echo("Pierwszy skrypt w PHP."); ?>

</p> </body></html>

Rysunek 2.3.Kod źródłowystrony generowanejprzez listing 2.4

Znaczniki PHP

Wiemy już, że treść skryptu PHP musi być oddzielona od kodu HTML specjalnymiznacznikami. Dokładniej rzecz ujmując, każdy fragment kodu PHP (nawet jeśli nie mawokół niego kodu HTML) musi być ujęty w znaczniki, tak aby aparat wykonawczy PHPwiedział, że dana sekcja to instrukcje PHP, a nie inne dane. Podstawowe znaczniki po-znaliśmy w poprzednim punkcie, tak naprawdę jest ich jednak nieco więcej. W sumiemożna wyróżnić cztery różne typy:

znaczniki kanoniczne,

znaczniki typu SGML,

znaczniki typu ASP,

znaczniki skryptów HTML.

Przy czym w PHP7 występują tylko dwa pierwsze typy znaczników (kanonicznei SGML), natomiast pozostałe były dostępne w poprzednich wersjach PHP.

Poleć książkęKup książkę

Page 12: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

48 PHP7. Praktyczny kurs

Znaczniki kanoniczne

Znaczniki kanoniczne to standardowe znaczniki PHP, które poznaliśmy już wcze-śniej. Znacznik otwierający to <?php, natomiast zamykający to ?>. Schematyczna kon-strukcja wykorzystująca ten typ ma zatem następującą postać:

<?php // Tutaj kod skryptu?>

Znaczniki kanoniczne są rozpoznawane zawsze, niezależnie od tego, jakie opcje sąwłączone w pliku konfiguracyjnym PHP (php.ini). Używanie tych znaczników to rów-nież zalecany sposób umieszczania skryptów w kodzie HTML i właśnie ten sposóbbędzie wykorzystywany w przykładach w dalszej części książki.

Znaczniki typu SGML

Znaczniki typu SGML to znaczniki w postaci skróconej. Znacznik otwierający to <?,zamykający — ?>. Schematyczna konstrukcja wykorzystująca ten typ będzie miała postać:

<? // Tutaj kod skryptu?>

Jest to najkrótsza forma znaczników bloku PHP, jakie można zastosować. Aby jednakmóc korzystać z tego sposobu, należy włączyć rozpoznawanie tychże znaczników.Można to zrobić, wykorzystując jeden z przedstawionych niżej sposobów:

Można włączyć opcję enable-short-tags przed kompilacją pakietu(./configure --enable-short-tags).

W pliku konfiguracyjnym php.ini można umieścić linię short_open_tag = On.

Wykorzystywanie tego typu znaczników, choć możliwe, nie zawsze jest jednak zalecane.

Znaczniki typu ASP

Znaczniki typu ASP są znane użytkownikom technologii ASP. Znacznik otwierającyto <%, a zamykający — %>. Schematyczna konstrukcja wykorzystująca ten typ będziemiała więc postać:

<% // Tutaj kod skryptu%>

Aby móc korzystać z tego typu wyróżnienia bloków PHP, należy w pliku konfigura-cyjnym włączyć opcję asp_tags = On. Możliwość korzystania z tego typu znacznikówzostała usunięta w PHP7.

Poleć książkęKup książkę

Page 13: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Rozdział 2. Elementy języka 49

Znaczniki skryptów HTML

Ta postać jest dobrze znana użytkownikom HTML. Jest to typowy znacznik <script>z parametrem language ustawionym na wartość php. Znacznik otwierający będzie miałzatem postać <script language="php">, natomiast zamykający — </script>. W związkuz tym schematyczna konstrukcja wykorzystująca ten typ znaczników to:

<script language="php"> // Tutaj kod skryptu</script>

Postać ta, podobnie jak kanoniczna, była rozpoznawana standardowo i nie wymagaławłączania żadnych dodatkowych opcji konfiguracyjnych. Ta forma znaczników zostaławyłączona w PHP7.

KomentarzeW kodzie PHP można, tak jak w większości innych, zarówno skryptowych, jak i kla-sycznych języków programowania, stosować komentarze. Są one ignorowane i usu-wane w trakcie przetwarzania skryptu, pozwalają za to umieścić w kodzie uwagi, któremogą być dla nas przydatne podczas jego analizy. W pliku wynikowym, który powędrujedo użytkownika (przeglądarki), na pewno ich nie będzie.

Do wyboru mamy trzy rodzaje komentarzy: dwa zapożyczone są z języków takich jak Ci C++, a jeden — z powłok (ang. system shell) uniksowych. Są to:

komentarz blokowy,

komentarz jednowierszowy,

komentarz jednowierszowy uniksowy.

Komentarz blokowy

Ten typ komentarza zaczyna się od sekwencji znaków /, a kończy się sekwencją /.Wszystko to, co znajduje się między tymi znakami, zostanie zignorowane przez PHP.Przykład poprawnego zastosowania może być taki:

<?php/*W tym miejscu wyświetlamy napis powitalny*/echo ("Witamy na stronie");/*Koniec kodu PHP*/?>

Po przetworzeniu takiego kodu przez PHP do przeglądarki zostanie wysłana jedynielinia zawierająca ciąg znaków:

Witamy na stronie

Należy pamiętać, że komentarze tego typu koniecznie muszą znaleźć się w bloku PHP(co wydaje się zrozumiałe, jako że dotyczy on kodu PHP) oraz że nie wolno ich za-gnieżdżać, czyli w jednym komentarzu blokowym nie wolno umieszczać kolejnego.Zabroniona jest zatem taka sytuacja, jak przedstawiona poniżej:

Poleć książkęKup książkę

Page 14: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

50 PHP7. Praktyczny kurs

<?php/*Początek komentarza 1. echo("Witamy na stronie"); /*Komentarz 2.*/Koniec komentarza 1.*/?>

Próba zastosowania takiej konstrukcji spowoduje powstanie błędu, który objawi się ko-munikatem przedstawionym na rysunku 2.44. Wewnątrz komentarza blokowego możenatomiast znaleźć się komentarz jednowierszowy lub uniksowy, co zostanie pokazanena kolejnych stronach.

Rysunek 2.4.Próbazagnieżdżeniakomentarzyblokowychpowodujewyświetleniekomunikatuo błędzie

Komentarz jednowierszowy

Pierwszy typ komentarza jednowierszowego został zaczerpnięty ze składni klasycz-nych języków programowania takich jak C i C++. Rozpoczyna się on od sekwencjiznaków // i kończy w bieżącej linii skryptu. Wszystko to, co znajduje się między tymiznakami a końcem linii, jest traktowane jako komentarz i ignorowane przez analizatorskładniowy. Przykład wykorzystania tego typu komentarza wygląda następująco:

<?php// W tym miejscu wyświetlamy napis powitalnyecho ("Witamy na stronie.");// Koniec kodu PHP?>

Jak wspomniano już wcześniej, komentarze jednowierszowe mogą być zagnieżdżanewewnątrz komentarza blokowego, np.:

<?php/*Początek komentarza blokowego// Komentarz jednowierszowyKoniec komentarza blokowego*/?>

Taka konstrukcja formalnie jest w pełni dopuszczalna i nie spowoduje powstania błędu,jednak w praktyce zazwyczaj nie ma potrzeby jej stosowania.

4 O ile w opcjach konfiguracyjnych PHP nie zostało wyłączone wyświetlanie komunikatów o błędach.

Poleć książkęKup książkę

Page 15: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

SkorowidzA

adresy IP, 356ankieta, 4 43argumenty, 131

domyślne, 130funkcji, 119konstruktorów, 297

atrybut, 290AUTO_INCREMENT, 388INDEX, 388NOT NULL, 388PRIMARY KEY, 388UNIQUE, 388

atrybuty formularza, 224automatyczne ładowanie kodu, 298

Bbaza danych, 367, 372bezpieczeństwo pakietu XAMPP, 34biblioteka graficzna, 329bitowa różnica symetryczna, 75blok try...catch, 319brak połączenia, 27

Cciasteczka, Patrz cookiesciągi znaków, 148

formatowanie, 153porównania, 162przeszukiwanie, 163przetwarzanie, 159wielkość liter, 158wyrażenia złożone, 151wyświetlanie, 152

cookies, 259

argumenty, 260usuwanie, 263zapamiętywanie danych, 264zliczanie liczby odwiedzin, 267

czas, 134generowania strony, 145

Ddata, 134DCL, Data Control Language, 387DDL, Data Definition Language, 386destruktory, 295, 298

klas bazowych, 310DML, Data Manipulation Language, 387dostęp

do cookies, 263do plików, 210do składowych, 292, 312do strony, 279

DSN, Data Source Name, 427dziedziczenie, 303

Eekran tytułowy pakietu XAMPP, 34elementy

składowe formularza, 224typu radio, 227

Ffiltry funkcji imagefilter, 348format

GIF, 340JPEG, 340MIME, 242PNG, 340

Poleć książkęKup książkę

Page 16: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

456 PHP7. Praktyczny kurs

formatowanie ciągów, 153formularze, 223

atrybuty, 224elementy składowe, 224odczyt danych, 226, 230wprowadzanie opinii, 232wysyłanie plików, 237

FTP, 360funkcja

chdir, 188checkdate, 146checkPass, 441date, 134, 135, 136disk_free_space, 191fclose, 199fgetc, 202fgets, 199file, 206file_exists, 188, 189file_put_contents, 207filesize, 189, 204fopen, 189, 197, 198fread, 203, 204fwrite, 207getcwd, 188getdate, 136, 137getimagesize, 343gmdate, 146imagefilter, 348localtime, 147mkdir, 187mysqli_affected_rows, 416mysqli_close, 412mysqli_connect, 410printf, 155readData, 451readdir, 192rmdir, 188setlocale, 141sqlite_array_query, 423sqlite_close, 418, 435sqlite_exec, 422sqlite_open, 418sqlite_query, 420sqlite_unbuffered_query, 420strftime, 139, 140time, 148unlink, 189

funkcjeargumenty, 119argumenty domyślne, 130definiowanie, 118przekazywanie argumentów, 128zmieniające wielkość liter, 158

zwracanie wartości, 121

Ggaleria

obrazów, 330z miniaturami obrazów, 334

generowaniegrafiki, 343listy plików, 251

głosowanie, 443grafika, 329

Hhasło, 281HTTP, HyperText Transfer Protocol, 13

Iidentyfikator sesji, 270iloczyn

bitowy, 74logiczny, 77

implementacja sesji, 274informacja

o błędzie, 246o obrazie, 342o pliku, 190

instalacjaMySQL, 374narzędzi, 14pakietu XAMPP, 31, 35PHP, 16, 21, 23serwera WWW, 15, 20, 23SQLite, 373systemu bazy danych, 373w trybie tekstowym, 20

instalator pakietu XAMPP, 32instrukcja

break, 109continue, 111CREATE TABLE, 387DELETE, 409DROP TABLE, 392echo, 66if, 94, 115if…else, 95, 115if…else if, 96, 116include, 53INSERT INTO, 397print, 53require, 56

Poleć książkęKup książkę

Page 17: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Skorowidz 457

SELECT, 399throw, 318UPDATE, 407

instrukcjesterujące, 93warunkowe, 93, 115wyboru, 101

Jjęzyk

DCL, 387DDL, 386DML, 387

języki skryptowe, 11

Kkatalogi

bieżące, 188nawigacja, 193odczyt zawartości, 181rekurencyjne usuwanie zawartości, 192tworzenie, 187usuwanie, 188

klasa, 290Exception, 318PDO, 427

klasybazowe, 310potomne, 310

klucze, 368kod

formularza, 225HTML, 45źródłowy strony, 45

kodowanie znaków specjalnych, 69kolory, 340komentarz, 49

blokowy, 49jednowierszowy, 50jednowierszowy uniksowy, 51

komunikacja z serwerem, 383konfiguracja

narzędzi, 14sesji, 272

konstruktory, 295klas bazowych, 310

konwersje typów, 89kończenie

połączenia, 411, 418, 428, 435sesji, 271

Lliczba osób na stronie, 452licznik

odwiedzin strony, 212, 438wykorzystujący grafikę, 215

Linuxinstalacja MySQL, 379instalacja pakietu XAMPP, 31testowanie instalacji XAMPP-a, 34uruchamianie serwera MySQL, 381uruchamianie serwerów, 32

listaodnośników, 216, 246odwiedzin, 218, 449plików, 251z identyfikatorami, 254

logiczna alternatywa wykluczająca, 78logowanie, 281, 285, 441lokalizacja dołączanych plików, 58

Łładowanie kodu klasy, 298łączenie skryptów, 53

MMenedżer oprogramowania, 15metoda, 290

exec, 437execute, 433fetch, 429fetchAll, 432GET, 224POST, 229query, 428

MIME, Multipurpose Internet Mail Extensions,242

miniatury obrazów, 334Mint

instalacja PHP, 16instalacja serwera WWW, 15testowanie instalacji, 18uruchamianie serwera, 16

modyfikacjadanych, 407tabel, 390

modyfikatory dostępu, 312MySQL, 367, 374, 410

logowanie, 441operatory logiczne, 404operatory relacyjne, 403, 404

Poleć książkęKup książkę

Page 18: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

458 PHP7. Praktyczny kurs

tworzenie konta użytkownika, 385uruchamianie serwera, 380

Nnakładanie filtrów, 348narzędzia, 8nawiązywanie połączenia, 410, 417, 427

z bazą, 434nawigacja po katalogach, 193nazewnictwo zmiennych iteracyjnych, 113negacja

bitowa, 75logiczna, 78

Oobiekty, 289obliczanie liczby dni, 143obracanie, 351obrazy, 329obsługa

cookies, 259daty i czasu, 134grafiki, 329serwera MySQL, 380sieci, 353tabel, 387

odbieranie plików przeglądarki, 243odczyt

bloków danych, 203całej zawartości pliku, 204danych, 199danych z formularza, 226, 230danych z tabeli, 430pojedynczych wierszy, 199pojedynczych znaków, 202zawartości katalogu, 181zawartości tabeli, 414, 420

odnośniki, 216odwołania do składowych, 293opcje konfiguracyjne sesji, 272operacje

na katalogach, 187na plikach, 189, 196na tablicach, 171na zmiennych, 71

operator, 71indeksowania tablic, 83kontroli błędów, 84kontroli typów, 85łańcuchowy, 83łączenia tablic, 82

new, 86rozdzielania wyrażeń, 86rzutowania typów, 86warunkowy, 84, 103wykonania polecenia zewnętrznego, 85

operatoryarytmetyczne, 71bitowe, 73inkrementacji i dekrementacji, 80logiczne, 77, 404porównywania tablic, 83przypisania, 78relacyjne, 79, 403, 404tablicowe, 82

otwieranie plików, 197

Ppakiet XAMPP, 30, 380panel kontrolny XAMPP-a, 38PDO, PHP Data Objects, 426pętla

do…while, 107for, 104, 112, 116foreach, 107, 116while, 106, 117

PHP, 11pierwszy skrypt, 43plik

ankieta.php, 445apache2.conf, 29glowna.php, 441httpd.conf, 29index.php, 441konfiguracyjny PHP, 29, 39logout.php, 441php.ini, 39

plikigraficzne, 340określanie rozmiaru, 189otwieranie, 197synchronizacja dostępu, 210tworzenie, 189, 197usuwanie, 189zamykanie, 199zapis danych, 207zmiana pozycji, 208

pobieraniedanych, 399plików, 250plików z serwera FTP, 361plików z serwisu, 245wszystkich wierszy tabeli, 400wyników zapytania, 432

Poleć książkęKup książkę

Page 19: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Skorowidz 459

zawartości kolumn, 401poczta, 363podejście obiektowe, 426pola, 290polecenie ALTER TABLE, 390połączenia

FTP, 360stałe, 411z bazą danych, 410, 417, 428, 434z serwerem, 27

porównania ciągów, 162priorytety operatorów, 86problem

błąd podczas uruchamiania, 28brak połączenia, 27

programowanie obiektowe, 303protokół

HTTP, 13SMTP, 363

przechwytywaniewielu wyjątków, 325wyjątku, 320

przeglądarka, 223odbieranie danych, 223wysyłanie danych, 241

przekazywanie argumentów, 128przesłanianie składowych, 307przesunięcie bitowe

w lewo, 76w prawo, 76

przeszukiwanie ciągów, 163przetwarzanie

ciągów znaków, 159grafiki, 339obrazów, 348

pula, pool, 411

Rrekurencyjne usuwanie zawartości katalogu, 192relacje, 369relacyjne bazy danych, 367rodzaje

ciągów znaków, 148zmiennych, 60

rozmiar pliku, 189rozpoczynanie sesji, 270rozpoznawanie

systemu operacyjnego, 360przeglądarki, 358

rysowanieelips, 346linii, 343prostokątów, 344

wielokątów, 345wycinków elips, 347

Sselektywne pobieranie danych, 403serwer

Apache, 15Apache 2, 23MySQL, 380WWW, 15

sesje, 269identyfikator, 270implementacja, 274kontrola dostępu, 279kończenie, 271opcje konfiguracyjne, 272rozpoczynanie, 270śledzenie zachowań użytkownika, 277zmienne, 271

skalowanie, 349składnia

alternatywna, 115heredoc, 63nowdoc, 64

składowefinalne, 309klasy, 290statyczne, 314

skryptodbierający pliki, 239wysyłający pliki, 247

słowo kluczoweclass, 290new, 293

SMTP, 363sonda, 443sortowanie, 172, 184, 400specyfikatory dostępu, 312SQL, Structured Query Language, 386SQLite, 367, 373, 417, 434stała

FILE_APPEND, 208FILE_IGNORE_NEW_LINES, 206FILE_SKIP_EMPTY_LINES, 206FILE_USE_INCLUDE_PATH, 206, 208LOCK_EX, 208, 211LOCK_SH, 211LOCK_UN, 211SCANDIR_SORT_ASCENDING, 184SCANDIR_SORT_DESCENDING, 184SCANDIR_SORT_NONE, 184SEEK_CUR, 209SEEK_END, 209

Poleć książkęKup książkę

Page 20: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

460 PHP7. Praktyczny kurs

SEEK_SET, 209suma

bitowa, 74logiczna, 77

systemlogowania, 285plików, 181

Śśledzenie zachowań użytkownika, 277

Ttabele, 368

modyfikacja, 390tworzenie, 387usuwanie, 392

tablica$_FILES, 238$_SERVER, 353REQUEST, 231

tabliceasocjacyjne, 169proste, 165sortowanie, 172ustalanie liczby elementów, 172wyświetlanie zawartości, 171

tekstowy licznik odwiedzin, 212test działania PHP, 26testowanie

instalacji, 18, 22, 26konfiguracji, 38

tworzenieciągów znaków, 149galerii obrazów, 330katalogów, 187konstruktorów, 295konta użytkownika, 385obiektów, 86, 293obrazu, 339plików, 189, 197tabel, 387znacznika czasu, 142

typ danych, 60, 131BINARY, 396BLOB, 396boolean, 60, 92CHAR, 395ENUM, 396float, 61, 92integer, 60, 92MIME danych, 242

NULL, 65, 397resource, 65SET, 396string, 62, 93TEXT, 396VARBINARY, 396VARCHAR, 395

typydanych w kolumnach, 392daty i czasu, 393liczbowe, 392łańcuchowe, 395skalarne, 60specjalne, 64złożone, 64

UUbuntu

instalacja PHP, 21instalacja serwera WWW, 20testowanie instalacji, 22uruchamianie serwera, 22

uruchamianie serwera, 16, 22, 24, 27XAMPP, 32

ustalenie haseł dostępowych, 39usuwanie

cookie, 263danych, 409katalogów, 188plików, 189tabel, 392

Wweryfikacja, 279wiersz poleceń, 40Windows

instalacja MySQL, 374instalacja pakietu XAMPP, 35instalacja PHP, 23instalacja serwera WWW, 23testowanie instalacji, 26uruchamianie serwera, 24uruchamianie serwera MySQL, 380zarządzanie serwerami, 36

właściwości, 290wprowadzanie danych, 397wybór bazy danych, 386, 411wyjątek PDOException, 431wyjątki, 317

własne, 327wykonywanie zapytań, 413, 419

Poleć książkęKup książkę

Page 21: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

Skorowidz 461

wylogowanie, 285wymuszanie konwersji, 90wyniki głosowania, 446, 449wyrażenia

warunkowe, 99złożone, 151

wysyłaniedanych, 241plików, 237plików do przeglądarki, 244plików do serwera, 236poczty, 363zawartości plików, 242

wyświetlanieciągów znaków, 152daty i czasu, 134, 138informacji, 51list dla plików, 185listy odnośników, 246wartości zmiennych, 66zawartości tablic, 171zawartości katalogu, 183

XXAMPP, 30, 380

Zzagnieżdżanie

instrukcji warunkowych, 97pętli, 113

zamykanie plików, 199zapamiętywanie danych, 264zapis

danych, 207plików graficznych, 340w pliku tekstowym, 234

zapytania, 397aktualizujące dane, 416modyfikujące dane, 422, 433, 437pobierające dane, 413, 420, 428, 436

zarządzaniebazami danych, 384serwerami, 36

zasady konwersji, 91zasięg zmiennych, 123zatrzymywanie serwera, 22, 24zliczanie liczby odwiedzin, 267złożone wyrażenia warunkowe, 99zmiana

katalogu bieżącego, 188nazw kolumn, 402

zmienianie wielkości liter, 158zmienne, 59, 65

globalne, 87, 123iteracyjne, 113lokalne, 126sesji, 271statyczne, 127superglobalne, 128

znacznik<form>, 236czasu, 142

znacznikikanoniczne, 48PHP, 47skryptów HTML, 49typu ASP, 48typu SGML, 48

znakapostrofu, 62cudzysłowu, 63

znaki specjalne, 69zwracanie wartości, 121

Poleć książkęKup książkę

Page 22: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również

462 PHP7. Praktyczny kurs

Poleć książkęKup książkę

Page 24: Wszelkie prawa zastrzeżone. Nieautoryzowane ...Dla twórców witryn, Źródło strony bądź skrót klawiaturowy Ctrl+U. Sposób wyświetla-nia kodu źródłowego strony również