PHP i MySQL. Dynamiczne strony WWW. Szybki start

1,578 views

Published on

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 dostęp. Jeśli chcesz w krótkim czasie nauczyć się tworzyć takie aplikacje, znalazłeś właściwą książkę.

"PHP i MySQL. Dynamiczne strony WWW" nauczy Cię tworzenia dynamicznych 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 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ń.

Książka opisuje:

* 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.

Jeśli chcesz w szybko nauczyć się programowania dynamicznych serwisów internetowych, ta książka będzie Twoim intensywnym kursem. Już po przeczytaniu kilku rozdziałów będziesz w stanie pisać pierwsze programy w PHP korzystające z bazy MySQL, a po przeczytaniu całej książki poradzisz sobie również z tworzeniem bardziej rozbudowanych aplikacji.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,578
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PHP i MySQL. Dynamiczne strony WWW. Szybki start

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 29. Rozdział 11. 3. Pobrać wszystkie dostępne typy adresów URL i dołączyć je do menu rozwijanego. SWGT[ 5'.'%6
  30. 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. 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. 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. 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. 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

×