Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
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ść
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
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ę
462 PHP7. Praktyczny kurs
Poleć książkęKup książkę