SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
IDZ DO
         PRZYK£ADOWY ROZDZIA£
                                         PHP i MySQL.
                           SPIS TRE CI   Dynamiczne strony
           KATALOG KSI¥¯EK
                                         WWW. Szybki start
                                         Autor: Larry Ullman
                      KATALOG ONLINE     T³umaczenie: Micha³ Dadan (rozdz. 1 – 7),
                                         Piotr Pilch (rozdz. 8 – 13, dod. A – D)
       ZAMÓW DRUKOWANY KATALOG           ISBN: 83-7361-157-6
                                         Tytu³ orygina³u: PHP and MySQL for Dynamic Web Sites VQPG
                                         Format: B5, stron: 580
              TWÓJ KOSZYK                Przyk³ady na ftp: 352 kB

                    DODAJ DO KOSZYKA     Coraz wiêcej serwisów internetowych sk³ada siê nie tylko z atrakcyjnego interfejsu
                                         u¿ytkownika, ale tak¿e z rozbudowanych aplikacji dzia³aj¹cych na serwerze. S¹ one
                                         najczê ciej oparte o bazy danych, które przechowuj¹ dane i zapewniaj¹ szybki do nich
         CENNIK I INFORMACJE             dostêp. Je li chcesz w krótkim czasie nauczyæ siê tworzyæ takie aplikacje, znalaz³e
                                         w³a ciw¹ ksi¹¿kê.
                   ZAMÓW INFORMACJE      „PHP i MySQL. Dynamiczne strony WWW” nauczy Ciê tworzenia dynamicznych
                     O NOWO CIACH        serwisów internetowych z wykorzystaniem PHP i MySQL-a. Ksi¹¿ka przeka¿e Ci wiedzê
                                         niezbêdn¹ dla projektantów rozwi¹zañ internetowych. Wszystkie zagadnienia opisane
                       ZAMÓW CENNIK      s¹ „krok po kroku”, ka¿demu z nich towarzyszy te¿ odpowiedni rysunek. Przyk³ady
                                         odzwierciedlaj¹ problemy, z którymi projektanci stron internetowych spotykaj¹ siê
                                         na co dzieñ.
                 CZYTELNIA               Ksi¹¿ka opisuje:
          FRAGMENTY KSI¥¯EK ONLINE          • Podstawy programowania w PHP
                                            • Tworzenie dynamicznych stron internetowych z u¿yciem PHP
                                            • Zasady projektowanie baz danych
                                            • Jêzyk SQL
                                            • Korzystanie z systemu zarz¹dzania bazami danych MySQL
                                            • £¹czenie PHP z systemem MySQL
                                            • U¿ycie sesji
                                            • Zabezpieczanie stron internetowych przed dostêpem nieuprawnionych osób
                                            • Przyk³adowe aplikacje: rejestracja u¿ytkowników i sklep internetowy
                                         Tre æ ksi¹¿ki uzupe³niaj¹ dodatki opisuj¹ce sposób instalacji omawianych w niej
                                         narzêdzi oraz dodatkowe, przydatne aplikacje.
Wydawnictwo Helion                       Je li chcesz w szybko nauczyæ siê programowania dynamicznych serwisów
ul. Chopina 6                            internetowych, ta ksi¹¿ka bêdzie Twoim intensywnym kursem. Ju¿ po przeczytaniu
44-100 Gliwice                           kilku rozdzia³ów bêdziesz w stanie pisaæ pierwsze programy w PHP korzystaj¹ce z bazy
tel. (32)230-98-63                       MySQL, a po przeczytaniu ca³ej ksi¹¿ki poradzisz sobie równie¿ z tworzeniem bardziej
e-mail: helion@helion.pl                 rozbudowanych aplikacji.
Spis treści



                                                                                   Spis treści


              Wprowadzenie                                                                                                 9
              Czym są dynamiczne strony WWW?........................................................10
              Czym jest PHP?.........................................................................................11
              Co to jest MySQL?....................................................................................14
              Co będzie Ci potrzebne .............................................................................16
              O tej ksią ce ..............................................................................................16
Rozdział 1.   Wprowadzenie do PHP                                                                                             19
              Podstawy składni.......................................................................................20
              Przesyłanie danych do przeglądarki internetowej .....................................23




                                                                                                                                   Spis treści
              PHP, HTML i „białe odstępy” ..................................................................26
              Wstawianie komentarzy ............................................................................31
              Co to są zmienne? .....................................................................................34
              Łańcuchy ...................................................................................................37
              Liczby........................................................................................................41
              Stałe...........................................................................................................45
              Apostrof kontra cudzysłów .......................................................................48
Rozdział 2.   Programowanie w PHP                                                                                        51
              Tworzenie formularza w języku HTML ..................................................52
              Obsługa formularza HTML.......................................................................56
              Zarządzanie opcją Magic Quotes ................................................................59
              Wyra enia warunkowe i operatory............................................................61
              Weryfikacja danych pochodzących z formularza......................................65
              Ręczne przesyłanie wartości do skryptu ...................................................69
              Co to są tablice? ........................................................................................74
              Pętle for i while .........................................................................................92




                                                                                                                             5
Spis treści

              Rozdział 3.   Tworzenie dynamicznych stron WWW                                                                       95
                            Wykorzystywanie plików zewnętrznych...................................................96
                            Tworzenie i wywoływanie własnych funkcji ..........................................105
                            Zasięg zmiennej.......................................................................................115
                            Wyświetlanie i obsługa formularza przez jeden skrypt.............................118
                            Wysyłanie poczty elektronicznej...............................................................122
                            Nagłówki HTTP ......................................................................................125
                            Tworzenie formularzy z pamięcią...........................................................130
                            Funkcje daty i czasu ................................................................................133
              Rozdział 4.   Wprowadzenie do SQL i MySQL                                                                         137
                            Projektowanie tabel .................................................................................138
                            Korzystanie z monitora mysqla...............................................................142
                            Tworzenie baz danych i tabel..................................................................146
                            Wprowadzanie rekordów ........................................................................149
                            Wybieranie danych..................................................................................152
                            Wyra enia warunkowe ............................................................................154
Spis treści




                            Stosowanie LIKE i NOT LIKE ..............................................................158
                            Sortowanie wyników zapytania .................................................................160
                            Ograniczanie wyników zapytania ...........................................................163
                            Uaktualnianie danych ..............................................................................165
                            Usuwanie danych ....................................................................................167
              Rozdział 5.   Zaawansowany SQL i MySQL                                                                                   169
                            Projekt bazy danych ................................................................................170
                            Złączenia .................................................................................................185
                            Funkcje ....................................................................................................189
                            Indeksy ....................................................................................................201
              Rozdział 6.   PHP i MySQL                                                                                         205
                            Tworzenie szablonu.................................................................................206
                            Łączenie się z MySQL-em i wybieranie bazy.........................................211
                            Obsługa błędów.......................................................................................215
                            Wykonywanie prostych zapytań ................................................................218
                            Odczytywanie wyników zapytania..........................................................228
                            Bezpieczeństwo.......................................................................................232
                            Korzystanie z funkcji mysql_num_rows() ..............................................238
                            Uaktualnianie rekordów w PHP ................................................................244

              6
Spis treści

Rozdział 7.         Sesje i „ciasteczka”                                                                                         251
                    Posługiwanie się ciasteczkami ................................................................252
                    Sesje ........................................................................................................271
                    Sesje a „ciasteczka”.................................................................................287
Rozdział 8.         Zabezpieczenia                                                                                    295
                    Autoryzacja HTTP ..................................................................................296
                    Walidacja formularza przy u yciu skryptu JavaScript .............................302
                    Wyra enia regularne ...............................................................................309
                    Zabezpieczenia bazy danych ...................................................................321
Rozdział 9.         Tworzenie aplikacji internetowych                                                          325
                    Metody debugowania kodu źródłowego skryptu PHP ............................326
                    Metody debugowania zapytań SQL i serwera MySQL...........................329
                    Obsługa błędów w języku PHP.................................................................335
                    Obsługa błędów serwera MySQL..............................................................339
                    Zwiększanie wydajności aplikacji internetowych ...................................342
Rozdział 10. Zagadnienia dodatkowe                                                                            347




                                                                                                                                        Spis treści
             Buforowanie wyjścia...............................................................................348
             Buforowanie stron HTML.......................................................................355
             Określanie typu przeglądarki internetowej.............................................357
             Skrypty PHP i JavaScript ........................................................................361
             Zastosowanie pakietu PEAR ...................................................................369
Rozdział 11. Zarządzanie zawartością strony — przykład                                                          377
             Tworzenie szablonu.................................................................................378
             Tworzenie zwykłych stron internetowych ..............................................383
             Zarządzanie adresami URL .....................................................................385
             Zarządzanie plikami ................................................................................402
Rozdział 12. Rejestrowanie użytkowników — przykład                                                                     417
             Tworzenie szablonów..............................................................................418
             Tworzenie skryptów konfiguracyjnych...................................................422
             Tworzenie strony głównej .......................................................................428
             Rejestracja ...............................................................................................430
             Logowanie i wylogowywanie się ..............................................................440
             Zarządzanie hasłami ................................................................................446
             Część administracyjna aplikacji ..............................................................457

                                                                                                                                  7
Spis treści

              Rozdział 13. Sklep internetowy — przykład                                                                       473
                           Tworzenie bazy danych...........................................................................474
                           Część administracyjna aplikacji ..............................................................478
                           Tworzenie szablonu części publicznej aplikacji......................................491
                           Katalog produktów ..................................................................................495
                           Koszyk zakupów .....................................................................................504
              Dodatek A          Instalacja                                                                                515
                                 Instalacja pod systemem Windows............................................................516
                                 Definiowanie uprawnień serwera MySQL..............................................522
                                 Sprawdzanie poprawności instalacji ......................................................528
              Dodatek B          Aplikacje dodatkowe                                                                                  531
                                 Narzędzie phpMyAdmin .........................................................................532
                                 Systemy szablonów .................................................................................533
                                 Oprogramowanie obsługujące fora dyskusyjne.......................................534
                                 Zarządzanie zawartością..........................................................................535
                                 Handel elektroniczny...............................................................................536
Spis treści




                                 Wyszukiwarki..........................................................................................537
                                 Biblioteki kodów źródłowych .................................................................538
              Dodatek C          Odsyłacz                                                                                                539
                                 Język PHP ...............................................................................................540
                                 Serwer MySQL .......................................................................................547
              Dodatek D          Zasoby internetowe                                                                                      553
                                 Język PHP ...............................................................................................554
                                 Serwer MySQL .......................................................................................557
                                 Język SQL ...............................................................................................559
                                 Zabezpieczenia ........................................................................................560
                                 Inne strony internetowe ...........................................................................561
                                 Skorowidz                                                                                            565




              8
Zarządzanie zawartością strony — przykład
Zarządzanie zawartością
     strony — przykład
          Rozdział 11. Zarządzanie zawartością strony — przykład

           Pierwszy przykład aplikacji zamieszczony w niniejszej
           ksią ce będzie dotyczył zarządzania zawartością strony.
           Aplikacja będzie zarządzała zarówno adresami URL,
           jak i plikami, które u ytkownicy będą mogli dodawać,
           wyświetlać i przetwarzać. Co prawda w tym przypadku
           nie zostanie uwzględniona administracyjna część aplikacji,
           ale zostaną dołączone informacje pozwalające na jej
           wykonanie.
           Chocia w tym rozdziale skupimy się na konkretnym
           przykładzie, to jednak wspomnimy równie o kilku




                                                                        Zarządzanie zawartością strony
           nowych funkcjach i metodach. Do funkcji tych nale y
           zaliczyć O[USNAKPUGTVAKF
 i NKUV
. Wspomnimy tak e,
           w jaki sposób zrealizować operację umieszczania plików
           na serwerze.




                                                                377
Rozdział 11.


                     Tworzenie szablonu
                     W pierwszym etapie projektowania aplikacji
                     zostanie utworzony systemowy szablon,
                     którego zadaniem będzie wspomaganie procesu
                     przygotowywania strony HTML. Strona
                     w ostatecznej postaci (rysunek 11.1)
                     będzie korzystała z tabel i kilku arkuszy
                     stylów CSS (ang. Cascading Style Sheets).

                     Aby utworzyć plik naglowek.html,                     Rysunek 11.1. Domyślny wygląd strony
                                                                          aplikacji omawianej w tym rozdziale
                     należy wykonać następujące kroki:
                     1. W edytorze tekstu utworzyć nową stronę
                        HTML (listing 11.1).
                            1%6;2' JVON 27$.+% 9%6
                           å:*6/.  6TCPUKVKQPCN'0
                                    JVVRYYYYQTI64
                                    å4'%ZJVON6
                                    åZJVONVTCPUKVKQPCNFVF
Tworzenie szablonu




                           JVON ZONPU JVVRYYYYQTIZJVON
                           åZONNCPI GP NCPI GP
                           JGCF
                             OGVC JVVRGSWKX EQPVGPVV[RG EQPVGPV
                             å VGZVJVON EJCTUGVKUQ 
                           VKVNG !RJR GEJQ RCIGAVKVNG ! VKVNG

                     1. Napisać kod arkusza stylów CSS.
                           UV[NG V[RG VGZVEUU OGFKC UETGGP
                           DQF[ ] DCEMITQWPFEQNQT HHHHHH _

                           EQPVGPV ]
                             DCEMITQWPFEQNQT HHH
                             RCFFKPIVQR RZ RCFFKPITKIJV RZ
                             åRCFFKPIDQVVQO RZ RCFFKPINGHV RZ
                             åOCTIKPVQR RZ OCTIKPTKIJV RZ
                             åOCTIKPDQVVQO RZ OCTIKPNGHV RZ
                           _




                     378
Zarządzanie zawartością strony — przykład

Listing 11.1. Plik naglowek.html rozpoczyna się od kodu formatującego stronę HTML i zawiera wymagany
kod arkusza stylów CSS


       1%6;2' JVON 27$.+% 9%6 :*6/.  6TCPUKVKQPCN'0
            JVVRYYYYQTI644'%ZJVON6ZJVONVTCPUKVKQPCNFVF
      JVON ZONPU JVVRYYYYQTIZJVON ZONNCPI GP NCPI GP
      JGCF
           OGVC JVVRGSWKX EQPVGPVV[RG EQPVGPV VGZVJVON EJCTUGVKUQ 
      VKVNG !RJR GEJQ RCIGAVKVNG ! VKVNG
      UV[NG V[RG VGZVEUU OGFKC UETGGP
      DQF[ ] DCEMITQWPFEQNQT HHHHHH _
      EQPVGPV ]
       DCEMITQWPFEQNQT HHH
       RCFFKPIVQR RZ RCFFKPITKIJV RZ RCFFKPIDQVVQO RZ RCFFKPINGHV RZ
       OCTIKPVQR RZ OCTIKPTKIJV RZ OCTIKPDQVVQO RZ OCTIKPNGHV RZ
     _
     CPCXNKPMNKPM ] EQNQT  VGZVFGEQTCVKQP PQPG _
     CPCXNKPMXKUKVGF ] EQNQT  VGZVFGEQTCVKQP PQPG _
     CPCXNKPMJQXGT ] EQNQT EEEEEE VGZVFGEQTCVKQP PQPG _
     VF ]
       HQPVHCOKN[ 8GTFCPC #TKCN *GNXGVKEC UCPUUGTKH HQPVUKG RZ
       XGTVKECNCNKIP VQR




                                                                                                       Tworzenie szablonu
     _
     VKVNG ]
       HQPVUKG RZ HQPVYGKIJV PQTOCN EQNQT HHHHHH
       OCTIKPVQR RZ OCTIKPDQVVQO RZ OCTIKPNGHV RZ
       RCFFKPIVQR RZ RCFFKPIDQVVQO RZ RCFFKPINGHV RZ
     _
     UV[NG
     JGCF
     DQF[
  
     VCDNG YKFVJ  DQTFGT  EGNNURCEKPI  EGNNRCFFKPI 
       CNKIP EGPVGT
     VT
       VF EQNURCP  DIEQNQT  R ENCUU VKVNG CTæFCPKG CYCTVQ EKæ UVTQPR VF
     VT
     VT
       VF XCNKIP VQR PQYTCR PQYTCR
     D C JTGH KPFGZRJR ENCUU PCXNKPM 5VTQPC I ÎYPCC DT 
     C JTGH XKGYAWTNURJR ENCUU PCXNKPM 2TGINæFCL CFTGU[ 74.C DT 
     C JTGH CFFAWTNRJR ENCUU PCXNKPM QFCL CFTGU 74.C DT 
     C JTGH XKGYAHKNGURJR ENCUU PCXNKPM 2TGINæFCL RNKMKC DT 
     C JTGH CFFAHKNGRJR ENCUU PCXNKPM QFCL RNKMC D
       VF
  
       VF XCNKIP VQR ENCUU EQPVGPV
         .KUVKPI   PCINQYGMJVON 




                                                                                                 379
Rozdział 11.

                           CPCXNKPMNKPM ] EQNQT 
                           åVGZVFGEQTCVKQP PQPG _
                           CPCXNKPMXKUKVGF ] EQNQT 
                           åVGZVFGEQTCVKQP PQPG _
                           CPCXNKPMJQXGT ] EQNQT EEEEEE
                           åVGZVFGEQTCVKQP PQPG _
                           VF ]
                             HQPVHCOKN[ 8GTFCPC #TKCN *GNXGVKEC
                             åUCPUUGTKH HQPVUKG RZ
                             XGTVKECNCNKIP VQR
                           _
                           VKVNG ]
                             HQPVUKG RZ HQPVYGKIJV             Rysunek 11.2. Wygląd strony, na której w celu
                             åPQTOCN EQNQT HHHHHH                   wyró nienia wierszy i kolumn tabeli zastosowano
                             OCTIKPVQR RZ OCTIKPDQVVQO RZ      obwódki
                             åOCTIKPNGHV RZ
                             RCFFKPIVQR RZ RCFFKPIDQVVQO RZ
                             åRCFFKPINGHV RZ
                           _
                           UV[NG

                        W przypadku omawianej aplikacji zostanie
                        wykorzystany arkusz stylów CSS, który
Tworzenie szablonu




                        posłu y do sformatowania tekstu. Ze względu
                        na niewielką objętość kodu arkusza stylów
                        CSS, zamiast w oddzielnym pliku zostanie
                        on umieszczony bezpośrednio w sekcji *'#
                        strony HTML.
                     3. Zakończyć pisanie kodu nagłówka strony
                        HTML i utworzyć pierwszy wiersz tytułu.
                           JGCF
                           DQF[
                           VCDNG YKFVJ  DQTFGT 
                           åEGNNURCEKPI  EGNNRCFFKPI 
                           åCNKIP EGPVGT
                             VT
                               VF EQNURCP  DIEQNQT 
                               åR ENCUU VKVNG CTæFCPKG
                               åCYCTVQ EKæ UVTQPR VF
                             VT
                             VT

                        Podstawowa strona HTML będzie zawierała
                        tabelę zło oną z trzech wierszy — tytułu,
                        wiersza przechowującego odnośniki
                        i zawartość strony oraz wiersza, w którym
                        będą umieszczone informacje o prawach
                        autorskich (rysunek 11.2).




                     380
Zarządzanie zawartością strony — przykład

                                                  4. Utworzyć sekcję powiązaną z odnośnikami
                                                    i rozpocząć definiowanie komórek
                                                    przechowujących zawartość strony.
                                                      VF XCNKIP VQR PQYTCR PQYTCR
                                                      D C JTGH KPFGZRJR ENCUU
                                                      å PCXNKPM 5VTQPC I ÎYPCC DT 
                                                      C JTGH XKGYAWTNURJR
                                                      åENCUU PCXNKPM 2TGINæFCL CFTGU[
                                                      å74.C DT 
                                                      C JTGH CFFAWTNRJR ENCUU
                                                      å PCXNKPM åQFCL CFTGU 74.C DT 
                                                      C JTGH XKGYAHKNGURJR ENCUU
                                                      å PCXNKPM 2TGINæFCL RNKMKC DT 
                                                      C JTGH CFFAHKNGRJR
                                                      åENCUU PCXNKPM QFCL RNKMC D
                                                      VF
                                                      VF XCNKIP VQR ENCUU EQPVGPV
                                                        .KUVKPI   PCINQYGMJVON 

                                                  5. Zapisać plik pod nazwą naglowek.html
Rysunek 11.3. Struktura aplikacji internetowej,     i umieścić go na serwerze WWW
której katalogiem głównym jest katalog html         (w katalogu includes).




                                                                                                   Tworzenie szablonu
                                                    Na rysunku 11.3 przedstawiono strukturę
                                                    katalogów zawierających pliki aplikacji.

                                                  Wskazówka
                                                    W przykładzie zamieszczonym w następnym
                                                    przykładzie zostanie zastosowany bardziej
                                                    zło ony arkusz stylów CSS, który będzie
                                                    zapisany w oddzielnym pliku dołączonym
                                                    do pliku naglowek.html.




                                                                                             381
Rozdział 11.

                     Aby utworzyć plik stopka.html,                    Listing 11.2. Plik stopka.html zawiera pozostałe
                                                                       definicje wyglądu strony HTML
                     należy wykonać następujące kroki:
                     1. W edytorze tekstu utworzyć nową stronę
                                                                               .KUVKPI   UVQRMCJVON 
                        HTML (listing 11.2).                                   -QPKGE CYCTVQ EK UVTQP[ 
                             .KUVKPI   UVQRMCJVON                     VF
                                                                               VT
                     2. Zakończyć kod środkowego wiersza tabeli.         
                                                                               VT
                              VF
                                                                                 VF PDURVF
                            VT
                                                                                 VF CNKIP EGPVGT EQR[
                        Cała zawartość strony będzie przechowywana                 .CTT[ '7NNOCP CPF /%
                                                                                  +PUKIJVU +PEVF
                        w środkowym wierszu tabeli, którego                   VT
                        definicja zaczyna się w pliku naglowek.html.     
                        Powy szy kod kończy definicję wiersza,              VCDNG
                        po którym zostanie umieszczony trzeci               DQF[
                        i ostatni wiersz.                                   JVON

                     3. Zdefiniować ostatni wiersz i zakończyć
                        tworzenie strony HTML.
Tworzenie szablonu




                             VT
                               VF PDURVF
                               VF CNKIP EGPVGT EQR[  .CTT[ '
                               å7NNOCP CPF /% +PUKIJVU +PEVF
                             VT
                           VCDNG
                           DQF[
                           JVON

                     4. Zapisać plik pod nazwą stopka.html
                        i umieścić go na serwerze WWW
                        (w katalogu includes).




                     382
Zarządzanie zawartością strony — przykład

Listing 11.3. Główna strona aplikacji
(w razie potrzeby nale y umieścić na niej     Tworzenie zwykłych
bardziej wartościowe informacje)              stron internetowych
                                              Zanim zajmiemy się najwa niejszą częścią
    !RJR .KUVKPI   KPFGZRJR           aplikacji internetowej (samym mechanizmem
     ) ÎYPC UVTQPC UGTYGTC 999
                                              zarządzania zawartością stron) konieczne będzie
     7UVCYKGPKG V[VW W UVTQP[
     K FQ æEGPKG PCI ÎYMC *6/.              stworzenie jeszcze dwóch stron HTML. Jedna
     RCIGAVKVNG  CTæFCPKG                z nich o nazwie index.php będzie spełniała rolę
     CYCTVQ EKæ UVTQP                       głównej strony aplikacji. Z kolei druga o nazwie
   KPENWFGAQPEG                              mysql_connect.php jest skryptem, którego
     
 KPENWFGUPCINQYGMJVON               zadaniem jest połączenie z serwerem MySQL
   !
    R 5RCO URCO URCO URCO URCO URCO
                                              i wybranie wymaganej bazy danych (w celu
     URCO URCO URCO URCOR                  uzyskania dodatkowych informacji na jej temat
    R 5RCO URCO URCO URCO URCO URCO         nale y zapoznać się z zawartością ramki Schemat




                                                                                                  Tworzenie zwykłych stron internetowych
     URCO URCO URCO URCOR                  bazy danych zawartej w następnym podrozdziale).
   !RJR  Q æEGPKG UVQRMK *6/.
   KPENWFGAQPEG 
 KPENWFGUUVQRMCJVON 
   !
                                              Aby utworzyć główną stronę,
                                              należy wykonać następujące kroki:
                                              1. W edytorze tekstu utworzyć nowy skrypt PHP
                                                 (listing 11.3).
                                                   !RJR    .KUVKPI   KPFGZRJR

                                              2. Określić tytuł strony i dołączyć plik
                                                 nagłówka HTML.
                                                    RCIGAVKVNG  CTæFCPKG CYCTVQ EKæ
                                                   åUVTQP 
                                                   KPENWFGAQPEG 
 KPENWFGUPCINQYGMJVON 
                                                   !

                                              3. Wypełnić stronę tekstem.
Rysunek 11.4. Główna strona
                                                     R 5RCO URCO URCO URCO URCO URCO URCO
                                                     åURCO URCO URCOR
                                                     R 5RCO URCO URCO URCO URCO URCO URCO
                                                     åURCO URCO URCOR

                                                 Co prawda posłu yłem się tego typu treścią
                                                 (słowo URCO), ale oczywiście na stronie
                                                 głównej mo na umieścić bardziej wartościowe
                                                 informacje.
                                              4. Dołączyć stopkę HTML.
                                                   !RJR
                                                   KPENWFGAQPEG 
 KPENWFGUUVQRMCJVON 
                                                   !

                                              5. Zapisać plik pod nazwą index.php, umieścić go
                                                 na serwerze WWW i przetestować przy u yciu
                                                 przeglądarki internetowej (rysunek 11.4).


                                                                                            383
Rozdział 11.

                                         Aby utworzyć skrypt                                  Listing 11.4. Skrypt łączy z serwerem MySQL
                                                                                              i wybiera bazę danych content
                                         mysql_connect.php,
                                         należy wykonać następujące kroki:
                                                                                                  !RJR .KUVKPI  O[USNAEQPPGEVRJR
                                         1. W edytorze tekstu utworzyć nowy skrypt PHP             9 RNKMW CYCTVQ RCTCOGVT[
                                            (listing 11.4).                                        Y[OCICPG FQ W[UMCPKC FQUVúRW
                                                                                                   FQ DC[ FCP[EJ 2NKM LGUV
                                               !RJR    .KUVKPI   O[USNAEQPPGEVRJR           W [YCP[ VCM G RT[ æEGPKW UKú
                                            Skrypt jest taki sam jak jego poprzednie wersje         UGTYGTGO /[53. K Y[DKGTCPKGO
                                                                                                   DC[ FCP[EJ
                                            wykorzystane w poprzednich rozdziałach                7UVCYKGPKG LCMQ UVC [EJ
                                            (z wyjątkiem nazwy u ytkownika i jego hasła            RCTCOGVTÎY WFKGNCLæE[EJ FQUVúRW
                                            oraz konfiguracji bazy danych). Skrypt mo e            FQ DC[ FCP[EJ
                                            zostać stworzony od podstaw lub poprzez              FGHKPG 
 $A75'4  WUGTPCOG 
                                            odpowiednią modyfikację poprzedniej wersji.          FGHKPG 
 $A2#55914 
                                                                                                    RCUUYQTF 
Tworzenie zwykłych stron internetowych




                                         2. Określić konfigurację bazy danych w postaci          FGHKPG 
 $A*156  NQECNJQUV 
                                            stałych.                                             FGHKPG 
 $A0#/'  EQPVGPV 
                                                                                                  0CYKæCPKG RQ æEGPKC
                                               FGHKPG   
   $A75'4  WUGTPCOG                    UGTYGTGO K Y[DTCPKG DC[ FCP[EJ
                                               FGHKPG   
   $A2#55914  RCUUYQTF             FDE  O[USNAEQPPGEV 
$A*156
                                               FGHKPG   
   $A*156  NQECNJQUV                  $A75'4 $A2#55914 14 FKG
                                               FGHKPG   
   $A0#/'  EQPVGPV                    
 0KG D[ Q OQ NKYG RQ æEGPKG
                                                                                                    UGTYGTGO /[53.  O[USNAGTTQT
 
                                            Mając na względzie kwestię zabezpieczeń              O[USNAUGNGEVAFD 
$A0#/' 14 FKG
                                            u ytkownik łączący się z serwerem MySQL                
 0KG D[ Q OQ NKYG Y[DTCPKG DC[
                                            powinien na potrzeby omawianej aplikacji               FCP[EJ  O[USNAGTTQT
 
                                            dysponować mo liwością wykonywania tylko             !
                                            takich poleceń jak +05'46, 5'.'%6, '.'6'
                                            i dodatkowo wyłącznie dla bazy danych
                                            content.
                                         3. Połączyć się z serwerem MySQL i wybrać
                                            bazę danych.
                                                FDE  O[USNAEQPPGEV 
$A*156 $A75'4
                                               å$A2#55914 14 FKG 
 0KG D[ Q OQ NKYG
                                               åRQ æEGPKG  UGTYGTGO /[53. 
                                               åO[USNAGTTQT
 
                                               O[USNAUGNGEVAFD 
$A0#/' 14 FKG
                                               å
 0KG D[ Q OQ NKYG Y[DTCPKG DC[ FCP[EJ
                                               å åO[USNAGTTQT
 
                                                                                              Wskazówki
                                            Aplikacja dysponuje podstawowym
                                            mechanizmem obsługi błędów realizowanym                 W następnym rozdziale zostanie omówiony
                                            przez funkcję O[USNAGTTQT
. Więcej                     przykład, w którym zostaną wykorzystane
                                            informacji na ten temat zawarto w rozdziale 6.          bardziej zaawansowane metody obsługi
                                                                                                    błędów. Poza tym zamieszczono w nim
                                         4. Zakończyć skrypt PHP.                                   zmodyfikowaną wersję skryptu
                                               !                                                    mysql_connect.php.
                                         5. Zapisać plik pod nazwą mysql_connect.php                W celu uzyskania dodatkowych informacji
                                            i umieścić go na serwerze WWW poza                      na temat praw dostępu do serwera MySQL
                                            katalogiem głównym (rysunek 11.3).                      nale y zapoznać się z zawartością dodatku A.


                                         384
Zarządzanie zawartością strony — przykład


Zarządzanie adresami URL
Kolejne dwie strony HTML, które zostaną
stworzone, umo liwią u ytkownikom dodawanie
adresów URL i przeglądanie ju dołączonych.
Ta część aplikacji bazuje na trzech tabelach
bazy danych — WTNU, WTNAV[RGU i WTNAVKVNGU.
Aby uzyskać dodatkowe informacje, nale y
zapoznać się z zawartością ramki Schemat
bazy danych.

Dodawanie adresów URL
Skrypt add_url.php prawdopodobnie jest
najbardziej zło onym wśród wszystkich
wchodzących w skład aplikacji. Wynika to
z zastosowania znormalizowanej struktury
bazy danych. Formularz zawarty w skrypcie
pobiera adres URL, jego tytuł (lub nazwę), opis




                                                   Zarządzanie adresami URL
i maksymalnie trzy kategorie. Po wypełnieniu
formularza (adres URL, jego tytuł, opis) dane
zostaną umieszczone w tabeli WTNAVKVNGU.
Następnie w celu dodania do tabeli WTNU
od jednego do trzech rekordów (w zale ności
od ilości kategorii wybranych przez u ytkownika)
zostanie zastosowany klucz główny tabeli
VKVNGAKF wraz z wartościami pola V[RGAKF.
W celu określenia wartości pola VKVNGAKF dla
dodanego adresu URL zostanie wykorzystana
funkcja O[USNAKPUGTVAKF
, która do tej pory
nie była omawiana. Ka dorazowo, gdy na tabeli
zawierającej pole o automatycznie zwiększanej
wartości (zazwyczaj jest nim klucz główny)
zostanie wykonane zapytanie, wtedy dla pola
serwer MySQL u yje następnej wartości.
Funkcja O[USNAKPUGTVAKF
 zwróci tę wartość.
W przeciwnym razie nie byłoby mo liwe jej
uzyskanie.




                                            385
Rozdział 11.



                                                              Schemat bazy danych
                              W niniejszym rozdziale zastosowano bazę danych o nazwie content, którą utworzono
                              w rozdziale 5. W tamtym rozdziale zdefiniowano trzy znormalizowane tabele na potrzeby
                              obsługi adresów URL (zło ona struktura pozwala na zaklasyfikowanie adresów URL
                              do wielu typów). W tym rozdziale zostanie stworzona tabela WRNQCFU wykorzystywana
                              przy zarządzaniu plikami. Całkowita struktura bazy danych mo e zostać ponownie
                              zdefiniowana z wykorzystaniem poni szych poleceń:
                                 %4'#6' 6#$.' WRNQCFU 
WRNQCFAKF KPV 
 705+)0' 016 07.. #761A+0%4'/'06
                                 åHKNGAPCOG 8#4%*#4
 016 07.. HKNGAUKG +06
 705+)0' 016 07.. HKNGAV[RG
                                 å8#4%*#4
 016 07.. FGUETKRVKQP 8#4%*#4
 '(#7.6 07.. WRNQCFAFCVG
                                 å#6'6+/' 016 07.. 24+/#4; -'; 
WRNQCFAKF -'; HKNGAPCOG 
HKNGAPCOG
                                 %4'#6' 6#$.' WTNAVKVNGU 
VKVNGAKF 5/#..+06
 705+)0' 016 07.. #761A+0%4'/'06
                                 åWTN 8#4%*#4
 016 07.. VKVNG 8#4%*#4
 016 07.. FGUETKRVKQP 6+0;6':6 016
                                 å07.. 24+/#4; -'; 
VKVNGAKF 70+37' -'; WTN 
WTN
                                 %4'#6' 6#$.' WTNAV[RGU 
V[RGAKF 6+0;+06
 705+)0' 016 07.. #761A+0%4'/'06
                                 åV[RG 8#4%*#4
 016 07.. 24+/#4; -'; 
V[RGAKF 70+37' -'; V[RG 
V[RG
                                 %4'#6' 6#$.' WTNU 
WTNAKF 5/#..+06
 705+)0' 016 07.. #761A+0%4'/'06
                                 åVKVNGAKF 5/#..+06
 705+)0' 016 07.. V[RGAKF 6+0;+06
 705+)0' 016 07..
                                 åCRRTQXGF %*#4
 '(#7.6 0  FCVGAUWDOKVVGF 6+/'56#/2
 016 07.. 24+/#4;
Zarządzanie adresami URL




                                 å-'; 
WTNAKF -'; VKVNGAKF 
VKVNGAKF -'; V[RGAKF 
V[RGAKF -';
                                 åFCVGAUWDOKVVGF 
FCVGAUWDOKVVGF

                              W celu sprawdzenia struktury bazy danych zawsze mo na u yć poni szych poleceń języka SQL
                              (rysunek 11.5).
                                 5*19 6#$.'5
                                 '5%4+$' nazwa_tabeli




                              Rysunek 11.5. Sprawdzenie struktury bazy danych




                           386
Zarządzanie zawartością strony — przykład

Aby utworzyć skrypt add_url.php,                       Podobnie jak w poprzednich rozdziałach,
należy wykonać następujące kroki:                      funkcja GUECRGAFCVC
 gwarantuje poprawność
                                                       przesyłanych danych niezale nie od tego, czy
1. W edytorze tekstu utworzyć nowy skrypt              uaktywniono funkcję Magic Quotes, czy nie.
   PHP (listing 11.5).
                                                     3. Przeprowadzić walidację wprowadzonego
       !RJR .KUVKPI   CFFAWTNRJR                adresu URL i jego tytułu.
        RCIGAVKVNG  QFCYCPKG CFTGUÎY 74. 
       KPENWFG 
 KPENWFGUPCINQYGMJVON                   KH 
 GORV[
 A2156= WTN ? ]
       TGSWKTGAQPEG 
 O[USNAEQPPGEVRJR                   W  GUECRGAFCVC
 A2156= WTN ?
                                                            _ GNUG ]
2. Sprawdzić, czy formularz został wypełniony                W  (#.5'
   i zastosować funkcję GUECRGAFCVC
.                      GEJQ R HQPV EQNQT TGF 2TQUú RQFCè
                                                            åCFTGU 74. HQPV R  _
       KH 
KUUGV
 A2156= UWDOKV ? ]                       KH 
 GORV[
 A2156= VKVNG ? ]
       å 1DU WIC HQTOWNCTC                                 V  GUECRGAFCVC
 A2156= VKVNG ?
         HWPEVKQP GUECRGAFCVC 
 FCVC ]                     _ GNUG ]
           INQDCN FDE                                         V  (#.5'
           KH 
KPKAIGV
 OCIKEASWQVGUAIRE  ]                 GEJQ R HQPV EQNQT TGF
              FCVC  UVTKRUNCUJGU
 FCVC                     å2TQUú RQFCè PCYú CFTGUW
           _                                                  å74.VKVNG HQPV R  _
           TGVWTP O[USNATGCNAGUECRGAUVTKPI




                                                                                                      Zarządzanie adresami URL
           å
VTKO 
 FCVC FDE
         _


Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych


       !RJR .KUVKPI   CFFAWTNRJR
        5VTQPC RQYCNC W [VMQYPKMQO FQFCè CFTGU[ 74. FQ DC[ FCP[EJ
        7UVCYKGPKG V[VW W UVTQP[ K FQ æEGPKG PCI ÎYMC *6/.
        RCIGAVKVNG  QFCYCPKG CFTGUÎY 74. 
       KPENWFG 
 KPENWFGUPCINQYGMJVON 
       TGSWKTGAQPEG 
 O[USNAEQPPGEVRJR   2Q æEGPKG  DCæ FCP[EJ
       KH 
KUUGV
 A2156= UWDOKV ? ]  1DU WIC HQTOWNCTC
          (WPMELC WUWYCLæEC PCM  K QDEKPCLæEC FCPG YRTQYCFQPG Y HQTOWNCTW
         HWPEVKQP GUECRGAFCVC 
 FCVC ]
          INQDCN FDE
          KH 
KPKAIGV
 OCIKEASWQVGUAIRE  ]
             FCVC  UVTKRUNCUJGU
 FCVC
          _
          TGVWTP O[USNATGCNAGUECRGAUVTKPI 
VTKO 
 FCVC FDE
        _  -QPKGE UGMELK HWPMELK GUECRGAFCVC





                                                                                              387
Rozdział 11.

                              W tym przykładzie zostanie dokonane
                              sprawdzenie, czy wprowadzono wartości.
                              W celu zwiększenia dokładności mo na
                              oczywiście zastosować wyra enia proste
                              (tak naprawdę w rozdziale 8. zawarto skrypt
                              przeprowadzający walidację adresów URL).
                              Jeśli jakieś pole nie zostanie wypełnione,
                              pojawi się komunikat błędu widoczny
                              na rysunku 11.6.
                           4. Sprawdzić, czy w polu FGUETKRVKQP
                              podano wartość.
                                  KH 
 GORV[
 A2156= FGUETKRVKQP ? ]
                                     F  GUECRGAFCVC
                                    å
 A2156= FGUETKRVKQP ?
                                                                                 Rysunek 11.6. Jeśli u ytkownik nie poda adresu
                                  _ GNUG ]                                       URL lub jego tytułu, zostanie wyświetlony
                                     F   _                                     komunikat błędu

                              Ze względu na to, e w polu FGUETKRVKQP
                              tabeli WTNAVKVNGU nie trzeba wstawiać wartości,
Zarządzanie adresami URL




                              będzie ona przetwarzana, ale tylko wtedy,
                              gdy zostanie wprowadzona w formularzu.
                              Jeśli w polu FGUETKRVKQP nie zostanie
                              wstawiona adna wartość, zmiennej F
                              stosowanej w zapytaniu będzie przypisywany
                              pusty łańcuch.

                           Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy


                                   5RTCYFGPKG CFTGUW 74.
                                  KH 
 GORV[
 A2156= WTN ? ]
                                   W  GUECRGAFCVC
 A2156= WTN ?
                                  _ GNUG ]
                                     W  (#.5'
                                    GEJQ R HQPV EQNQT TGF 2TQUú RQFCè CFTGU 74. HQPV R  _
                                   5RTCYFGPKG PCY[ CFTGUW 74.
                                  KH 
 GORV[
 A2156= VKVNG ? ]
                                     V  GUECRGAFCVC
 A2156= VKVNG ?
                                  _ GNUG ]
                                     V  (#.5'
                                    GEJQ R HQPV EQNQT TGF 2TQUú RQFCè PCYú CFTGUW 74.VKVNG HQPV R  _
                                   5RTCYFGPKG YCTVQ EK RQNC FGUETKRVKQP 
PKG LGUV Y[OCICPG
                                  KH 
 GORV[
 A2156= FGUETKRVKQP ? ]
                                     F  GUECRGAFCVC
 A2156= FGUETKRVKQP ?
                                  _ GNUG ]
                                     F   _




                           388
Zarządzanie zawartością strony — przykład

                                                     5. Sprawdzić wybraną kategorię.
                                                            KH 

 A2156= V[RG ?  14
                                                            å
 A2156= V[RG ?  14
                                                            å
 A2156= V[RG ?  ]
                                                               V[RG  647'
                                                            _ GNUG ]
                                                               V[RG  (#.5'
                                                              GEJQ R HQPV EQNQT TGF
                                                              å2TQUú RQFCè EQ PCLOPKGL LGFPæ
                                                              åMCVGIQTKú HQPV R  _

                                                        U ytkownik, mając do dyspozycji zbiór
                                                        typów zawartych w tabeli WTNAV[RGU, mo e
                                                        przypisać wprowadzanemu adresowi URL
                                                        maksymalnie trzy kategorie. Zakłada się,
Rysunek 11.7. U ytkownik musi wybrać co najmniej         e u ytkownik wybierze kategorię przy
jedną kategorię dla wprowadzonego adresu URL            u yciu pierwszego menu rozwijanego
                                                        (V[RG). Niezale nie od tego instrukcja
                                                        warunkowa sprawdzi, czy skorzystano
                                                        z przynajmniej jednego menu rozwijanego.




                                                                                                      Zarządzanie adresami URL
                                                        Jeśli tak nie będzie, zostanie wyświetlony
                                                        komunikat błędu (rysunek 11.7).

Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy


        5RTCYFGPKG MCVGIQTKK
       KH 

 A2156= V[RG ?  14 
 A2156= V[RG ?  14 
 A2156= V[RG ?  ]
          V[RG  647'
       _ GNUG ]
          V[RG  (#.5'
         GEJQ R HQPV EQNQT TGF 2TQUú RQFCè EQ PCLOPKGL LGFPæ MCVGIQTKú HQPV R  _
       KH 
 W     V     V[RG ]  ,G NK YU[UVMQ LGUV Y RQTæFMW
          QFCYCPKG CFTGUW 74. FQ VCDGNK WTNAVKVNGU
          SWGT[  +05'46 +061 WTNAVKVNGU 
WTN VKVNG FGUETKRVKQP 8#.7'5
           
 W  V  F  
          TGUWNV  O[USNASWGT[ 
 SWGT[  9[MQPCPKG CR[VCPKC
          VKF  O[USNAKPUGTVAKF
  2QDTCPKG KFGPV[HKMCVQTC V[VW W
  
         KH 
 VKF  ]  ,G NK QUVC Q Y[MQPCPG RTCYKF QYQ
            6YQTGPKG CR[VCPKC
            SWGT[  +05'46 +061 WTNU 
VKVNGAKF V[RGAKF CRRTQXGF FCVGAUWDOKVVGF 8#.7'5     
           KH 
 A2156= V[RG ?  ]
              SWGT[  
 VKF ] A2156= V[RG ?_ ;  019
  _




                                                                                                389
Rozdział 11.

                           6. Dodać adres URL do tabeli WTNAVKVNGU.               7. Utworzyć główne zapytanie.
                                  KH 
 W     V     V[RG ]                                 KH 
 VKF    ]
                                     QFCYCPKG CFTGUW 74. FQ VCDGNK
                                    åWTNAVKVNGU                                               SWGT[  +05'46 +061 WTNU
                                     SWGT[  +05'46 +061 WTNAVKVNGU 
WTN                    å
VKVNGAKF V[RGAKF CRRTQXGF
                                    åVKVNG FGUETKRVKQP 8#.7'5 
 W                         åFCVGAUWDOKVVGF 8#.7'5 
                                    å V  F                                                KH 
 A2156= V[RG ?  ]
                                     TGUWNV  O[USNASWGT[ 
 SWGT[                             SWGT[  
 VKF
                                     VKF  O[USNAKPUGTVAKF
                                  å] A2156= V[RG ?_ ; 
                                                                                                å019
 
                              Ze względu na strukturę bazy danych, adres                     _
                              URL musi zostać dodany do tabeli WTNAVKVNGU                    KH 
 A2156= V[RG ?  ]
                              zanim będzie mo liwa modyfikacja tabeli                            SWGT[  
 VKF ] A2156
                              WTNU. Powy sze zapytanie doda adres URL,                          å= V[RG ?_ ;  019
 
                                                                                             _
                              a następnie przy u yciu funkcji O[USN
                                                                                             KH 
 A2156= V[RG ?  ]
                              AKPUGTVAKF
 zwróci wartość pola VKVNGAKF                          SWGT[  
 VKF
                              (klucz główny tabeli o automatycznie                              å] A2156= V[RG ?_ ; 
                              zwiększanej wartości). Uzyskana wartość                           å019
 
                              mo e następnie zostać wykorzystana                             _
                                                                                               SWGT[  UWDUVT 
 SWGT[  
Zarządzanie adresami URL




                              w drugim zapytaniu (krok 7.).

                           Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy


                                        KH 
 A2156= V[RG ?  ]
                                            SWGT[  
 VKF ] A2156= V[RG ?_ ;  019
              _
                                        KH 
 A2156= V[RG ?  ]
                                            SWGT[  
 VKF ] A2156= V[RG ?_ ;  019
 
                                        _
                                          SWGT[  UWDUVT 
 SWGT[    7UWPKúEKG QUVCVPKGIQ RTGEKPMC K URCELK
                                         9[MQPCPKG CR[VCPKC
                                          TGUWNV  O[USNASWGT[ 
 SWGT[
                                        KH 
 TGUWNV ]
                                           GEJQ R D KúMWLGO[ C RTGU CPKG FCP[EJ D R 
                                            A2156  CTTC[

                                        _ GNUG ]  ,G NK Y[UVæRKæ RTQDNGO[
                                           GEJQ R HQPV EQNQT TGF 0C UMWVGM D úFW U[UVGOQYGIQ Y[U CPG CR[VCPKG PKG OQI Q
                                             QUVCè RTGVYQTQPG 2TGRTCUCO[ C CKUVPKC æ PKGFQIQFPQ èHQPV R 
                                        _
                                      _ GNUG ]  ,G NK Y[UVæRKæ RTQDNGO[
                                   GEJQ R HQPV EQNQT TGF 0C UMWVGM D úFW U[UVGOQYGIQ Y[U CPG CR[VCPKG
                                     PKG OQI Q QUVCè RTGVYQTQPG 2TGRTCUCO[ C CKUVPKC æ PKGFQIQFPQ èHQPV R 
                                   _




                           390
Zarządzanie zawartością strony — przykład

   Jeśli zostanie pobrana wartość zmiennej VKF,       8. Wykonać zapytanie, wprowadzić komunikaty
   bez obaw mo na przejść do wykonywania                 informujące o jego wyniku i uzupełnić
   głównego zapytania (dodanie rekordu do                instrukcje warunkowe.
   tabeli WTNU). Aby tak postąpić, na początku                    TGUWNV  O[USNASWGT[ 
 SWGT[
   nale y zdefiniować zapytanie i przypisać                      KH 
 TGUWNV ]
   jego początkową część zmiennej SWGT[.                           GEJQ R D KúMWLGO[ C
   Po sprawdzeniu, czy wybrano kategorie                           åRTGU CPKG FCP[EJ D R 
   (przy u yciu menu rozwijanych), dla ka dej                    _ GNUG ]  ,G NK Y[UVæRKæ RTQDNGO[
                                                                   GEJQ R HQPV EQNQT TGF
   z nich dodano rekord przy u yciu zapytania.
                                                                   å0C UMWVGM D úFW U[UVGOQYGIQ
   Na końcu w celu usunięcia z zapytania                           åY[U CPG CR[VCPKG PKG OQI Q
   ostatnich dwóch znaków (przecinek i znak                        åQUVCè RTGVYQTQPG
   spacji) zostanie u yta funkcja UWDUVT
.                        å2TGRTCUCO[ C CKUVPKC æ
   Jeśli wystąpią problemy ze składnią zapytania                   åPKGFQIQFPQ èHQPV R 
   nale y nakazać interpreterowi języka PHP                      _
   wyświetlenie wartości zmiennej SWGT[,                 Powy sze instrukcje warunkowe
   dzięki czemu mo na stwierdzić, co będzie              wyświetlą odpowiednie komunikaty
   przetwarzane przez serwer MySQL.                      związane z przesyłanymi danymi.




                                                                                                        Zarządzanie adresami URL
Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy


        _ GNUG ]  ,G NK LGFPC  QRGTCELK URTCYFGPKC FCP[EJ UKú PKG RQYKGFKG
          GEJQ R HQPV EQNQT TGF 2TQUú URTÎDQYCè RQPQYPKGHQPV R 
        _
     _  -QPKGE KPUVTWMELK YCTWPMQYGL QDU WIWLæEGL FCPG YRTQYCFCPG Y HQTOWNCTW
       (QTOWNCT Y[ YKGVNCLæE[ FCPG
      6YQTGPKG OGPW TQYKLCPGIQ
      SWGT[  5'.'%6
(41/ WTNAV[RGU 14'4 $; V[RG #5% 
      TGUWNV  O[USNASWGT[ 
 SWGT[
       RWNNFQYP  QRVKQP 9[DKGT LGFPæ RQ[ELúQRVKQP 
     YJKNG 
 TQY  O[USNAHGVEJACTTC[ 
 TGUWNV /;53.A#551% ]
         RWNNFQYP  QRVKQP XCNWG ] TQY= V[RGAKF ?_ ] TQY= V[RG ?_QRVKQP P 
     _
     !
     HQTO CEVKQP !RJR GEJQ A5'48'4= 2*2A5'.( ? ! OGVJQF RQUV
     HKGNFUGV NGIGPF 9 EGNW RTGU CPKC CFTGUW 74. PCNG [ Y[RG PKè HQTOWNCT
       
OQ PC Y[DTCè OCMU[OCNPKG  MCVGIQTKGNGIGPF
     R D #FTGU 74.D KPRWV V[RG VGZV PCOG WTN UKG  OCZNGPIVJ 
       XCNWG !RJR KH 
KUUGV
 A2156= WTN ? GEJQ A2156= WTN ? !  DT
         UOCNN 0KG FQ æECL KFGPV[HKMCVQTC K JVVRK UOCNN R
      _ GNUG ]
       GEJQ R HQPV EQNQT TGF 0C UMWVGM D úFW U[UVGOQYGIQ Y[U CPG CR[VCPKG
         PKG OQI Q QUVCè RTGVYQTQPG 2TGRTCUCO[ C CKUVPKC æ PKGFQIQFPQ èHQPV R 
      _

      _ GNUG ]
      GEJQ R HQPV EQNQT TGF 2TQUú URTÎDQYCè RQPQYPKGHQPV R 
      _
      _




                                                                                                 391
Rozdział 11.

                           9. Utworzyć stronę HTML, na której zostaną
                              umieszczone menu rozwijane umo liwiające
                              wybranie typu adresów URL.
                                    SWGT[  5'.'%6
(41/ WTNAV[RGU 14'4 $;
                                   åV[RG #5% 
                                    TGUWNV  O[USNASWGT[ 
 SWGT[
                                    RWNNFQYP  QRVKQP 9[DKGT LGFPæ
                                   åRQ[ELúQRVKQP
                                    
                                   YJKNG 
 TQY  O[USNAHGVEJACTTC[ 
 TGUWNV
                                   å/;53.A#551% ]
                                      RWNNFQYP  QRVKQP
                                     åXCNWG ] TQY= V[RGAKF ?_ ] TQY
                                     å= V[RG ?_QRVKQP P 
                                   _


                           Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy
Zarządzanie adresami URL




                                  R D 0CYCV[VW CFTGUW 74.D KPRWV V[RG VGZV PCOG VKVNG UKG 
                                    OCZNGPIVJ  XCNWG !RJR KH 
KUUGV
 A2156= VKVNG ? GEJQ A2156= VKVNG ? !         R
                             
                                  R D 1RKUD VGZVCTGC PCOG FGUETKRVKQP EQNU  TQYU  !RJR KH
                                    
KUUGV
 A2156= FGUETKRVKQP ? GEJQ A2156= FGUETKRVKQP ? ! VGZVCTGC R
                             
                                  R D -CVGIQTKC D UGNGEV PCOG V[RG
                                  !RJR GEJQ RWNNFQYP !
                                  UGNGEV R
                             
                                  R D -CVGIQTKC D UGNGEV PCOG V[RG
                                  !RJR GEJQ RWNNFQYP !
                                 UGNGEV R
                             
                                 R D -CVGIQTKC D UGNGEV PCOG V[RG
                                 !RJR GEJQ RWNNFQYP !
                                 UGNGEV R
                             
                                 HKGNFUGV
                             
                                 FKX CNKIP EGPVGT KPRWV V[RG UWDOKV PCOG UWDOKV XCNWG 9[ NKL  FKX
                             
                                 HQTO   -QPKGE HQTOWNCTC
                                 !RJR
                                 O[USNAENQUG
  COMPKúEKG RQ æEGPKC  DCæ FCP[EJ
                                 KPENWFG 
 KPENWFGUUVQRMCJVON   Q æEGPKG UVQRMK *6/.
                                 !




                           392
Zarządzanie zawartością strony — przykład

                                            Formularz będzie zawierał trzy menu rozwijane,
                                            z których ka de będzie dysponowało listą
                                            dostępnych typów adresów URL pobranych
                                            z bazy danych. Ze względu na to, e zale y
                                            mi na wyświetleniu trzech kopii tego typu
                                            informacji, bardziej efektywnym będzie
                                            przypisanie wyników zmiennej ni wielokrotne
                                            wysyłanie zapytania do bazy danych.
                                            Na rysunku 11.8 pokazano kod źródłowy
                                            strony zawierającej menu rozwijane.
                                         10. Utworzyć formularz na stronie HTML.
                                              HQTO CEVKQP !RJR GEJQ
                                               A5'48'4= 2*2A5'.( ? ! OGVJQF RQUV
                                              HKGNFUGV NGIGPF 9 EGNW RTGU CPKC CFTGUW
                                              å74. PCNG [ Y[RG PKè HQTOWNCT 
OQ PC
                                              åY[DTCè OCMU[OCNPKG  MCVGIQTKGNGIGPF

                                              R D #FTGU 74.D KPRWV V[RG VGZV
                                              åPCOG WTN UKG  OCZNGPIVJ 




                                                                                              Zarządzanie adresami URL
                                              åXCNWG !RJR KH 
KUUGV
 A2156= WTN ?
Rysunek 11.8. Kod źródłowy strony HTML        åGEJQ A2156= WTN ? !  DT
dynamicznie generujący menu rozwijane         å UOCNN å0KG FQ æECL KFGPV[HKMCVQTC
                                              åK JVVRK UOCNN R

                                              R D 0CYCV[VW CFTGUW 74.D KPRWV
                                              åV[RG VGZV PCOG VKVNG UKG 
                                              åOCZNGPIVJ  XCNWG !RJR KH
                                              å
KUUGV
 A2156= VKVNG ? GEJQ
                                              å A2156= VKVNG ? !  R

                                              R D 1RKUD VGZVCTGC PCOG FGUETKRVKQP
                                              åEQNU  TQYU  !RJR KH
                                              å
KUUGV
 A2156= FGUETKRVKQP ? GEJQ
                                              å A2156= FGUETKRVKQP ? ! VGZVCTGC R

                                              R D -CVGIQTKC D UGNGEV PCOG V[RG
                                              !RJR GEJQ RWNNFQYP !
                                              UGNGEV R
                                              R D -CVGIQTKC D UGNGEV PCOG V[RG
                                              !RJR GEJQ RWNNFQYP !
                                              UGNGEV R
                                              R D -CVGIQTKC D UGNGEV PCOG V[RG
                                              !RJR GEJQ RWNNFQYP !
                                              UGNGEV R
                                              HKGNFUGV
                                              FKX CNKIP EGPVGT KPRWV V[RG UWDOKV
                                              åPCOG UWDOKV XCNWG 9[ NKL  FKX
                                              HQTO




                                                                                        393
Rozdział 11.

                              Formularz (rysunek 11.9) pozwala wprowadzić
                              do pól tekstowych kilka wartości i zapamiętać je.
                           11. Zakończyć skrypt PHP.
                                 !RJR
                                 O[USNAENQUG

                                 KPENWFG 
 KPENWFGUUVQRMCJVON 
                                 !

                           12. Zapisać plik pod nazwą add_url.php, umieścić
                              go na serwerze WWW i przetestować przy u yciu
                              przeglądarki internetowej (rysunek 11.10).




                                                                                  Rysunek 11.9. Formularz słu ący do dodawania
                                                                                  adresów URL
Zarządzanie adresami URL




                                                                                  Rysunek 11.10. Po przesłaniu wprowadzonych
                                                                                  danych zostanie wyświetlony komunikat
                                                                                  i formularz będzie widoczny ponownie
                                                                                  (z poprzednio wstawionymi wartościami)




                           394
Zarządzanie zawartością strony — przykład

Wskazówki                                        W zastosowanym przykładzie mo na było
                                                 te stworzyć kontrolki, które posłu yłyby
  W celu zablokowania mo liwości                 do wybierania maksymalnie trzech kategorii.
  stosowania znaczników języka HTML
  we wprowadzanych wartościach nale y            Po uaktywnieniu funkcji Magic Quotes,
  posłu yć się funkcją UVTKRAVCIU
.             wartości wprowadzone do formularza przed
  Funkcja ta usuwa wszystkie znaczniki           przesłaniem do przeglądarki muszą zostać
  nie tylko języka HTML, ale te PHP.             przetworzone przez funkcję UVTKRUNCUJGU
.
  Aby wyświetlić znaczniki języka HTML           W przytoczonym przykładzie po poprawnym
  (w postaci, w jakiej występują w kodzie        przesłaniu wstawionych wartości formularz
  źródłowym) bez ich uaktywniania nale y         zostanie ponownie wyświetlony wraz
  skorzystać z funkcji JVONURGEKCNEJCTU
        z poprzednio wprowadzonymi danymi.
  i JVONGPVKVKGU
.                              Aby to zmienić, nale y zrezygnować
                                                 z wyświetlania formularza lub wyczyścić
  Funkcja O[USNAKPUGTVAKF
 jest powiązana       zawartość zmiennej tablicowej A2156
  z ka dą pojedynczą sesją (interakcja z bazą    po udanym wykonaniu zapytania na bazie
  danych). Z tego te powodu nie nale y           danych.
  się przejmować tym, e zwrócono
  nieprawidłową wartość nawet wtedy,             Funkcja języka PHP o nazwie O[USNAKPUGTV





                                                                                                Zarządzanie adresami URL
  gdy skrypt jednocześnie został wykonany        jest odpowiednikiem funkcji .#56A+05'46A+

  przez kilku ró nych u ytkowników.              oferowanej przez serwer MySQL.
  W przypadku korzystania ze skryptów
  PHP i stron HTML mo na stosować
  rozwiązanie zapamiętujące, jakie pozycje
  zostały wybrane z menu rozwijanego,
  ale jest to związane z większą ilością kodu
  źródłowego, a ponadto w przytoczonym
  przykładzie niezbyt dobrze współpracuje
  ze zmienną RWNNFQYP.




                                                                                         395
Rozdział 11.

                           Przeglądanie wysłanych adresów URL
                           Skrypt umo liwiający przeglądanie adresów URL
                           będzie się składał z dwóch części — górnej
                           i dolnej. W pierwszej z nich zostanie wyświetlone
                           menu rozwijane z dostępnymi typami adresów,
                           natomiast w drugiej wszystkie odnośniki dla
                           wybranego typu. Gdy u ytkownik wyświetli
                           stronę po raz pierwszy, wtedy nie zostanie
                           wyświetlony aden adres URL. Po wybraniu
                           przez niego typu i przesłaniu danych
                           wprowadzonych do formularza, strona zostanie
                           wyświetlona ponownie wraz z listą adresów
                           URL dla wybranego typu (niezale nie
                           od tego menu rozwijane w dalszym ciągu
                           będzie widoczne).
Zarządzanie adresami URL




                                                              Nowe funkcje i metody
                              Skrypt view_urls.php wprowadza dwa nowe rozwiązania. Jednym z nich jest rzutowanie,
                              czyli narzucanie zmiennej konkretnego typu (całkowitoliczbowy, łańcuchowy itp.).
                              Aby zrzutować zmienną, nale y przed jej nazwą w nawiasach określić ostateczny jej typ.
                              Oto przykład:
                                 XCT    V[R C EWEJQY[
                                 XCT  
KPV XCT V[R EC MQYKVQNKEDQY[
                              Do dostępnych typów zmiennych (w niektórych przypadkach wiele określeń dotyczy tego
                              samego typu) nale y zaliczyć takie typy jak KPV i KPVGIGT, DQQN i DQQNGCP, HNQCV, FQWDNG,
                              TGCN, UVTKPI, CTTC[ i QDLGEV. Interpreter języka PHP w oparciu o początkową wartość
                              rzutowanej zmiennej zmieni jej typ i przypisze jej odpowiadającą mu wartość logiczną
                              (w celu uzyskania szczegółowych informacji z tym związanych nale y zajrzeć do
                              dokumentacji języka PHP). Przy u yciu funkcji KPVXCN
 mo na te zmienić typ zmiennej
                              na typ całkowitoliczbowy (co zostanie pokazane w kolejnym skrypcie). Z kolei poprzez
                              umieszczenie wartości w znakach cudzysłowu mo na zamienić typ zmiennej na łańcuchowy.
                              Drugim nowym rozwiązaniem zastosowanym w skrypcie jest funkcja NKUV
. Funkcja
                              pobiera wartości zmiennej tablicowej i przypisuje je oddzielnym zmiennym. Oto przykład:
                                  XCT  CTTC[ 
 ,CP  0QYCM 
                                 NKUV 
 HKTUV NCUV  XCT
                              Powy szym zmiennym HKTUV i NCUV zostaną przypisane odpowiednio wartości Jan i Nowak.
                              Podobna funkcjonalność mo e być równie uzyskana przy u yciu funkcji GZVTCEV
 podobnej
                              do funkcji NKUV
.




                           396
Zarządzanie zawartością strony — przykład

                                                    Aby utworzyć skrypt view_urls.php,
                                                    należy wykonać poniższe kroki:
                                                     1. W edytorze tekstu utworzyć nowy skrypt PHP
                                                        (listing 11.6).
                                                          !RJR .KUVKPI   XKGYAWTNURJR
                                                           RCIGAVKVNG  2TGINæFCPKG CFTGUÎY 74. 
                                                          KPENWFGAQPEG 
 KPENWFGUPCINQYGMJVON 
                                                          TGSWKTGAQPEG 
 O[USNAEQPPGEVRJR 
Rysunek 11.11. Menu rozwijane                        2. Rozpocząć definiowanie formularza
                                                        zawartego na stronie HTML.
                                                          GEJQ FKX CNKIP EGPVGT
                                                          HQTO OGVJQF IGV CEVKQP XKGYAWTNURJR
                                                          UGNGEV PCOG V[RG
                                                          QRVKQP XCNWG 07.. 9[DKGT
                                                          åMCVGIQTKúQRVKQP
                                                           

                                                        Po pierwszym wyświetleniu strony HTML




                                                                                                       Zarządzanie adresami URL
                                                        będzie na niej widoczny formularz składający
                                                        się z menu rozwijanego i przycisku Wyślij
                                                        (rysunek 11.11). W tym miejscu zawarto
                                                        początek definicji formularza umieszczonego
                                                        na stronie HTML.

Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL,
jak i z adresami dla konkretnej kategorii


      !RJR .KUVKPI   XKGYAWTNURJR
       5VTQPC RQYCNC Y[ YKGVNKè CFTGU[ 74. CRKUCPG Y DCKG FCP[EJ
       7UVCYKGPKG V[VW W UVTQP[ K FQ æEGPKG PCI ÎYMC *6/.
       RCIGAVKVNG  2TGINæFCPKG CFTGUÎY 74. 
      KPENWFGAQPEG 
 KPENWFGUPCINQYGMJVON 
      TGSWKTGAQPEG 
 O[USNAEQPPGEVRJR   2Q æEGPKG  DCæ FCP[EJ
       6YQTGPKG HQTOWNCTC RQYCNCLæEGIQ W [VMQYPKMQYK Y[DTCPKG CFTGUW 74.
       MVÎT[ QUVCPKG Y[ YKGVNQP[
      GEJQ FKX CNKIP EGPVGT
      HQTO OGVJQF IGV CEVKQP XKGYAWTNURJR
     UGNGEV PCOG V[RG
     QRVKQP XCNWG 07.. 9[DKGT MCVGIQTKúQRVKQP
      




                                                                                                 397
Rozdział 11.

                           3. Pobrać wszystkie dostępne typy adresów URL
                              i dołączyć je do menu rozwijanego.
                                   SWGT[  5'.'%6
(41/ WTNAV[RGU
                                  å14'4 $; V[RG #5% 
                                   TGUWNV  O[USNASWGT[ 
 SWGT[
                                  YJKNG 
 TQY  O[USNAHGVEJACTTC[
                                  å
 TGUWNV /;53.A07/ ]
                                    GEJQ QRVKQP XCNWG  TQY=?        
                                    åUVTKRUNCUJGU
 TQY=? QRVKQP
                                   
                                  _                                              Rysunek 11.12. Dynamicznie wygenerowany kod
                                                                                 źródłowy formularza zawartego na stronie HTML
                              Powy szy kod pobiera z tabeli WTNAV[RGU
                              ka dy typ adresu URL i na podstawie
                              zwróconych rekordów generuje kod źródłowy
                              menu rozwijanego umieszczonego na stronie
                              HTML (rysunek 11.12).

                           Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL,
Zarządzanie adresami URL




                           jak i z adresami dla konkretnej kategorii — ciąg dalszy


                                  2QDTCPKG K Y[ YKGVNGPKG FQUVúRP[EJ V[RÎY
                                  SWGT[  5'.'%6
(41/ WTNAV[RGU 14'4 $; V[RG #5% 
                                  TGUWNV  O[USNASWGT[ 
 SWGT[
                                 YJKNG 
 TQY  O[USNAHGVEJACTTC[ 
 TGUWNV /;53.A07/ ]
                                    GEJQ QRVKQP XCNWG  TQY=?        UVTKRUNCUJGU
 TQY=? QRVKQP
                                  
                                 _
                             
                                  CMQ EGPKG HQTOWNCTC
                                 GEJQ UGNGEV
                                 KPRWV V[RG UWDOKV PCOG UWDOKV XCNWG 9[ NKL
                                 HQTO
                                 FKX
                                  
                             
                                  2QDTCPKG CFTGUÎY 74. QMTG NQPGIQ V[RW 
LG NK IQ RQFCPQ
                                 KH 
KUUGV
 A)'6= V[RG ? ]
                             
                                    V  KPVXCN
 A)'6= V[RG ?  5RTCYFGPKG E[ V[R LGUV EC MQYKVQNKEDQY[
                             
                                    2QDTCPKG PCY[ CMVWCNPKG Y[DTCPGIQ V[RW
                                    SWGT[  5'.'%6 V[RG (41/ WTNAV[RGU 9*'4' V[RGAKF V 
                                    TGUWNV  O[USNASWGT[ 
 SWGT[
                                   NKUV 
 V[RG  O[USNAHGVEJACTTC[ 
 TGUWNV /;53.A07/
                             
                                   GEJQ JT  FKX CNKIP EGPVGT D V[RG QFPQ PKMÎYD DT 
                                 UOCNN 
9U[UVMKG QFPQ PKMK DúFæ MQT[UVC [  Y CUPGIQ QMPC 0CLRKGTY
                                   QUVCPæ Y[ YKGVNQPG QUVCVPKQ FQFCPG QFPQ PKMKUOCNN FKX P 




                           398
Zarządzanie zawartością strony — przykład

4. Zakończyć definicję formularza                       Jeśli typ został ju wybrany (w takim
   umieszczonego na stronie HTML.                       przypadku zostanie dołączony do adresu
       GEJQ UGNGEV
                                                        URL i udostępniony przy u yciu zmiennej
       KPRWV V[RG UWDOKV PCOG UWDOKV                 tablicowej A)'6), powiązane z nim adresy
       åXCNWG 9[ NKL                                   URL powinny być pobrane.
       HQTO
       FKX                                            Pierwsza operacja będzie polegała
                                                       na zastosowaniu funkcji KPVXCN
 w celu
                                                        sprawdzenia, czy wybrany typ, który zostanie
5. Sprawdzić, czy został wybrany typ adresu             zastosowany w zapytaniu jest typem
   URL i czy pobrano informacje na jego temat.          całkowitoliczbowym. W dalszej kolejności
       KH 
KUUGV
 A)'6= V[RG ? ]                      przy u yciu funkcji NKUV
 zostanie pobrana
                                                        nazwa typu i wyświetlona na stronie w roli
          V  KPVXCN
 A)'6= V[RG ?                    nagłówka. Więcej informacji na temat funkcji
                                                        KPVXCN
 i NKUV
 mo na znaleźć w ramce
         SWGT[  5'.'%6 V[RG (41/ WTNAV[RGU
        å9*'4' V[RGAKF V                              Nowe funkcje i metody lub w dokumentacji
         TGUWNV  O[USNASWGT[ 
 SWGT[                 języka PHP.
        NKUV 
 V[RG  O[USNAHGVEJACTTC[
        å
 TGUWNV /;53.A07/                       6. Zainicjalizować zmienną HKTUV i wysłać




                                                                                                       Zarządzanie adresami URL
                                                        zapytanie do bazy danych.
         GEJQ JT  FKX
                                                           HKTUV  647'
         åCNKIP EGPVGT D V[RG
                                                           SWGT[  5'.'%6 WTN VKVNG FGUETKRVKQP
         åQFPQ PKMÎYD DT 
                                                          å(41/ WTNU #5 W WTNAVKVNGU #5 WV 9*'4'
       UOCNN 
9U[UVMKG QFPQ PKMK DúFæ
                                                          åWVVKVNGAKF  WVKVNGAKF #0 WV[RGAKF V
       åMQT[UVC [  Y CUPGIQ QMPC 0CLRKGTY
                                                          å#0 WCRRTQXGF  ; 14'4 $;
       åQUVCPæ Y[ YKGVNQPG QUVCVPKQ FQFCPG
                                                          åFCVGAUWDOKVVGF FGUE 
       åQFPQ PKMKUOCNN FKX P 
                                                           TGUWNV  O[USNASWGT[ 
 SWGT[


Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL,
jak i z adresami dla konkretnej kategorii — ciąg dalszy


         HKTUV  647'  +PKELCNKCELC OKGPPGL
         9[MQPCPKG CR[VCPKC PC DCKG FCP[EJ
         SWGT[  5'.'%6 WTN VKVNG FGUETKRVKQP (41/ WTNU #5 W WTNAVKVNGU #5 WV
          9*'4' WVVKVNGAKF  WVKVNGAKF #0 WV[RGAKF V #0 WCRRTQXGF  ;
          14'4 $; FCVGAUWDOKVVGF FGUE 
         TGUWNV  O[USNASWGT[ 
 SWGT[
         9[ YKGVNGPKG YU[UVMKEJ CFTGUÎY 74.
        YJKNG 
 TQY  O[USNAHGVEJACTTC[ 
 TGUWNV /;53.A#551% ]
           ,G NK LGUV VQ RKGTYU[ TGMQTF YVGF[ QUVCPKG WVYQTQPC VCDGNC JGCFGT
        KH 
 HKTUV ]
          GEJQ VCDNG DQTFGT  YKFVJ  EGNNURCEKPI  EGNNRCFFKPI  CNKIP EGPVGT
        VT
          VF CNKIP TKIJV YKFVJ  HQPV UKG 
 1FPQ PKMHQPV VF
          VF CNKIP NGHV YKFVJ  HQPV UKG 
 1RKUHQPV VF
        VT 
          _  -QPKGE RúVNK YCTWPMQYGL G OKGPPæ HKTUV




                                                                                                399
Rozdział 11.

                              Zmienna HKTUV zostanie wykorzystana                      _
                              na dwa sposoby. Pierwszy z nich będzie                   GEJQ      VT
                                                                                               VF CNKIP TKIJV C
                              polegał na tym, e zmienna wska e, e przed                        åJTGH JVVR] TQY= WTN ?_
                              wyświetleniem pierwszego rekordu na stronie                      åVCTIGV APGY     UVTKRUNCUJGU
                              HTML powinna zostać utworzona tabela.                            å
 TQY= VKVNG ?  C VF
                              W drugim przypadku zmienna posłu y                               VF CNKIP NGHV ] TQY
                              do sprawdzenia, czy w wyniku wykonanego                          å= FGUETKRVKQP ?_VF
                              zapytania zostały zwrócone jakiekolwiek                        VT P 
                              adresy URL.                                                     HKTUV  (#.5'
                           7. Wyświetlić wszystkie zwrócone rekordy.
                                                                                         _
                                   YJKNG 
 TQY  O[USNAHGVEJACTTC[
                                   å
 TGUWNV /;53.A#551% ]                        Pętla YJKNG zwróci wszystkie rekordy
                                                                                     pobrane w wyniku wykonanego zapytania.
                                     KH 
 HKTUV ]                                   Przed wyświetleniem pierwszego rekordu
                                       GEJQ VCDNG DQTFGT  YKFVJ               do przeglądarki internetowej zostanie
                                       åEGNNURCEKPI  EGNNRCFFKPI 
                                                                                     wysłana tabela i jej nagłówek
                                       åCNKIP EGPVGT
                                   VT                                               (rysunek11.13).
                                     VF CNKIP TKIJV YKFVJ  HQPV
Zarządzanie adresami URL




                                     åUKG 
 1FPQ PKMHQPV VF
                                     VF CNKIP NGHV YKFVJ  HQPV
                                     åUKG 
 1RKUHQPV VF
                                   VT 


                           Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL,
                           jak i z adresami dla konkretnej kategorii — ciąg dalszy


                                      9[ YKGVNC YU[UVMKG TGMQTF[
                                     GEJQ    VT
                                       VF CNKIP TKIJV C JTGH JVVR] TQY= WTN ?_ VCTIGV APGY        
                                       UVTKRUNCUJGU
 TQY= VKVNG ?  C VF
                                       VF CNKIP NGHV ] TQY= FGUETKRVKQP ?_VF
                                     VT P 
                                      HKTUV  (#.5'  YTÎEQPQ LGFGP TGMQTF
                                  _  -QPKGE RúVNK YJKNG
                                   ,G NK PKG Y[ YKGVNQPQ CFPGIQ TGMQTFW
                                  KH 
 HKTUV ]
                                    GEJQ FKX CNKIP EGPVGT #MVWCNPKG FNC Y[DTCPGL MCVGIQTKK PKG KUVPKGLG
                                       CFGP QFPQ PKMFKX 
                                  _ GNUG ]
                                    GEJQ VCDNG   COMPKúEKG VCDGNK
                                  _
                                _  -QPKGE KPVUVTWMELK YCTWPMQYGL A)'6= V[RG ?
                                O[USNAENQUG
  COMPKúEKG RQ æEGPKC  DCæ FCP[EJ
                                KPENWFGAQPEG 
 KPENWFGUUVQRMCJVON   Q æEGPKG UVQRMK *6/.
                                !




                           400
Zarządzanie zawartością strony — przykład

                                              8. Wyświetlić komunikat, jeśli nie został
                                                 zwrócony aden adres URL i zakończyć
                                                 kod głównej instrukcji warunkowej.
                                                     KH 
 HKTUV ]
                                                       GEJQ FKX CNKIP EGPVGT #MVWCNPKG FNC
                                                       åY[DTCPGL MCVGIQTKK PKG KUVPKGLG CFGP
                                                       åQFPQ PKMFKX 
                                                     _ GNUG ]
                                                       GEJQ VCDNG 
                                                     _ _

                                                 Jeśli zostaną zwrócone jakiekolwiek wiersze,
                                                 zmienna HKTUV znajdująca się wewnątrz
                                                 pętli YJKNG przyjmie wartość (#.5'. A zatem,
                                                 jeśli wartością zmiennej HKTUV nadal będzie
                                                 647', oznacza to, e nie zwrócono adnych
Rysunek 11.13. Lista adresów URL                 rekordów i powinien zostać wyświetlony
dla wybranego typu                               komunikat podobny do pokazanego na
                                                 rysunku 11.14. W przeciwnym razie powinna




                                                                                                  Zarządzanie adresami URL
                                                 zostać wygenerowana kompletna tabela.
                                              9. Zakończyć kod źródłowy strony HTML.
                                                   O[USNAENQUG

                                                   KPENWFGAQPEG 
 KPENWFGUUVQRMCJVON  !

                                             10. Zapisać plik pod nazwą view_urls.php, umieścić
                                                 go na serwerze WWW i przetestować przy
                                                 u yciu przeglądarki internetowej.

                                             Wskazówki
                                                 W rozdziale 12. zamieszczono skrypt
                                                 demonstrujący, w jaki sposób wyświetlać
Rysunek 11.14. Wygląd strony w przypadku,
                                                 rekordy na wielu stronach (zapoznaj się
gdy z wybranym typem nie powiązano jeszcze
 adnych adresów URL                              z zawartością ostatniego skryptu tego
                                                 rozdziału o nazwie view_users.php).
                                                 Przykłady zawarte w następnym rozdziale
                                                 dotyczą równie operacji rejestracji
                                                 i autoryzacji u ytkownika. Jeśli zale y Ci
                                                 na ochronie zarządzanych informacji,
                                                 obie operacje powinny zostać zastosowane
                                                 w aplikacji omawianej w niniejszym rozdziale.
                                                 W razie potrzeby w stosunku do pola
                                                 FGUETKRVKQP mo na zastosować funkcję
                                                 PNDT
 (skrót od słów newline to break).
                                                 Funkcja zamieni ka dy znak nowego wiersza
                                                 — tworzony poprzez wciśnięcie klawisza
                                                 Return lub Enter — na znacznik języka
                                                 (X)HTML postaci DT .


                                                                                          401
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start

Mais conteúdo relacionado

Mais procurados

CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać niąCMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać niąWydawnictwo Helion
 
Zwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowychZwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowychWydawnictwo Helion
 
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznikAdobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznikWydawnictwo Helion
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIWydawnictwo Helion
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieWydawnictwo Helion
 
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznikMambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznikWydawnictwo Helion
 
PHP i MySQL. Wprowadzenie. Wydanie II
PHP i MySQL. Wprowadzenie. Wydanie IIPHP i MySQL. Wprowadzenie. Wydanie II
PHP i MySQL. Wprowadzenie. Wydanie IIWydawnictwo Helion
 
Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceWydawnictwo Helion
 
Ajax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiAjax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiWydawnictwo Helion
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIWydawnictwo Helion
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowychWydawnictwo Helion
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychWydawnictwo Helion
 

Mais procurados (20)

CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać niąCMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
CMS. Jak szybko i łatwo stworzyć stronę WWW i zarządzać nią
 
PHP. Rozmówki
PHP. RozmówkiPHP. Rozmówki
PHP. Rozmówki
 
HTML i XHTML dla każdego
HTML i XHTML dla każdegoHTML i XHTML dla każdego
HTML i XHTML dla każdego
 
Zwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowychZwiększ szybkość! Optymalizacja serwisów internetowych
Zwiększ szybkość! Optymalizacja serwisów internetowych
 
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznikAdobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
Adobe Dreamweaver CS3 z ASP, ColdFusion i PHP. Oficjalny podręcznik
 
Tworzenie stron WWW. Kurs
Tworzenie stron WWW. KursTworzenie stron WWW. Kurs
Tworzenie stron WWW. Kurs
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie III
 
Serwisy internetowe. Programowanie
Serwisy internetowe. ProgramowanieSerwisy internetowe. Programowanie
Serwisy internetowe. Programowanie
 
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznikMambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
Mambo. Tworzenie, edycja i zarządzanie stroną. Niebieski podręcznik
 
Po prostu FrontPage 2003 PL
Po prostu FrontPage 2003 PLPo prostu FrontPage 2003 PL
Po prostu FrontPage 2003 PL
 
PHP i MySQL. Wprowadzenie. Wydanie II
PHP i MySQL. Wprowadzenie. Wydanie IIPHP i MySQL. Wprowadzenie. Wydanie II
PHP i MySQL. Wprowadzenie. Wydanie II
 
Tworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyceTworzenie stron WWW w praktyce
Tworzenie stron WWW w praktyce
 
Po prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie IIIPo prostu HTML 4. Wydanie III
Po prostu HTML 4. Wydanie III
 
PHP5 i MySQL. Biblia
PHP5 i MySQL. BibliaPHP5 i MySQL. Biblia
PHP5 i MySQL. Biblia
 
Ajax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacjiAjax. Niezbędnik projektanta dynamicznych aplikacji
Ajax. Niezbędnik projektanta dynamicznych aplikacji
 
JSP i XML
JSP i XMLJSP i XML
JSP i XML
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowych
 
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
 
PHP5. Praktyczny kurs
PHP5. Praktyczny kursPHP5. Praktyczny kurs
PHP5. Praktyczny kurs
 

Destaque

Raport metodologiczny, Cyfrowe Dziedzictwo Kulturowe
Raport metodologiczny, Cyfrowe Dziedzictwo KulturoweRaport metodologiczny, Cyfrowe Dziedzictwo Kulturowe
Raport metodologiczny, Cyfrowe Dziedzictwo KulturoweMałopolski Instytut Kultury
 
Cb radio krok-po_kroku
Cb radio krok-po_krokuCb radio krok-po_kroku
Cb radio krok-po_krokustalowy22
 
Podstawy statystyki dla psychologów - zajęcia 6 - predykcja
Podstawy statystyki dla psychologów - zajęcia 6 - predykcjaPodstawy statystyki dla psychologów - zajęcia 6 - predykcja
Podstawy statystyki dla psychologów - zajęcia 6 - predykcjaKarol Wolski
 
C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyWydawnictwo Helion
 
Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4Pola Honorata
 
Warsztaty EKG cz. 3 niedokrwienie mięśnia sercowego
Warsztaty EKG cz. 3 niedokrwienie mięśnia sercowegoWarsztaty EKG cz. 3 niedokrwienie mięśnia sercowego
Warsztaty EKG cz. 3 niedokrwienie mięśnia sercowegoskn interna
 
Jak napisać dobry abstrakt i zrobić przegląd literatury
Jak napisać dobry abstrakt i zrobić przegląd literaturyJak napisać dobry abstrakt i zrobić przegląd literatury
Jak napisać dobry abstrakt i zrobić przegląd literaturyPiotr Siuda
 

Destaque (10)

Raport metodologiczny, Cyfrowe Dziedzictwo Kulturowe
Raport metodologiczny, Cyfrowe Dziedzictwo KulturoweRaport metodologiczny, Cyfrowe Dziedzictwo Kulturowe
Raport metodologiczny, Cyfrowe Dziedzictwo Kulturowe
 
Delphi 7 i bazy danych
Delphi 7 i bazy danychDelphi 7 i bazy danych
Delphi 7 i bazy danych
 
ABC Access 2003 PL
ABC Access 2003 PLABC Access 2003 PL
ABC Access 2003 PL
 
Algorytmy i struktury danych
Algorytmy i struktury danychAlgorytmy i struktury danych
Algorytmy i struktury danych
 
Cb radio krok-po_kroku
Cb radio krok-po_krokuCb radio krok-po_kroku
Cb radio krok-po_kroku
 
Podstawy statystyki dla psychologów - zajęcia 6 - predykcja
Podstawy statystyki dla psychologów - zajęcia 6 - predykcjaPodstawy statystyki dla psychologów - zajęcia 6 - predykcja
Podstawy statystyki dla psychologów - zajęcia 6 - predykcja
 
C++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalistyC++ Builder 6. Vademecum profesjonalisty
C++ Builder 6. Vademecum profesjonalisty
 
Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4Psychologia emocji i motywacji 3 4
Psychologia emocji i motywacji 3 4
 
Warsztaty EKG cz. 3 niedokrwienie mięśnia sercowego
Warsztaty EKG cz. 3 niedokrwienie mięśnia sercowegoWarsztaty EKG cz. 3 niedokrwienie mięśnia sercowego
Warsztaty EKG cz. 3 niedokrwienie mięśnia sercowego
 
Jak napisać dobry abstrakt i zrobić przegląd literatury
Jak napisać dobry abstrakt i zrobić przegląd literaturyJak napisać dobry abstrakt i zrobić przegląd literatury
Jak napisać dobry abstrakt i zrobić przegląd literatury
 

Semelhante a PHP i MySQL. Dynamiczne strony WWW. Szybki start

PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIWydawnictwo Helion
 
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki startPHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowaniePHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowanieWydawnictwo Helion
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyWydawnictwo Helion
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPWydawnictwo Helion
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanieWydawnictwo Helion
 
Tworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie IITworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie IIWydawnictwo Helion
 
ASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaWydawnictwo Helion
 
PHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowaniaPHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowaniaWydawnictwo Helion
 

Semelhante a PHP i MySQL. Dynamiczne strony WWW. Szybki start (15)

PHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie IIPHP. 101 praktycznych skryptów. Wydanie II
PHP. 101 praktycznych skryptów. Wydanie II
 
PHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzeniePHP. Praktyczne wprowadzenie
PHP. Praktyczne wprowadzenie
 
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki startPHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
PHP6 i MySQL 5. Dynamiczne strony WWW. Szybki start
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
MySQL. Szybki start
MySQL. Szybki startMySQL. Szybki start
MySQL. Szybki start
 
PHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowaniePHP4. Zaawansowane programowanie
PHP4. Zaawansowane programowanie
 
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalistyPHP. Programowanie w systemie Windows. Vademecum profesjonalisty
PHP. Programowanie w systemie Windows. Vademecum profesjonalisty
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHP
 
PHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowaniePHP5. Zaawansowane programowanie
PHP5. Zaawansowane programowanie
 
PHP5. Radocha z programowania
PHP5. Radocha z programowaniaPHP5. Radocha z programowania
PHP5. Radocha z programowania
 
Tworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie IITworzenie stron WWW w praktyce. Wydanie II
Tworzenie stron WWW w praktyce. Wydanie II
 
ASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązaniaASP.NET 2.0. Gotowe rozwiązania
ASP.NET 2.0. Gotowe rozwiązania
 
Dreamweaver MX
Dreamweaver MXDreamweaver MX
Dreamweaver MX
 
PHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowaniaPHP5. Profesjonalne tworzenie oprogramowania
PHP5. Profesjonalne tworzenie oprogramowania
 
PHP5. Tajniki programowania
PHP5. Tajniki programowaniaPHP5. Tajniki programowania
PHP5. Tajniki programowania
 

Mais de Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 

Mais de Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 

PHP i MySQL. Dynamiczne strony WWW. Szybki start

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ PHP i MySQL. SPIS TRE CI Dynamiczne strony KATALOG KSI¥¯EK WWW. Szybki start Autor: Larry Ullman KATALOG ONLINE T³umaczenie: Micha³ Dadan (rozdz. 1 – 7), Piotr Pilch (rozdz. 8 – 13, dod. A – D) ZAMÓW DRUKOWANY KATALOG ISBN: 83-7361-157-6 Tytu³ orygina³u: PHP and MySQL for Dynamic Web Sites VQPG Format: B5, stron: 580 TWÓJ KOSZYK Przyk³ady na ftp: 352 kB DODAJ DO KOSZYKA Coraz wiêcej serwisów internetowych sk³ada siê nie tylko z atrakcyjnego interfejsu u¿ytkownika, ale tak¿e z rozbudowanych aplikacji dzia³aj¹cych na serwerze. S¹ one najczê ciej oparte o bazy danych, które przechowuj¹ dane i zapewniaj¹ szybki do nich CENNIK I INFORMACJE dostêp. Je li chcesz w krótkim czasie nauczyæ siê tworzyæ takie aplikacje, znalaz³e w³a ciw¹ ksi¹¿kê. ZAMÓW INFORMACJE „PHP i MySQL. Dynamiczne strony WWW” nauczy Ciê tworzenia dynamicznych O NOWO CIACH serwisów internetowych z wykorzystaniem PHP i MySQL-a. Ksi¹¿ka przeka¿e Ci wiedzê niezbêdn¹ dla projektantów rozwi¹zañ internetowych. Wszystkie zagadnienia opisane ZAMÓW CENNIK s¹ „krok po kroku”, ka¿demu z nich towarzyszy te¿ odpowiedni rysunek. Przyk³ady odzwierciedlaj¹ problemy, z którymi projektanci stron internetowych spotykaj¹ siê na co dzieñ. CZYTELNIA Ksi¹¿ka opisuje: FRAGMENTY KSI¥¯EK ONLINE • Podstawy programowania w PHP • Tworzenie dynamicznych stron internetowych z u¿yciem PHP • Zasady projektowanie baz danych • Jêzyk SQL • Korzystanie z systemu zarz¹dzania bazami danych MySQL • £¹czenie PHP z systemem MySQL • U¿ycie sesji • Zabezpieczanie stron internetowych przed dostêpem nieuprawnionych osób • Przyk³adowe aplikacje: rejestracja u¿ytkowników i sklep internetowy Tre æ ksi¹¿ki uzupe³niaj¹ dodatki opisuj¹ce sposób instalacji omawianych w niej narzêdzi oraz dodatkowe, przydatne aplikacje. Wydawnictwo Helion Je li chcesz w szybko nauczyæ siê programowania dynamicznych serwisów ul. Chopina 6 internetowych, ta ksi¹¿ka bêdzie Twoim intensywnym kursem. Ju¿ po przeczytaniu 44-100 Gliwice kilku rozdzia³ów bêdziesz w stanie pisaæ pierwsze programy w PHP korzystaj¹ce z bazy tel. (32)230-98-63 MySQL, a po przeczytaniu ca³ej ksi¹¿ki poradzisz sobie równie¿ z tworzeniem bardziej e-mail: helion@helion.pl rozbudowanych aplikacji.
  • 2. Spis treści Spis treści Wprowadzenie 9 Czym są dynamiczne strony WWW?........................................................10 Czym jest PHP?.........................................................................................11 Co to jest MySQL?....................................................................................14 Co będzie Ci potrzebne .............................................................................16 O tej ksią ce ..............................................................................................16 Rozdział 1. Wprowadzenie do PHP 19 Podstawy składni.......................................................................................20 Przesyłanie danych do przeglądarki internetowej .....................................23 Spis treści PHP, HTML i „białe odstępy” ..................................................................26 Wstawianie komentarzy ............................................................................31 Co to są zmienne? .....................................................................................34 Łańcuchy ...................................................................................................37 Liczby........................................................................................................41 Stałe...........................................................................................................45 Apostrof kontra cudzysłów .......................................................................48 Rozdział 2. Programowanie w PHP 51 Tworzenie formularza w języku HTML ..................................................52 Obsługa formularza HTML.......................................................................56 Zarządzanie opcją Magic Quotes ................................................................59 Wyra enia warunkowe i operatory............................................................61 Weryfikacja danych pochodzących z formularza......................................65 Ręczne przesyłanie wartości do skryptu ...................................................69 Co to są tablice? ........................................................................................74 Pętle for i while .........................................................................................92 5
  • 3. Spis treści Rozdział 3. Tworzenie dynamicznych stron WWW 95 Wykorzystywanie plików zewnętrznych...................................................96 Tworzenie i wywoływanie własnych funkcji ..........................................105 Zasięg zmiennej.......................................................................................115 Wyświetlanie i obsługa formularza przez jeden skrypt.............................118 Wysyłanie poczty elektronicznej...............................................................122 Nagłówki HTTP ......................................................................................125 Tworzenie formularzy z pamięcią...........................................................130 Funkcje daty i czasu ................................................................................133 Rozdział 4. Wprowadzenie do SQL i MySQL 137 Projektowanie tabel .................................................................................138 Korzystanie z monitora mysqla...............................................................142 Tworzenie baz danych i tabel..................................................................146 Wprowadzanie rekordów ........................................................................149 Wybieranie danych..................................................................................152 Wyra enia warunkowe ............................................................................154 Spis treści Stosowanie LIKE i NOT LIKE ..............................................................158 Sortowanie wyników zapytania .................................................................160 Ograniczanie wyników zapytania ...........................................................163 Uaktualnianie danych ..............................................................................165 Usuwanie danych ....................................................................................167 Rozdział 5. Zaawansowany SQL i MySQL 169 Projekt bazy danych ................................................................................170 Złączenia .................................................................................................185 Funkcje ....................................................................................................189 Indeksy ....................................................................................................201 Rozdział 6. PHP i MySQL 205 Tworzenie szablonu.................................................................................206 Łączenie się z MySQL-em i wybieranie bazy.........................................211 Obsługa błędów.......................................................................................215 Wykonywanie prostych zapytań ................................................................218 Odczytywanie wyników zapytania..........................................................228 Bezpieczeństwo.......................................................................................232 Korzystanie z funkcji mysql_num_rows() ..............................................238 Uaktualnianie rekordów w PHP ................................................................244 6
  • 4. Spis treści Rozdział 7. Sesje i „ciasteczka” 251 Posługiwanie się ciasteczkami ................................................................252 Sesje ........................................................................................................271 Sesje a „ciasteczka”.................................................................................287 Rozdział 8. Zabezpieczenia 295 Autoryzacja HTTP ..................................................................................296 Walidacja formularza przy u yciu skryptu JavaScript .............................302 Wyra enia regularne ...............................................................................309 Zabezpieczenia bazy danych ...................................................................321 Rozdział 9. Tworzenie aplikacji internetowych 325 Metody debugowania kodu źródłowego skryptu PHP ............................326 Metody debugowania zapytań SQL i serwera MySQL...........................329 Obsługa błędów w języku PHP.................................................................335 Obsługa błędów serwera MySQL..............................................................339 Zwiększanie wydajności aplikacji internetowych ...................................342 Rozdział 10. Zagadnienia dodatkowe 347 Spis treści Buforowanie wyjścia...............................................................................348 Buforowanie stron HTML.......................................................................355 Określanie typu przeglądarki internetowej.............................................357 Skrypty PHP i JavaScript ........................................................................361 Zastosowanie pakietu PEAR ...................................................................369 Rozdział 11. Zarządzanie zawartością strony — przykład 377 Tworzenie szablonu.................................................................................378 Tworzenie zwykłych stron internetowych ..............................................383 Zarządzanie adresami URL .....................................................................385 Zarządzanie plikami ................................................................................402 Rozdział 12. Rejestrowanie użytkowników — przykład 417 Tworzenie szablonów..............................................................................418 Tworzenie skryptów konfiguracyjnych...................................................422 Tworzenie strony głównej .......................................................................428 Rejestracja ...............................................................................................430 Logowanie i wylogowywanie się ..............................................................440 Zarządzanie hasłami ................................................................................446 Część administracyjna aplikacji ..............................................................457 7
  • 5. Spis treści Rozdział 13. Sklep internetowy — przykład 473 Tworzenie bazy danych...........................................................................474 Część administracyjna aplikacji ..............................................................478 Tworzenie szablonu części publicznej aplikacji......................................491 Katalog produktów ..................................................................................495 Koszyk zakupów .....................................................................................504 Dodatek A Instalacja 515 Instalacja pod systemem Windows............................................................516 Definiowanie uprawnień serwera MySQL..............................................522 Sprawdzanie poprawności instalacji ......................................................528 Dodatek B Aplikacje dodatkowe 531 Narzędzie phpMyAdmin .........................................................................532 Systemy szablonów .................................................................................533 Oprogramowanie obsługujące fora dyskusyjne.......................................534 Zarządzanie zawartością..........................................................................535 Handel elektroniczny...............................................................................536 Spis treści Wyszukiwarki..........................................................................................537 Biblioteki kodów źródłowych .................................................................538 Dodatek C Odsyłacz 539 Język PHP ...............................................................................................540 Serwer MySQL .......................................................................................547 Dodatek D Zasoby internetowe 553 Język PHP ...............................................................................................554 Serwer MySQL .......................................................................................557 Język SQL ...............................................................................................559 Zabezpieczenia ........................................................................................560 Inne strony internetowe ...........................................................................561 Skorowidz 565 8
  • 6. Zarządzanie zawartością strony — przykład Zarządzanie zawartością strony — przykład Rozdział 11. Zarządzanie zawartością strony — przykład Pierwszy przykład aplikacji zamieszczony w niniejszej ksią ce będzie dotyczył zarządzania zawartością strony. Aplikacja będzie zarządzała zarówno adresami URL, jak i plikami, które u ytkownicy będą mogli dodawać, wyświetlać i przetwarzać. Co prawda w tym przypadku nie zostanie uwzględniona administracyjna część aplikacji, ale zostaną dołączone informacje pozwalające na jej wykonanie. Chocia w tym rozdziale skupimy się na konkretnym przykładzie, to jednak wspomnimy równie o kilku Zarządzanie zawartością strony nowych funkcjach i metodach. Do funkcji tych nale y zaliczyć O[USNAKPUGTVAKF i NKUV . Wspomnimy tak e, w jaki sposób zrealizować operację umieszczania plików na serwerze. 377
  • 7. Rozdział 11. Tworzenie szablonu W pierwszym etapie projektowania aplikacji zostanie utworzony systemowy szablon, którego zadaniem będzie wspomaganie procesu przygotowywania strony HTML. Strona w ostatecznej postaci (rysunek 11.1) będzie korzystała z tabel i kilku arkuszy stylów CSS (ang. Cascading Style Sheets). Aby utworzyć plik naglowek.html, Rysunek 11.1. Domyślny wygląd strony aplikacji omawianej w tym rozdziale należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nową stronę HTML (listing 11.1). 1%6;2' JVON 27$.+% 9%6 å:*6/. 6TCPUKVKQPCN'0 JVVRYYYYQTI64 å4'%ZJVON6 åZJVONVTCPUKVKQPCNFVF Tworzenie szablonu JVON ZONPU JVVRYYYYQTIZJVON åZONNCPI GP NCPI GP JGCF OGVC JVVRGSWKX EQPVGPVV[RG EQPVGPV å VGZVJVON EJCTUGVKUQ VKVNG !RJR GEJQ RCIGAVKVNG ! VKVNG 1. Napisać kod arkusza stylów CSS. UV[NG V[RG VGZVEUU OGFKC UETGGP DQF[ ] DCEMITQWPFEQNQT HHHHHH _ EQPVGPV ] DCEMITQWPFEQNQT HHH RCFFKPIVQR RZ RCFFKPITKIJV RZ åRCFFKPIDQVVQO RZ RCFFKPINGHV RZ åOCTIKPVQR RZ OCTIKPTKIJV RZ åOCTIKPDQVVQO RZ OCTIKPNGHV RZ _ 378
  • 8. Zarządzanie zawartością strony — przykład Listing 11.1. Plik naglowek.html rozpoczyna się od kodu formatującego stronę HTML i zawiera wymagany kod arkusza stylów CSS 1%6;2' JVON 27$.+% 9%6 :*6/. 6TCPUKVKQPCN'0 JVVRYYYYQTI644'%ZJVON6ZJVONVTCPUKVKQPCNFVF JVON ZONPU JVVRYYYYQTIZJVON ZONNCPI GP NCPI GP JGCF OGVC JVVRGSWKX EQPVGPVV[RG EQPVGPV VGZVJVON EJCTUGVKUQ VKVNG !RJR GEJQ RCIGAVKVNG ! VKVNG UV[NG V[RG VGZVEUU OGFKC UETGGP DQF[ ] DCEMITQWPFEQNQT HHHHHH _ EQPVGPV ] DCEMITQWPFEQNQT HHH RCFFKPIVQR RZ RCFFKPITKIJV RZ RCFFKPIDQVVQO RZ RCFFKPINGHV RZ OCTIKPVQR RZ OCTIKPTKIJV RZ OCTIKPDQVVQO RZ OCTIKPNGHV RZ _ CPCXNKPMNKPM ] EQNQT VGZVFGEQTCVKQP PQPG _ CPCXNKPMXKUKVGF ] EQNQT VGZVFGEQTCVKQP PQPG _ CPCXNKPMJQXGT ] EQNQT EEEEEE VGZVFGEQTCVKQP PQPG _ VF ] HQPVHCOKN[ 8GTFCPC #TKCN *GNXGVKEC UCPUUGTKH HQPVUKG RZ XGTVKECNCNKIP VQR Tworzenie szablonu _ VKVNG ] HQPVUKG RZ HQPVYGKIJV PQTOCN EQNQT HHHHHH OCTIKPVQR RZ OCTIKPDQVVQO RZ OCTIKPNGHV RZ RCFFKPIVQR RZ RCFFKPIDQVVQO RZ RCFFKPINGHV RZ _ UV[NG JGCF DQF[ VCDNG YKFVJ DQTFGT EGNNURCEKPI EGNNRCFFKPI CNKIP EGPVGT VT VF EQNURCP DIEQNQT R ENCUU VKVNG CTæFCPKG CYCTVQ EKæ UVTQPR VF VT VT VF XCNKIP VQR PQYTCR PQYTCR D C JTGH KPFGZRJR ENCUU PCXNKPM 5VTQPC I ÎYPCC DT C JTGH XKGYAWTNURJR ENCUU PCXNKPM 2TGINæFCL CFTGU[ 74.C DT C JTGH CFFAWTNRJR ENCUU PCXNKPM QFCL CFTGU 74.C DT C JTGH XKGYAHKNGURJR ENCUU PCXNKPM 2TGINæFCL RNKMKC DT C JTGH CFFAHKNGRJR ENCUU PCXNKPM QFCL RNKMC D VF VF XCNKIP VQR ENCUU EQPVGPV .KUVKPI PCINQYGMJVON 379
  • 9. Rozdział 11. CPCXNKPMNKPM ] EQNQT åVGZVFGEQTCVKQP PQPG _ CPCXNKPMXKUKVGF ] EQNQT åVGZVFGEQTCVKQP PQPG _ CPCXNKPMJQXGT ] EQNQT EEEEEE åVGZVFGEQTCVKQP PQPG _ VF ] HQPVHCOKN[ 8GTFCPC #TKCN *GNXGVKEC åUCPUUGTKH HQPVUKG RZ XGTVKECNCNKIP VQR _ VKVNG ] HQPVUKG RZ HQPVYGKIJV Rysunek 11.2. Wygląd strony, na której w celu åPQTOCN EQNQT HHHHHH wyró nienia wierszy i kolumn tabeli zastosowano OCTIKPVQR RZ OCTIKPDQVVQO RZ obwódki åOCTIKPNGHV RZ RCFFKPIVQR RZ RCFFKPIDQVVQO RZ åRCFFKPINGHV RZ _ UV[NG W przypadku omawianej aplikacji zostanie wykorzystany arkusz stylów CSS, który Tworzenie szablonu posłu y do sformatowania tekstu. Ze względu na niewielką objętość kodu arkusza stylów CSS, zamiast w oddzielnym pliku zostanie on umieszczony bezpośrednio w sekcji *'# strony HTML. 3. Zakończyć pisanie kodu nagłówka strony HTML i utworzyć pierwszy wiersz tytułu. JGCF DQF[ VCDNG YKFVJ DQTFGT åEGNNURCEKPI EGNNRCFFKPI åCNKIP EGPVGT VT VF EQNURCP DIEQNQT åR ENCUU VKVNG CTæFCPKG åCYCTVQ EKæ UVTQPR VF VT VT Podstawowa strona HTML będzie zawierała tabelę zło oną z trzech wierszy — tytułu, wiersza przechowującego odnośniki i zawartość strony oraz wiersza, w którym będą umieszczone informacje o prawach autorskich (rysunek 11.2). 380
  • 10. Zarządzanie zawartością strony — przykład 4. Utworzyć sekcję powiązaną z odnośnikami i rozpocząć definiowanie komórek przechowujących zawartość strony. VF XCNKIP VQR PQYTCR PQYTCR D C JTGH KPFGZRJR ENCUU å PCXNKPM 5VTQPC I ÎYPCC DT C JTGH XKGYAWTNURJR åENCUU PCXNKPM 2TGINæFCL CFTGU[ å74.C DT C JTGH CFFAWTNRJR ENCUU å PCXNKPM åQFCL CFTGU 74.C DT C JTGH XKGYAHKNGURJR ENCUU å PCXNKPM 2TGINæFCL RNKMKC DT C JTGH CFFAHKNGRJR åENCUU PCXNKPM QFCL RNKMC D VF VF XCNKIP VQR ENCUU EQPVGPV .KUVKPI PCINQYGMJVON 5. Zapisać plik pod nazwą naglowek.html Rysunek 11.3. Struktura aplikacji internetowej, i umieścić go na serwerze WWW której katalogiem głównym jest katalog html (w katalogu includes). Tworzenie szablonu Na rysunku 11.3 przedstawiono strukturę katalogów zawierających pliki aplikacji. Wskazówka W przykładzie zamieszczonym w następnym przykładzie zostanie zastosowany bardziej zło ony arkusz stylów CSS, który będzie zapisany w oddzielnym pliku dołączonym do pliku naglowek.html. 381
  • 11. Rozdział 11. Aby utworzyć plik stopka.html, Listing 11.2. Plik stopka.html zawiera pozostałe definicje wyglądu strony HTML należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nową stronę .KUVKPI UVQRMCJVON HTML (listing 11.2). -QPKGE CYCTVQ EK UVTQP[ .KUVKPI UVQRMCJVON VF VT 2. Zakończyć kod środkowego wiersza tabeli. VT VF VF PDURVF VT VF CNKIP EGPVGT EQR[ Cała zawartość strony będzie przechowywana .CTT[ '7NNOCP CPF /% +PUKIJVU +PEVF w środkowym wierszu tabeli, którego VT definicja zaczyna się w pliku naglowek.html. Powy szy kod kończy definicję wiersza, VCDNG po którym zostanie umieszczony trzeci DQF[ i ostatni wiersz. JVON 3. Zdefiniować ostatni wiersz i zakończyć tworzenie strony HTML. Tworzenie szablonu VT VF PDURVF VF CNKIP EGPVGT EQR[ .CTT[ ' å7NNOCP CPF /% +PUKIJVU +PEVF VT VCDNG DQF[ JVON 4. Zapisać plik pod nazwą stopka.html i umieścić go na serwerze WWW (w katalogu includes). 382
  • 12. Zarządzanie zawartością strony — przykład Listing 11.3. Główna strona aplikacji (w razie potrzeby nale y umieścić na niej Tworzenie zwykłych bardziej wartościowe informacje) stron internetowych Zanim zajmiemy się najwa niejszą częścią !RJR .KUVKPI KPFGZRJR aplikacji internetowej (samym mechanizmem ) ÎYPC UVTQPC UGTYGTC 999 zarządzania zawartością stron) konieczne będzie 7UVCYKGPKG V[VW W UVTQP[ K FQ æEGPKG PCI ÎYMC *6/. stworzenie jeszcze dwóch stron HTML. Jedna RCIGAVKVNG CTæFCPKG z nich o nazwie index.php będzie spełniała rolę CYCTVQ EKæ UVTQP głównej strony aplikacji. Z kolei druga o nazwie KPENWFGAQPEG mysql_connect.php jest skryptem, którego KPENWFGUPCINQYGMJVON zadaniem jest połączenie z serwerem MySQL ! R 5RCO URCO URCO URCO URCO URCO i wybranie wymaganej bazy danych (w celu URCO URCO URCO URCOR uzyskania dodatkowych informacji na jej temat R 5RCO URCO URCO URCO URCO URCO nale y zapoznać się z zawartością ramki Schemat Tworzenie zwykłych stron internetowych URCO URCO URCO URCOR bazy danych zawartej w następnym podrozdziale). !RJR Q æEGPKG UVQRMK *6/. KPENWFGAQPEG KPENWFGUUVQRMCJVON ! Aby utworzyć główną stronę, należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nowy skrypt PHP (listing 11.3). !RJR .KUVKPI KPFGZRJR 2. Określić tytuł strony i dołączyć plik nagłówka HTML. RCIGAVKVNG CTæFCPKG CYCTVQ EKæ åUVTQP KPENWFGAQPEG KPENWFGUPCINQYGMJVON ! 3. Wypełnić stronę tekstem. Rysunek 11.4. Główna strona R 5RCO URCO URCO URCO URCO URCO URCO åURCO URCO URCOR R 5RCO URCO URCO URCO URCO URCO URCO åURCO URCO URCOR Co prawda posłu yłem się tego typu treścią (słowo URCO), ale oczywiście na stronie głównej mo na umieścić bardziej wartościowe informacje. 4. Dołączyć stopkę HTML. !RJR KPENWFGAQPEG KPENWFGUUVQRMCJVON ! 5. Zapisać plik pod nazwą index.php, umieścić go na serwerze WWW i przetestować przy u yciu przeglądarki internetowej (rysunek 11.4). 383
  • 13. Rozdział 11. Aby utworzyć skrypt Listing 11.4. Skrypt łączy z serwerem MySQL i wybiera bazę danych content mysql_connect.php, należy wykonać następujące kroki: !RJR .KUVKPI O[USNAEQPPGEVRJR 1. W edytorze tekstu utworzyć nowy skrypt PHP 9 RNKMW CYCTVQ RCTCOGVT[ (listing 11.4). Y[OCICPG FQ W[UMCPKC FQUVúRW FQ DC[ FCP[EJ 2NKM LGUV !RJR .KUVKPI O[USNAEQPPGEVRJR W [YCP[ VCM G RT[ æEGPKW UKú Skrypt jest taki sam jak jego poprzednie wersje UGTYGTGO /[53. K Y[DKGTCPKGO DC[ FCP[EJ wykorzystane w poprzednich rozdziałach 7UVCYKGPKG LCMQ UVC [EJ (z wyjątkiem nazwy u ytkownika i jego hasła RCTCOGVTÎY WFKGNCLæE[EJ FQUVúRW oraz konfiguracji bazy danych). Skrypt mo e FQ DC[ FCP[EJ zostać stworzony od podstaw lub poprzez FGHKPG $A75'4 WUGTPCOG odpowiednią modyfikację poprzedniej wersji. FGHKPG $A2#55914 RCUUYQTF Tworzenie zwykłych stron internetowych 2. Określić konfigurację bazy danych w postaci FGHKPG $A*156 NQECNJQUV stałych. FGHKPG $A0#/' EQPVGPV 0CYKæCPKG RQ æEGPKC FGHKPG $A75'4 WUGTPCOG UGTYGTGO K Y[DTCPKG DC[ FCP[EJ FGHKPG $A2#55914 RCUUYQTF FDE O[USNAEQPPGEV $A*156 FGHKPG $A*156 NQECNJQUV $A75'4 $A2#55914 14 FKG FGHKPG $A0#/' EQPVGPV 0KG D[ Q OQ NKYG RQ æEGPKG UGTYGTGO /[53. O[USNAGTTQT Mając na względzie kwestię zabezpieczeń O[USNAUGNGEVAFD $A0#/' 14 FKG u ytkownik łączący się z serwerem MySQL 0KG D[ Q OQ NKYG Y[DTCPKG DC[ powinien na potrzeby omawianej aplikacji FCP[EJ O[USNAGTTQT dysponować mo liwością wykonywania tylko ! takich poleceń jak +05'46, 5'.'%6, '.'6' i dodatkowo wyłącznie dla bazy danych content. 3. Połączyć się z serwerem MySQL i wybrać bazę danych. FDE O[USNAEQPPGEV $A*156 $A75'4 å$A2#55914 14 FKG 0KG D[ Q OQ NKYG åRQ æEGPKG UGTYGTGO /[53. åO[USNAGTTQT O[USNAUGNGEVAFD $A0#/' 14 FKG å 0KG D[ Q OQ NKYG Y[DTCPKG DC[ FCP[EJ å åO[USNAGTTQT Wskazówki Aplikacja dysponuje podstawowym mechanizmem obsługi błędów realizowanym W następnym rozdziale zostanie omówiony przez funkcję O[USNAGTTQT . Więcej przykład, w którym zostaną wykorzystane informacji na ten temat zawarto w rozdziale 6. bardziej zaawansowane metody obsługi błędów. Poza tym zamieszczono w nim 4. Zakończyć skrypt PHP. zmodyfikowaną wersję skryptu ! mysql_connect.php. 5. Zapisać plik pod nazwą mysql_connect.php W celu uzyskania dodatkowych informacji i umieścić go na serwerze WWW poza na temat praw dostępu do serwera MySQL katalogiem głównym (rysunek 11.3). nale y zapoznać się z zawartością dodatku A. 384
  • 14. Zarządzanie zawartością strony — przykład Zarządzanie adresami URL Kolejne dwie strony HTML, które zostaną stworzone, umo liwią u ytkownikom dodawanie adresów URL i przeglądanie ju dołączonych. Ta część aplikacji bazuje na trzech tabelach bazy danych — WTNU, WTNAV[RGU i WTNAVKVNGU. Aby uzyskać dodatkowe informacje, nale y zapoznać się z zawartością ramki Schemat bazy danych. Dodawanie adresów URL Skrypt add_url.php prawdopodobnie jest najbardziej zło onym wśród wszystkich wchodzących w skład aplikacji. Wynika to z zastosowania znormalizowanej struktury bazy danych. Formularz zawarty w skrypcie pobiera adres URL, jego tytuł (lub nazwę), opis Zarządzanie adresami URL i maksymalnie trzy kategorie. Po wypełnieniu formularza (adres URL, jego tytuł, opis) dane zostaną umieszczone w tabeli WTNAVKVNGU. Następnie w celu dodania do tabeli WTNU od jednego do trzech rekordów (w zale ności od ilości kategorii wybranych przez u ytkownika) zostanie zastosowany klucz główny tabeli VKVNGAKF wraz z wartościami pola V[RGAKF. W celu określenia wartości pola VKVNGAKF dla dodanego adresu URL zostanie wykorzystana funkcja O[USNAKPUGTVAKF , która do tej pory nie była omawiana. Ka dorazowo, gdy na tabeli zawierającej pole o automatycznie zwiększanej wartości (zazwyczaj jest nim klucz główny) zostanie wykonane zapytanie, wtedy dla pola serwer MySQL u yje następnej wartości. Funkcja O[USNAKPUGTVAKF zwróci tę wartość. W przeciwnym razie nie byłoby mo liwe jej uzyskanie. 385
  • 15. Rozdział 11. Schemat bazy danych W niniejszym rozdziale zastosowano bazę danych o nazwie content, którą utworzono w rozdziale 5. W tamtym rozdziale zdefiniowano trzy znormalizowane tabele na potrzeby obsługi adresów URL (zło ona struktura pozwala na zaklasyfikowanie adresów URL do wielu typów). W tym rozdziale zostanie stworzona tabela WRNQCFU wykorzystywana przy zarządzaniu plikami. Całkowita struktura bazy danych mo e zostać ponownie zdefiniowana z wykorzystaniem poni szych poleceń: %4'#6' 6#$.' WRNQCFU WRNQCFAKF KPV 705+)0' 016 07.. #761A+0%4'/'06 åHKNGAPCOG 8#4%*#4 016 07.. HKNGAUKG +06 705+)0' 016 07.. HKNGAV[RG å8#4%*#4 016 07.. FGUETKRVKQP 8#4%*#4 '(#7.6 07.. WRNQCFAFCVG å#6'6+/' 016 07.. 24+/#4; -'; WRNQCFAKF -'; HKNGAPCOG HKNGAPCOG %4'#6' 6#$.' WTNAVKVNGU VKVNGAKF 5/#..+06 705+)0' 016 07.. #761A+0%4'/'06 åWTN 8#4%*#4 016 07.. VKVNG 8#4%*#4 016 07.. FGUETKRVKQP 6+0;6':6 016 å07.. 24+/#4; -'; VKVNGAKF 70+37' -'; WTN WTN %4'#6' 6#$.' WTNAV[RGU V[RGAKF 6+0;+06 705+)0' 016 07.. #761A+0%4'/'06 åV[RG 8#4%*#4 016 07.. 24+/#4; -'; V[RGAKF 70+37' -'; V[RG V[RG %4'#6' 6#$.' WTNU WTNAKF 5/#..+06 705+)0' 016 07.. #761A+0%4'/'06 åVKVNGAKF 5/#..+06 705+)0' 016 07.. V[RGAKF 6+0;+06 705+)0' 016 07.. åCRRTQXGF %*#4 '(#7.6 0 FCVGAUWDOKVVGF 6+/'56#/2 016 07.. 24+/#4; Zarządzanie adresami URL å-'; WTNAKF -'; VKVNGAKF VKVNGAKF -'; V[RGAKF V[RGAKF -'; åFCVGAUWDOKVVGF FCVGAUWDOKVVGF W celu sprawdzenia struktury bazy danych zawsze mo na u yć poni szych poleceń języka SQL (rysunek 11.5). 5*19 6#$.'5 '5%4+$' nazwa_tabeli Rysunek 11.5. Sprawdzenie struktury bazy danych 386
  • 16. Zarządzanie zawartością strony — przykład Aby utworzyć skrypt add_url.php, Podobnie jak w poprzednich rozdziałach, należy wykonać następujące kroki: funkcja GUECRGAFCVC gwarantuje poprawność przesyłanych danych niezale nie od tego, czy 1. W edytorze tekstu utworzyć nowy skrypt uaktywniono funkcję Magic Quotes, czy nie. PHP (listing 11.5). 3. Przeprowadzić walidację wprowadzonego !RJR .KUVKPI CFFAWTNRJR adresu URL i jego tytułu. RCIGAVKVNG QFCYCPKG CFTGUÎY 74. KPENWFG KPENWFGUPCINQYGMJVON KH GORV[ A2156= WTN ? ] TGSWKTGAQPEG O[USNAEQPPGEVRJR W GUECRGAFCVC A2156= WTN ? _ GNUG ] 2. Sprawdzić, czy formularz został wypełniony W (#.5' i zastosować funkcję GUECRGAFCVC . GEJQ R HQPV EQNQT TGF 2TQUú RQFCè åCFTGU 74. HQPV R _ KH KUUGV A2156= UWDOKV ? ] KH GORV[ A2156= VKVNG ? ] å 1DU WIC HQTOWNCTC V GUECRGAFCVC A2156= VKVNG ? HWPEVKQP GUECRGAFCVC FCVC ] _ GNUG ] INQDCN FDE V (#.5' KH KPKAIGV OCIKEASWQVGUAIRE ] GEJQ R HQPV EQNQT TGF FCVC UVTKRUNCUJGU FCVC å2TQUú RQFCè PCYú CFTGUW _ å74.VKVNG HQPV R _ TGVWTP O[USNATGCNAGUECRGAUVTKPI Zarządzanie adresami URL å VTKO FCVC FDE _ Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych !RJR .KUVKPI CFFAWTNRJR 5VTQPC RQYCNC W [VMQYPKMQO FQFCè CFTGU[ 74. FQ DC[ FCP[EJ 7UVCYKGPKG V[VW W UVTQP[ K FQ æEGPKG PCI ÎYMC *6/. RCIGAVKVNG QFCYCPKG CFTGUÎY 74. KPENWFG KPENWFGUPCINQYGMJVON TGSWKTGAQPEG O[USNAEQPPGEVRJR 2Q æEGPKG DCæ FCP[EJ KH KUUGV A2156= UWDOKV ? ] 1DU WIC HQTOWNCTC (WPMELC WUWYCLæEC PCM K QDEKPCLæEC FCPG YRTQYCFQPG Y HQTOWNCTW HWPEVKQP GUECRGAFCVC FCVC ] INQDCN FDE KH KPKAIGV OCIKEASWQVGUAIRE ] FCVC UVTKRUNCUJGU FCVC _ TGVWTP O[USNATGCNAGUECRGAUVTKPI VTKO FCVC FDE _ -QPKGE UGMELK HWPMELK GUECRGAFCVC 387
  • 17. Rozdział 11. W tym przykładzie zostanie dokonane sprawdzenie, czy wprowadzono wartości. W celu zwiększenia dokładności mo na oczywiście zastosować wyra enia proste (tak naprawdę w rozdziale 8. zawarto skrypt przeprowadzający walidację adresów URL). Jeśli jakieś pole nie zostanie wypełnione, pojawi się komunikat błędu widoczny na rysunku 11.6. 4. Sprawdzić, czy w polu FGUETKRVKQP podano wartość. KH GORV[ A2156= FGUETKRVKQP ? ] F GUECRGAFCVC å A2156= FGUETKRVKQP ? Rysunek 11.6. Jeśli u ytkownik nie poda adresu _ GNUG ] URL lub jego tytułu, zostanie wyświetlony F _ komunikat błędu Ze względu na to, e w polu FGUETKRVKQP tabeli WTNAVKVNGU nie trzeba wstawiać wartości, Zarządzanie adresami URL będzie ona przetwarzana, ale tylko wtedy, gdy zostanie wprowadzona w formularzu. Jeśli w polu FGUETKRVKQP nie zostanie wstawiona adna wartość, zmiennej F stosowanej w zapytaniu będzie przypisywany pusty łańcuch. Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy 5RTCYFGPKG CFTGUW 74. KH GORV[ A2156= WTN ? ] W GUECRGAFCVC A2156= WTN ? _ GNUG ] W (#.5' GEJQ R HQPV EQNQT TGF 2TQUú RQFCè CFTGU 74. HQPV R _ 5RTCYFGPKG PCY[ CFTGUW 74. KH GORV[ A2156= VKVNG ? ] V GUECRGAFCVC A2156= VKVNG ? _ GNUG ] V (#.5' GEJQ R HQPV EQNQT TGF 2TQUú RQFCè PCYú CFTGUW 74.VKVNG HQPV R _ 5RTCYFGPKG YCTVQ EK RQNC FGUETKRVKQP PKG LGUV Y[OCICPG KH GORV[ A2156= FGUETKRVKQP ? ] F GUECRGAFCVC A2156= FGUETKRVKQP ? _ GNUG ] F _ 388
  • 18. Zarządzanie zawartością strony — przykład 5. Sprawdzić wybraną kategorię. KH A2156= V[RG ? 14 å A2156= V[RG ? 14 å A2156= V[RG ? ] V[RG 647' _ GNUG ] V[RG (#.5' GEJQ R HQPV EQNQT TGF å2TQUú RQFCè EQ PCLOPKGL LGFPæ åMCVGIQTKú HQPV R _ U ytkownik, mając do dyspozycji zbiór typów zawartych w tabeli WTNAV[RGU, mo e przypisać wprowadzanemu adresowi URL maksymalnie trzy kategorie. Zakłada się, Rysunek 11.7. U ytkownik musi wybrać co najmniej e u ytkownik wybierze kategorię przy jedną kategorię dla wprowadzonego adresu URL u yciu pierwszego menu rozwijanego (V[RG). Niezale nie od tego instrukcja warunkowa sprawdzi, czy skorzystano z przynajmniej jednego menu rozwijanego. Zarządzanie adresami URL Jeśli tak nie będzie, zostanie wyświetlony komunikat błędu (rysunek 11.7). Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy 5RTCYFGPKG MCVGIQTKK KH A2156= V[RG ? 14 A2156= V[RG ? 14 A2156= V[RG ? ] V[RG 647' _ GNUG ] V[RG (#.5' GEJQ R HQPV EQNQT TGF 2TQUú RQFCè EQ PCLOPKGL LGFPæ MCVGIQTKú HQPV R _ KH W V V[RG ] ,G NK YU[UVMQ LGUV Y RQTæFMW QFCYCPKG CFTGUW 74. FQ VCDGNK WTNAVKVNGU SWGT[ +05'46 +061 WTNAVKVNGU WTN VKVNG FGUETKRVKQP 8#.7'5 W V F TGUWNV O[USNASWGT[ SWGT[ 9[MQPCPKG CR[VCPKC VKF O[USNAKPUGTVAKF 2QDTCPKG KFGPV[HKMCVQTC V[VW W KH VKF ] ,G NK QUVC Q Y[MQPCPG RTCYKF QYQ 6YQTGPKG CR[VCPKC SWGT[ +05'46 +061 WTNU VKVNGAKF V[RGAKF CRRTQXGF FCVGAUWDOKVVGF 8#.7'5 KH A2156= V[RG ? ] SWGT[ VKF ] A2156= V[RG ?_ ; 019 _ 389
  • 19. Rozdział 11. 6. Dodać adres URL do tabeli WTNAVKVNGU. 7. Utworzyć główne zapytanie. KH W V V[RG ] KH VKF ] QFCYCPKG CFTGUW 74. FQ VCDGNK åWTNAVKVNGU SWGT[ +05'46 +061 WTNU SWGT[ +05'46 +061 WTNAVKVNGU WTN å VKVNGAKF V[RGAKF CRRTQXGF åVKVNG FGUETKRVKQP 8#.7'5 W åFCVGAUWDOKVVGF 8#.7'5 å V F KH A2156= V[RG ? ] TGUWNV O[USNASWGT[ SWGT[ SWGT[ VKF VKF O[USNAKPUGTVAKF å] A2156= V[RG ?_ ; å019 Ze względu na strukturę bazy danych, adres _ URL musi zostać dodany do tabeli WTNAVKVNGU KH A2156= V[RG ? ] zanim będzie mo liwa modyfikacja tabeli SWGT[ VKF ] A2156 WTNU. Powy sze zapytanie doda adres URL, å= V[RG ?_ ; 019 _ a następnie przy u yciu funkcji O[USN KH A2156= V[RG ? ] AKPUGTVAKF zwróci wartość pola VKVNGAKF SWGT[ VKF (klucz główny tabeli o automatycznie å] A2156= V[RG ?_ ; zwiększanej wartości). Uzyskana wartość å019 mo e następnie zostać wykorzystana _ SWGT[ UWDUVT SWGT[ Zarządzanie adresami URL w drugim zapytaniu (krok 7.). Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy KH A2156= V[RG ? ] SWGT[ VKF ] A2156= V[RG ?_ ; 019 _ KH A2156= V[RG ? ] SWGT[ VKF ] A2156= V[RG ?_ ; 019 _ SWGT[ UWDUVT SWGT[ 7UWPKúEKG QUVCVPKGIQ RTGEKPMC K URCELK 9[MQPCPKG CR[VCPKC TGUWNV O[USNASWGT[ SWGT[ KH TGUWNV ] GEJQ R D KúMWLGO[ C RTGU CPKG FCP[EJ D R A2156 CTTC[ _ GNUG ] ,G NK Y[UVæRKæ RTQDNGO[ GEJQ R HQPV EQNQT TGF 0C UMWVGM D úFW U[UVGOQYGIQ Y[U CPG CR[VCPKG PKG OQI Q QUVCè RTGVYQTQPG 2TGRTCUCO[ C CKUVPKC æ PKGFQIQFPQ èHQPV R _ _ GNUG ] ,G NK Y[UVæRKæ RTQDNGO[ GEJQ R HQPV EQNQT TGF 0C UMWVGM D úFW U[UVGOQYGIQ Y[U CPG CR[VCPKG PKG OQI Q QUVCè RTGVYQTQPG 2TGRTCUCO[ C CKUVPKC æ PKGFQIQFPQ èHQPV R _ 390
  • 20. Zarządzanie zawartością strony — przykład Jeśli zostanie pobrana wartość zmiennej VKF, 8. Wykonać zapytanie, wprowadzić komunikaty bez obaw mo na przejść do wykonywania informujące o jego wyniku i uzupełnić głównego zapytania (dodanie rekordu do instrukcje warunkowe. tabeli WTNU). Aby tak postąpić, na początku TGUWNV O[USNASWGT[ SWGT[ nale y zdefiniować zapytanie i przypisać KH TGUWNV ] jego początkową część zmiennej SWGT[. GEJQ R D KúMWLGO[ C Po sprawdzeniu, czy wybrano kategorie åRTGU CPKG FCP[EJ D R (przy u yciu menu rozwijanych), dla ka dej _ GNUG ] ,G NK Y[UVæRKæ RTQDNGO[ GEJQ R HQPV EQNQT TGF z nich dodano rekord przy u yciu zapytania. å0C UMWVGM D úFW U[UVGOQYGIQ Na końcu w celu usunięcia z zapytania åY[U CPG CR[VCPKG PKG OQI Q ostatnich dwóch znaków (przecinek i znak åQUVCè RTGVYQTQPG spacji) zostanie u yta funkcja UWDUVT . å2TGRTCUCO[ C CKUVPKC æ Jeśli wystąpią problemy ze składnią zapytania åPKGFQIQFPQ èHQPV R nale y nakazać interpreterowi języka PHP _ wyświetlenie wartości zmiennej SWGT[, Powy sze instrukcje warunkowe dzięki czemu mo na stwierdzić, co będzie wyświetlą odpowiednie komunikaty przetwarzane przez serwer MySQL. związane z przesyłanymi danymi. Zarządzanie adresami URL Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy _ GNUG ] ,G NK LGFPC QRGTCELK URTCYFGPKC FCP[EJ UKú PKG RQYKGFKG GEJQ R HQPV EQNQT TGF 2TQUú URTÎDQYCè RQPQYPKGHQPV R _ _ -QPKGE KPUVTWMELK YCTWPMQYGL QDU WIWLæEGL FCPG YRTQYCFCPG Y HQTOWNCTW (QTOWNCT Y[ YKGVNCLæE[ FCPG 6YQTGPKG OGPW TQYKLCPGIQ SWGT[ 5'.'%6
  • 21. (41/ WTNAV[RGU 14'4 $; V[RG #5% TGUWNV O[USNASWGT[ SWGT[ RWNNFQYP QRVKQP 9[DKGT LGFPæ RQ[ELúQRVKQP YJKNG TQY O[USNAHGVEJACTTC[ TGUWNV /;53.A#551% ] RWNNFQYP QRVKQP XCNWG ] TQY= V[RGAKF ?_ ] TQY= V[RG ?_QRVKQP P _ ! HQTO CEVKQP !RJR GEJQ A5'48'4= 2*2A5'.( ? ! OGVJQF RQUV HKGNFUGV NGIGPF 9 EGNW RTGU CPKC CFTGUW 74. PCNG [ Y[RG PKè HQTOWNCT OQ PC Y[DTCè OCMU[OCNPKG MCVGIQTKGNGIGPF R D #FTGU 74.D KPRWV V[RG VGZV PCOG WTN UKG OCZNGPIVJ XCNWG !RJR KH KUUGV A2156= WTN ? GEJQ A2156= WTN ? ! DT UOCNN 0KG FQ æECL KFGPV[HKMCVQTC K JVVRK UOCNN R _ GNUG ] GEJQ R HQPV EQNQT TGF 0C UMWVGM D úFW U[UVGOQYGIQ Y[U CPG CR[VCPKG PKG OQI Q QUVCè RTGVYQTQPG 2TGRTCUCO[ C CKUVPKC æ PKGFQIQFPQ èHQPV R _ _ GNUG ] GEJQ R HQPV EQNQT TGF 2TQUú URTÎDQYCè RQPQYPKGHQPV R _ _ 391
  • 22. Rozdział 11. 9. Utworzyć stronę HTML, na której zostaną umieszczone menu rozwijane umo liwiające wybranie typu adresów URL. SWGT[ 5'.'%6
  • 23. (41/ WTNAV[RGU 14'4 $; åV[RG #5% TGUWNV O[USNASWGT[ SWGT[ RWNNFQYP QRVKQP 9[DKGT LGFPæ åRQ[ELúQRVKQP YJKNG TQY O[USNAHGVEJACTTC[ TGUWNV å/;53.A#551% ] RWNNFQYP QRVKQP åXCNWG ] TQY= V[RGAKF ?_ ] TQY å= V[RG ?_QRVKQP P _ Listing 11.5. Skrypt pozwala u ytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy Zarządzanie adresami URL R D 0CYCV[VW CFTGUW 74.D KPRWV V[RG VGZV PCOG VKVNG UKG OCZNGPIVJ XCNWG !RJR KH KUUGV A2156= VKVNG ? GEJQ A2156= VKVNG ? ! R R D 1RKUD VGZVCTGC PCOG FGUETKRVKQP EQNU TQYU !RJR KH KUUGV A2156= FGUETKRVKQP ? GEJQ A2156= FGUETKRVKQP ? ! VGZVCTGC R R D -CVGIQTKC D UGNGEV PCOG V[RG !RJR GEJQ RWNNFQYP ! UGNGEV R R D -CVGIQTKC D UGNGEV PCOG V[RG !RJR GEJQ RWNNFQYP ! UGNGEV R R D -CVGIQTKC D UGNGEV PCOG V[RG !RJR GEJQ RWNNFQYP ! UGNGEV R HKGNFUGV FKX CNKIP EGPVGT KPRWV V[RG UWDOKV PCOG UWDOKV XCNWG 9[ NKL FKX HQTO -QPKGE HQTOWNCTC !RJR O[USNAENQUG COMPKúEKG RQ æEGPKC DCæ FCP[EJ KPENWFG KPENWFGUUVQRMCJVON Q æEGPKG UVQRMK *6/. ! 392
  • 24. Zarządzanie zawartością strony — przykład Formularz będzie zawierał trzy menu rozwijane, z których ka de będzie dysponowało listą dostępnych typów adresów URL pobranych z bazy danych. Ze względu na to, e zale y mi na wyświetleniu trzech kopii tego typu informacji, bardziej efektywnym będzie przypisanie wyników zmiennej ni wielokrotne wysyłanie zapytania do bazy danych. Na rysunku 11.8 pokazano kod źródłowy strony zawierającej menu rozwijane. 10. Utworzyć formularz na stronie HTML. HQTO CEVKQP !RJR GEJQ A5'48'4= 2*2A5'.( ? ! OGVJQF RQUV HKGNFUGV NGIGPF 9 EGNW RTGU CPKC CFTGUW å74. PCNG [ Y[RG PKè HQTOWNCT OQ PC åY[DTCè OCMU[OCNPKG MCVGIQTKGNGIGPF R D #FTGU 74.D KPRWV V[RG VGZV åPCOG WTN UKG OCZNGPIVJ Zarządzanie adresami URL åXCNWG !RJR KH KUUGV A2156= WTN ? Rysunek 11.8. Kod źródłowy strony HTML åGEJQ A2156= WTN ? ! DT dynamicznie generujący menu rozwijane å UOCNN å0KG FQ æECL KFGPV[HKMCVQTC åK JVVRK UOCNN R R D 0CYCV[VW CFTGUW 74.D KPRWV åV[RG VGZV PCOG VKVNG UKG åOCZNGPIVJ XCNWG !RJR KH å KUUGV A2156= VKVNG ? GEJQ å A2156= VKVNG ? ! R R D 1RKUD VGZVCTGC PCOG FGUETKRVKQP åEQNU TQYU !RJR KH å KUUGV A2156= FGUETKRVKQP ? GEJQ å A2156= FGUETKRVKQP ? ! VGZVCTGC R R D -CVGIQTKC D UGNGEV PCOG V[RG !RJR GEJQ RWNNFQYP ! UGNGEV R R D -CVGIQTKC D UGNGEV PCOG V[RG !RJR GEJQ RWNNFQYP ! UGNGEV R R D -CVGIQTKC D UGNGEV PCOG V[RG !RJR GEJQ RWNNFQYP ! UGNGEV R HKGNFUGV FKX CNKIP EGPVGT KPRWV V[RG UWDOKV åPCOG UWDOKV XCNWG 9[ NKL FKX HQTO 393
  • 25. Rozdział 11. Formularz (rysunek 11.9) pozwala wprowadzić do pól tekstowych kilka wartości i zapamiętać je. 11. Zakończyć skrypt PHP. !RJR O[USNAENQUG KPENWFG KPENWFGUUVQRMCJVON ! 12. Zapisać plik pod nazwą add_url.php, umieścić go na serwerze WWW i przetestować przy u yciu przeglądarki internetowej (rysunek 11.10). Rysunek 11.9. Formularz słu ący do dodawania adresów URL Zarządzanie adresami URL Rysunek 11.10. Po przesłaniu wprowadzonych danych zostanie wyświetlony komunikat i formularz będzie widoczny ponownie (z poprzednio wstawionymi wartościami) 394
  • 26. Zarządzanie zawartością strony — przykład Wskazówki W zastosowanym przykładzie mo na było te stworzyć kontrolki, które posłu yłyby W celu zablokowania mo liwości do wybierania maksymalnie trzech kategorii. stosowania znaczników języka HTML we wprowadzanych wartościach nale y Po uaktywnieniu funkcji Magic Quotes, posłu yć się funkcją UVTKRAVCIU . wartości wprowadzone do formularza przed Funkcja ta usuwa wszystkie znaczniki przesłaniem do przeglądarki muszą zostać nie tylko języka HTML, ale te PHP. przetworzone przez funkcję UVTKRUNCUJGU . Aby wyświetlić znaczniki języka HTML W przytoczonym przykładzie po poprawnym (w postaci, w jakiej występują w kodzie przesłaniu wstawionych wartości formularz źródłowym) bez ich uaktywniania nale y zostanie ponownie wyświetlony wraz skorzystać z funkcji JVONURGEKCNEJCTU z poprzednio wprowadzonymi danymi. i JVONGPVKVKGU . Aby to zmienić, nale y zrezygnować z wyświetlania formularza lub wyczyścić Funkcja O[USNAKPUGTVAKF jest powiązana zawartość zmiennej tablicowej A2156 z ka dą pojedynczą sesją (interakcja z bazą po udanym wykonaniu zapytania na bazie danych). Z tego te powodu nie nale y danych. się przejmować tym, e zwrócono nieprawidłową wartość nawet wtedy, Funkcja języka PHP o nazwie O[USNAKPUGTV Zarządzanie adresami URL gdy skrypt jednocześnie został wykonany jest odpowiednikiem funkcji .#56A+05'46A+ przez kilku ró nych u ytkowników. oferowanej przez serwer MySQL. W przypadku korzystania ze skryptów PHP i stron HTML mo na stosować rozwiązanie zapamiętujące, jakie pozycje zostały wybrane z menu rozwijanego, ale jest to związane z większą ilością kodu źródłowego, a ponadto w przytoczonym przykładzie niezbyt dobrze współpracuje ze zmienną RWNNFQYP. 395
  • 27. Rozdział 11. Przeglądanie wysłanych adresów URL Skrypt umo liwiający przeglądanie adresów URL będzie się składał z dwóch części — górnej i dolnej. W pierwszej z nich zostanie wyświetlone menu rozwijane z dostępnymi typami adresów, natomiast w drugiej wszystkie odnośniki dla wybranego typu. Gdy u ytkownik wyświetli stronę po raz pierwszy, wtedy nie zostanie wyświetlony aden adres URL. Po wybraniu przez niego typu i przesłaniu danych wprowadzonych do formularza, strona zostanie wyświetlona ponownie wraz z listą adresów URL dla wybranego typu (niezale nie od tego menu rozwijane w dalszym ciągu będzie widoczne). Zarządzanie adresami URL Nowe funkcje i metody Skrypt view_urls.php wprowadza dwa nowe rozwiązania. Jednym z nich jest rzutowanie, czyli narzucanie zmiennej konkretnego typu (całkowitoliczbowy, łańcuchowy itp.). Aby zrzutować zmienną, nale y przed jej nazwą w nawiasach określić ostateczny jej typ. Oto przykład: XCT V[R C EWEJQY[ XCT KPV XCT V[R EC MQYKVQNKEDQY[ Do dostępnych typów zmiennych (w niektórych przypadkach wiele określeń dotyczy tego samego typu) nale y zaliczyć takie typy jak KPV i KPVGIGT, DQQN i DQQNGCP, HNQCV, FQWDNG, TGCN, UVTKPI, CTTC[ i QDLGEV. Interpreter języka PHP w oparciu o początkową wartość rzutowanej zmiennej zmieni jej typ i przypisze jej odpowiadającą mu wartość logiczną (w celu uzyskania szczegółowych informacji z tym związanych nale y zajrzeć do dokumentacji języka PHP). Przy u yciu funkcji KPVXCN mo na te zmienić typ zmiennej na typ całkowitoliczbowy (co zostanie pokazane w kolejnym skrypcie). Z kolei poprzez umieszczenie wartości w znakach cudzysłowu mo na zamienić typ zmiennej na łańcuchowy. Drugim nowym rozwiązaniem zastosowanym w skrypcie jest funkcja NKUV . Funkcja pobiera wartości zmiennej tablicowej i przypisuje je oddzielnym zmiennym. Oto przykład: XCT CTTC[ ,CP 0QYCM NKUV HKTUV NCUV XCT Powy szym zmiennym HKTUV i NCUV zostaną przypisane odpowiednio wartości Jan i Nowak. Podobna funkcjonalność mo e być równie uzyskana przy u yciu funkcji GZVTCEV podobnej do funkcji NKUV . 396
  • 28. Zarządzanie zawartością strony — przykład Aby utworzyć skrypt view_urls.php, należy wykonać poniższe kroki: 1. W edytorze tekstu utworzyć nowy skrypt PHP (listing 11.6). !RJR .KUVKPI XKGYAWTNURJR RCIGAVKVNG 2TGINæFCPKG CFTGUÎY 74. KPENWFGAQPEG KPENWFGUPCINQYGMJVON TGSWKTGAQPEG O[USNAEQPPGEVRJR Rysunek 11.11. Menu rozwijane 2. Rozpocząć definiowanie formularza zawartego na stronie HTML. GEJQ FKX CNKIP EGPVGT HQTO OGVJQF IGV CEVKQP XKGYAWTNURJR UGNGEV PCOG V[RG QRVKQP XCNWG 07.. 9[DKGT åMCVGIQTKúQRVKQP Po pierwszym wyświetleniu strony HTML Zarządzanie adresami URL będzie na niej widoczny formularz składający się z menu rozwijanego i przycisku Wyślij (rysunek 11.11). W tym miejscu zawarto początek definicji formularza umieszczonego na stronie HTML. Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL, jak i z adresami dla konkretnej kategorii !RJR .KUVKPI XKGYAWTNURJR 5VTQPC RQYCNC Y[ YKGVNKè CFTGU[ 74. CRKUCPG Y DCKG FCP[EJ 7UVCYKGPKG V[VW W UVTQP[ K FQ æEGPKG PCI ÎYMC *6/. RCIGAVKVNG 2TGINæFCPKG CFTGUÎY 74. KPENWFGAQPEG KPENWFGUPCINQYGMJVON TGSWKTGAQPEG O[USNAEQPPGEVRJR 2Q æEGPKG DCæ FCP[EJ 6YQTGPKG HQTOWNCTC RQYCNCLæEGIQ W [VMQYPKMQYK Y[DTCPKG CFTGUW 74. MVÎT[ QUVCPKG Y[ YKGVNQP[ GEJQ FKX CNKIP EGPVGT HQTO OGVJQF IGV CEVKQP XKGYAWTNURJR UGNGEV PCOG V[RG QRVKQP XCNWG 07.. 9[DKGT MCVGIQTKúQRVKQP 397
  • 29. Rozdział 11. 3. Pobrać wszystkie dostępne typy adresów URL i dołączyć je do menu rozwijanego. SWGT[ 5'.'%6
  • 30. (41/ WTNAV[RGU å14'4 $; V[RG #5% TGUWNV O[USNASWGT[ SWGT[ YJKNG TQY O[USNAHGVEJACTTC[ å TGUWNV /;53.A07/ ] GEJQ QRVKQP XCNWG TQY=? åUVTKRUNCUJGU TQY=? QRVKQP _ Rysunek 11.12. Dynamicznie wygenerowany kod źródłowy formularza zawartego na stronie HTML Powy szy kod pobiera z tabeli WTNAV[RGU ka dy typ adresu URL i na podstawie zwróconych rekordów generuje kod źródłowy menu rozwijanego umieszczonego na stronie HTML (rysunek 11.12). Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL, Zarządzanie adresami URL jak i z adresami dla konkretnej kategorii — ciąg dalszy 2QDTCPKG K Y[ YKGVNGPKG FQUVúRP[EJ V[RÎY SWGT[ 5'.'%6
  • 31. (41/ WTNAV[RGU 14'4 $; V[RG #5% TGUWNV O[USNASWGT[ SWGT[ YJKNG TQY O[USNAHGVEJACTTC[ TGUWNV /;53.A07/ ] GEJQ QRVKQP XCNWG TQY=? UVTKRUNCUJGU TQY=? QRVKQP _ CMQ EGPKG HQTOWNCTC GEJQ UGNGEV KPRWV V[RG UWDOKV PCOG UWDOKV XCNWG 9[ NKL HQTO FKX 2QDTCPKG CFTGUÎY 74. QMTG NQPGIQ V[RW LG NK IQ RQFCPQ KH KUUGV A)'6= V[RG ? ] V KPVXCN A)'6= V[RG ? 5RTCYFGPKG E[ V[R LGUV EC MQYKVQNKEDQY[ 2QDTCPKG PCY[ CMVWCNPKG Y[DTCPGIQ V[RW SWGT[ 5'.'%6 V[RG (41/ WTNAV[RGU 9*'4' V[RGAKF V TGUWNV O[USNASWGT[ SWGT[ NKUV V[RG O[USNAHGVEJACTTC[ TGUWNV /;53.A07/ GEJQ JT FKX CNKIP EGPVGT D V[RG QFPQ PKMÎYD DT UOCNN 9U[UVMKG QFPQ PKMK DúFæ MQT[UVC [ Y CUPGIQ QMPC 0CLRKGTY QUVCPæ Y[ YKGVNQPG QUVCVPKQ FQFCPG QFPQ PKMKUOCNN FKX P 398
  • 32. Zarządzanie zawartością strony — przykład 4. Zakończyć definicję formularza Jeśli typ został ju wybrany (w takim umieszczonego na stronie HTML. przypadku zostanie dołączony do adresu GEJQ UGNGEV URL i udostępniony przy u yciu zmiennej KPRWV V[RG UWDOKV PCOG UWDOKV tablicowej A)'6), powiązane z nim adresy åXCNWG 9[ NKL URL powinny być pobrane. HQTO FKX Pierwsza operacja będzie polegała na zastosowaniu funkcji KPVXCN w celu sprawdzenia, czy wybrany typ, który zostanie 5. Sprawdzić, czy został wybrany typ adresu zastosowany w zapytaniu jest typem URL i czy pobrano informacje na jego temat. całkowitoliczbowym. W dalszej kolejności KH KUUGV A)'6= V[RG ? ] przy u yciu funkcji NKUV zostanie pobrana nazwa typu i wyświetlona na stronie w roli V KPVXCN A)'6= V[RG ? nagłówka. Więcej informacji na temat funkcji KPVXCN i NKUV mo na znaleźć w ramce SWGT[ 5'.'%6 V[RG (41/ WTNAV[RGU å9*'4' V[RGAKF V Nowe funkcje i metody lub w dokumentacji TGUWNV O[USNASWGT[ SWGT[ języka PHP. NKUV V[RG O[USNAHGVEJACTTC[ å TGUWNV /;53.A07/ 6. Zainicjalizować zmienną HKTUV i wysłać Zarządzanie adresami URL zapytanie do bazy danych. GEJQ JT FKX HKTUV 647' åCNKIP EGPVGT D V[RG SWGT[ 5'.'%6 WTN VKVNG FGUETKRVKQP åQFPQ PKMÎYD DT å(41/ WTNU #5 W WTNAVKVNGU #5 WV 9*'4' UOCNN 9U[UVMKG QFPQ PKMK DúFæ åWVVKVNGAKF WVKVNGAKF #0 WV[RGAKF V åMQT[UVC [ Y CUPGIQ QMPC 0CLRKGTY å#0 WCRRTQXGF ; 14'4 $; åQUVCPæ Y[ YKGVNQPG QUVCVPKQ FQFCPG åFCVGAUWDOKVVGF FGUE åQFPQ PKMKUOCNN FKX P TGUWNV O[USNASWGT[ SWGT[ Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL, jak i z adresami dla konkretnej kategorii — ciąg dalszy HKTUV 647' +PKELCNKCELC OKGPPGL 9[MQPCPKG CR[VCPKC PC DCKG FCP[EJ SWGT[ 5'.'%6 WTN VKVNG FGUETKRVKQP (41/ WTNU #5 W WTNAVKVNGU #5 WV 9*'4' WVVKVNGAKF WVKVNGAKF #0 WV[RGAKF V #0 WCRRTQXGF ; 14'4 $; FCVGAUWDOKVVGF FGUE TGUWNV O[USNASWGT[ SWGT[ 9[ YKGVNGPKG YU[UVMKEJ CFTGUÎY 74. YJKNG TQY O[USNAHGVEJACTTC[ TGUWNV /;53.A#551% ] ,G NK LGUV VQ RKGTYU[ TGMQTF YVGF[ QUVCPKG WVYQTQPC VCDGNC JGCFGT KH HKTUV ] GEJQ VCDNG DQTFGT YKFVJ EGNNURCEKPI EGNNRCFFKPI CNKIP EGPVGT VT VF CNKIP TKIJV YKFVJ HQPV UKG 1FPQ PKMHQPV VF VF CNKIP NGHV YKFVJ HQPV UKG 1RKUHQPV VF VT _ -QPKGE RúVNK YCTWPMQYGL G OKGPPæ HKTUV 399
  • 33. Rozdział 11. Zmienna HKTUV zostanie wykorzystana _ na dwa sposoby. Pierwszy z nich będzie GEJQ VT VF CNKIP TKIJV C polegał na tym, e zmienna wska e, e przed åJTGH JVVR] TQY= WTN ?_ wyświetleniem pierwszego rekordu na stronie åVCTIGV APGY UVTKRUNCUJGU HTML powinna zostać utworzona tabela. å TQY= VKVNG ? C VF W drugim przypadku zmienna posłu y VF CNKIP NGHV ] TQY do sprawdzenia, czy w wyniku wykonanego å= FGUETKRVKQP ?_VF zapytania zostały zwrócone jakiekolwiek VT P adresy URL. HKTUV (#.5' 7. Wyświetlić wszystkie zwrócone rekordy. _ YJKNG TQY O[USNAHGVEJACTTC[ å TGUWNV /;53.A#551% ] Pętla YJKNG zwróci wszystkie rekordy pobrane w wyniku wykonanego zapytania. KH HKTUV ] Przed wyświetleniem pierwszego rekordu GEJQ VCDNG DQTFGT YKFVJ do przeglądarki internetowej zostanie åEGNNURCEKPI EGNNRCFFKPI wysłana tabela i jej nagłówek åCNKIP EGPVGT VT (rysunek11.13). VF CNKIP TKIJV YKFVJ HQPV Zarządzanie adresami URL åUKG 1FPQ PKMHQPV VF VF CNKIP NGHV YKFVJ HQPV åUKG 1RKUHQPV VF VT Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategoriami adresów URL, jak i z adresami dla konkretnej kategorii — ciąg dalszy 9[ YKGVNC YU[UVMKG TGMQTF[ GEJQ VT VF CNKIP TKIJV C JTGH JVVR] TQY= WTN ?_ VCTIGV APGY UVTKRUNCUJGU TQY= VKVNG ? C VF VF CNKIP NGHV ] TQY= FGUETKRVKQP ?_VF VT P HKTUV (#.5' YTÎEQPQ LGFGP TGMQTF _ -QPKGE RúVNK YJKNG ,G NK PKG Y[ YKGVNQPQ CFPGIQ TGMQTFW KH HKTUV ] GEJQ FKX CNKIP EGPVGT #MVWCNPKG FNC Y[DTCPGL MCVGIQTKK PKG KUVPKGLG CFGP QFPQ PKMFKX _ GNUG ] GEJQ VCDNG COMPKúEKG VCDGNK _ _ -QPKGE KPVUVTWMELK YCTWPMQYGL A)'6= V[RG ? O[USNAENQUG COMPKúEKG RQ æEGPKC DCæ FCP[EJ KPENWFGAQPEG KPENWFGUUVQRMCJVON Q æEGPKG UVQRMK *6/. ! 400
  • 34. Zarządzanie zawartością strony — przykład 8. Wyświetlić komunikat, jeśli nie został zwrócony aden adres URL i zakończyć kod głównej instrukcji warunkowej. KH HKTUV ] GEJQ FKX CNKIP EGPVGT #MVWCNPKG FNC åY[DTCPGL MCVGIQTKK PKG KUVPKGLG CFGP åQFPQ PKMFKX _ GNUG ] GEJQ VCDNG _ _ Jeśli zostaną zwrócone jakiekolwiek wiersze, zmienna HKTUV znajdująca się wewnątrz pętli YJKNG przyjmie wartość (#.5'. A zatem, jeśli wartością zmiennej HKTUV nadal będzie 647', oznacza to, e nie zwrócono adnych Rysunek 11.13. Lista adresów URL rekordów i powinien zostać wyświetlony dla wybranego typu komunikat podobny do pokazanego na rysunku 11.14. W przeciwnym razie powinna Zarządzanie adresami URL zostać wygenerowana kompletna tabela. 9. Zakończyć kod źródłowy strony HTML. O[USNAENQUG KPENWFGAQPEG KPENWFGUUVQRMCJVON ! 10. Zapisać plik pod nazwą view_urls.php, umieścić go na serwerze WWW i przetestować przy u yciu przeglądarki internetowej. Wskazówki W rozdziale 12. zamieszczono skrypt demonstrujący, w jaki sposób wyświetlać Rysunek 11.14. Wygląd strony w przypadku, rekordy na wielu stronach (zapoznaj się gdy z wybranym typem nie powiązano jeszcze adnych adresów URL z zawartością ostatniego skryptu tego rozdziału o nazwie view_users.php). Przykłady zawarte w następnym rozdziale dotyczą równie operacji rejestracji i autoryzacji u ytkownika. Jeśli zale y Ci na ochronie zarządzanych informacji, obie operacje powinny zostać zastosowane w aplikacji omawianej w niniejszym rozdziale. W razie potrzeby w stosunku do pola FGUETKRVKQP mo na zastosować funkcję PNDT (skrót od słów newline to break). Funkcja zamieni ka dy znak nowego wiersza — tworzony poprzez wciśnięcie klawisza Return lub Enter — na znacznik języka (X)HTML postaci DT . 401