Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00164 009715 11027717 na godz. na dobę w sumie
PHP i MySQL. Dynamiczne strony WWW. Szybki start - książka
PHP i MySQL. Dynamiczne strony WWW. Szybki start - książka
Autor: Liczba stron: 580
Wydawca: Helion Język publikacji: polski
ISBN: 83-7361-157-6 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> php - programowanie
Porównaj ceny (książka, ebook, audiobook).

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

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREĎCI SPIS TREĎCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOĎCIACH O NOWOĎCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl PHP i MySQL. Dynamiczne strony WWW. Szybki start Autor: Larry Ullman T³umaczenie: Micha³ Dadan (rozdz. 1 – 7), Piotr Pilch (rozdz. 8 – 13, dod. A – D) ISBN: 83-7361-157-6 Tytu³ orygina³u: PHP and MySQL for Dynamic Web Sites VQPG Format: B5, stron: 580 Przyk³ady na ftp: 352 kB 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. Spis treści Spis treści Wprowadzenie 9 Czym są dynamiczne strony WWW?...................................................a.....10 Czym jest PHP?...................................................a......................................11 Co to jest MySQL?...................................................a.................................14 Co będzie Ci potrzebne ...................................................a..........................16 O tej książce ...................................................a...........................................16 Rozdział 1. Wprowadzenie do PHP 19 Podstawy składni...................................................a....................................20 Przesyłanie danych do przeglądarki internetowej .....................................23 PHP, HTML i „białe odstępy” ...................................................a...............26 Wstawianie komentarzy ...................................................a.........................31 Co to są zmienne? ...................................................a..................................34 Łańcuchy ...................................................a................................................37 S p i s t r e ś c i Liczby...................................................a...................................................a..41 Stałe...................................................a...................................................a.....45 Apostrof kontra cudzysłów ...................................................a....................48 Rozdział 2. Programowanie w PHP 51 Tworzenie formularza w języku HTML ..................................................52 Obsługa formularza HTML...................................................a....................56 Zarządzanie opcją Magic Quotes ...................................................a.............59 Wyrażenia warunkowe i operatory...................................................a.........61 Weryfikacja danych pochodzących z formularza......................................65 Ręczne przesyłanie wartości do skryptu ...................................................a69 Co to są tablice? ...................................................a.....................................74 Pętle for i while ...................................................a......................................92 5 Spis treści Rozdział 3. Tworzenie dynamicznych stron WWW 95 Wykorzystywanie plików zewnętrznych...................................................a96 Tworzenie i wywoływanie własnych funkcji .......................................... 105 Zasięg zmiennej...................................................a.................................... 115 Wyświetlanie i obsługa formularza przez jeden skrypt............................. 118 Wysyłanie poczty elektronicznej...................................................a............ 122 Nagłówki HTTP ...................................................a................................... 125 Tworzenie formularzy z pamięcią ...................................................a........ 130 Funkcje daty i czasu ...................................................a............................. 133 Rozdział 4. Wprowadzenie do SQL i MySQL 137 Projektowanie tabel ...................................................a.............................. 138 Korzystanie z monitora mysqla ...................................................a............ 142 Tworzenie baz danych i tabel...................................................a............... 146 Wprowadzanie rekordów ...................................................a..................... 149 Wybieranie danych...................................................a............................... 152 Wyrażenia warunkowe ...................................................a......................... 154 Stosowanie LIKE i NOT LIKE ...................................................a........... 158 Sortowanie wyników zapytania ...................................................a.............. 160 Ograniczanie wyników zapytania ...................................................a........ 163 Uaktualnianie danych ...................................................a........................... 165 Usuwanie danych ...................................................a................................. 167 Rozdział 5. Zaawansowany SQL i MySQL 169 Projekt bazy danych ...................................................a............................. 170 Złączenia ...................................................a.............................................. 185 Funkcje ...................................................a................................................. 189 Indeksy ...................................................a................................................. 201 Rozdział 6. PHP i MySQL 205 Tworzenie szablonu...................................................a.............................. 206 Łączenie się z MySQL-em i wybieranie bazy......................................... 211 Obsługa błędów...................................................a.................................... 215 Wykonywanie prostych zapytań ...................................................a............. 218 Odczytywanie wyników zapytania...................................................a....... 228 Bezpieczeństwo ...................................................a.................................... 232 Korzystanie z funkcji mysql_num_rows() .............................................. 238 Uaktualnianie rekordów w PHP ...................................................a............. 244 6 i c ś e r t s i p S Rozdział 7. Sesje i „ciasteczka” Spis treści 251 Posługiwanie się ciasteczkami ...................................................a............. 252 Sesje ...................................................a...................................................a.. 271 Sesje a „ciasteczka”...................................................a.............................. 287 Rozdział 8. Zabezpieczenia 295 Autoryzacja HTTP ...................................................a............................... 296 Walidacja formularza przy użyciu skryptu JavaScript ............................. 302 Wyrażenia regularne ...................................................a............................ 309 Zabezpieczenia bazy danych ...................................................a................ 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 ...................................................a.............. 335 Obsługa błędów serwera MySQL...................................................a........... 339 Zwiększanie wydajności aplikacji internetowych ................................... 342 Rozdział 10. Zagadnienia dodatkowe 347 Buforowanie wyjścia...................................................a............................ 348 Buforowanie stron HTML...................................................a.................... 355 Określanie typu przeglądarki internetowej............................................. 357 Skrypty PHP i JavaScript ...................................................a..................... 361 Zastosowanie pakietu PEAR ...................................................a................ 369 S p i s t r e ś c i Rozdział 11. Zarządzanie zawartością strony — przykład 377 Tworzenie szablonu...................................................a.............................. 378 Tworzenie zwykłych stron internetowych .............................................. 383 Zarządzanie adresami URL ...................................................a.................. 385 Zarządzanie plikami ...................................................a............................. 402 Rozdział 12. Rejestrowanie użytkowników — przykład 417 Tworzenie szablonów...................................................a........................... 418 Tworzenie skryptów konfiguracyjnych...................................................a 422 Tworzenie strony głównej ...................................................a.................... 428 Rejestracja ...................................................a............................................ 430 Logowanie i wylogowywanie się ...................................................a........... 440 Zarządzanie hasłami ...................................................a............................. 446 Część administracyjna aplikacji ...................................................a........... 457 7 Spis treści Rozdział 13. Sklep internetowy — przykład 473 Tworzenie bazy danych...................................................a........................ 474 Część administracyjna aplikacji ...................................................a........... 478 Tworzenie szablonu części publicznej aplikacji...................................... 491 Katalog produktów ...................................................a............................... 495 Koszyk zakupów ...................................................a.................................. 504 Dodatek A Instalacja 515 Instalacja pod systemem Windows...................................................a......... 516 Definiowanie uprawnień serwera MySQL.............................................. 522 Sprawdzanie poprawności instalacji ...................................................a... 528 Dodatek B Aplikacje dodatkowe 531 Narzędzie phpMyAdmin ...................................................a...................... 532 Systemy szablonów ...................................................a.............................. 533 Oprogramowanie obsługujące fora dyskusyjne....................................... 534 Zarządzanie zawartością...................................................a....................... 535 Handel elektroniczny...................................................a............................ 536 Wyszukiwarki...................................................a....................................... 537 Biblioteki kodów źródłowych ...................................................a.............. 538 Dodatek C 539 Odsyłacz Język PHP ...................................................a............................................ 540 Serwer MySQL ...................................................a.................................... 547 Dodatek D 553 Zasoby internetowe Język PHP ...................................................a............................................ 554 Serwer MySQL ...................................................a.................................... 557 Język SQL ...................................................a............................................ 559 Zabezpieczenia ...................................................a..................................... 560 Inne strony internetowe ...................................................a........................ 561 Skorowidz 565 i c ś e r t s i p S 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 niniejszpej książce będzie dotyczył zarządzania zawartością strpony. 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ęść aplikpacji, ale zostaną dołączone informacje pozwalające na jejp wykonanie. Chociaż w tym rozdziale skupimy się na konkretnym przykładzie, to jednak wspomnimy również o kilku nowych funkcjach i metodach. Do funkcji tych należy zaliczyć O[USNAKPUGTVAKF i NKUV . Wspomnimy także, w jaki sposób zrealizować operację umieszczania plikpów na serwerze. Z a r z ą d z a n i e z a w a r t o ś c i ą s t r o n y 377 Rysunek 11.1. Domyślny wygląd strony aplikacji omawianej w tym rozdziale 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, należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nową stronę HTML (listing 11.1).  1 6;2 JVON27$.+ 9  6 å:*6/.6TCPUKVKQPCN 0 JVVRYYYYQTI64 å4 ZJVON 6  åZJVONVTCPUKVKQPCNFVF JVONZONPUJVVRYYYYQTIZJVON åZONNCPIGPNCPIGP JGCF OGVCJVVRGSWKXEQPVGPVV[RGEQPVGPV åVGZVJVONEJCTUGVKUQ VKVNG !RJRGEJQRCIGAVKVNG! VKVNG 1. Napisać kod arkusza stylów CSS. UV[NGV[RGVGZVEUUOGFKCUETGGP DQF[]DCEMITQWPFEQNQTHHHHHH_ EQPVGPV] DCEMITQWPFEQNQTHHH RCFFKPIVQRRZRCFFKPITKIJVRZ åRCFFKPIDQVVQORZRCFFKPINGHVRZ åOCTIKPVQRRZOCTIKPTKIJVRZ åOCTIKPDQVVQORZOCTIKPNGHVRZ _ u n o l b a z s e i n e z r o w T 378 Zarządzanie zawartością strony — przykład Listing 11.1. Plik naglowek.html rozpoczyna się od kodu formatujgącego stronę HTML i zawiera wymagany kod arkusza stylów CSS  1 6;2 JVON27$.+ 9  6 :*6/.6TCPUKVKQPCN 0 JVVRYYYYQTI644 ZJVON 6 ZJVONVTCPUKVKQPCNFVF JVONZONPUJVVRYYYYQTIZJVONZONNCPIGPNCPIGP JGCF OGVCJVVRGSWKXEQPVGPVV[RGEQPVGPVVGZVJVONEJCTUGVKUQ VKVNG !RJRGEJQRCIGAVKVNG! VKVNG UV[NGV[RGVGZVEUUOGFKCUETGGP DQF[]DCEMITQWPFEQNQTHHHHHH_ EQPVGPV] DCEMITQWPFEQNQTHHH RCFFKPIVQRRZRCFFKPITKIJVRZRCFFKPIDQVVQORZRCFFKPINGHVRZ OCTIKPVQRRZOCTIKPTKIJVRZOCTIKPDQVVQORZOCTIKPNGHVRZ _ CPCXNKPMNKPM]EQNQTVGZVFGEQTCVKQPPQPG_ CPCXNKPMXKUKVGF]EQNQTVGZVFGEQTCVKQPPQPG_ CPCXNKPMJQXGT]EQNQTEEEEEEVGZVFGEQTCVKQPPQPG_ VF] HQPVHCOKN[8GTFCPC#TKCN*GNXGVKECUCPUUGTKHHQPVUKGRZ XGTVKECNCNKIPVQR _ VKVNG] HQPVUKGRZHQPVYGKIJVPQTOCNEQNQTHHHHHH OCTIKPVQRRZOCTIKPDQVVQORZOCTIKPNGHVRZ RCFFKPIVQRRZRCFFKPIDQVVQORZRCFFKPINGHVRZ _ UV[NG JGCF DQF[  VCDNGYKFVJDQTFGTEGNNURCEKPIEGNNRCFFKPI CNKIPEGPVGT VT VFEQNURCPDIEQNQT RENCUUVKVNG CTæFCPKGCYCTVQħEKæUVTQPR VF VT VT VFXCNKIPVQRPQYTCRPQYTCR D CJTGHKPFGZRJRENCUUPCXNKPM 5VTQPCIđÎYPCC DT CJTGHXKGYAWTNURJRENCUUPCXNKPM 2TGINæFCLCFTGU[74.C DT CJTGHCFFAWTNRJRENCUUPCXNKPM QFCLCFTGU74.C DT CJTGHXKGYAHKNGURJRENCUUPCXNKPM 2TGINæFCLRNKMKC DT CJTGHCFFAHKNGRJRENCUUPCXNKPM QFCLRNKMC D VF  VFXCNKIPVQRENCUUEQPVGPV .KUVKPIPCINQYGMJVON T w o r z e n i e s z a b l o n u 379 Rysunek 11.2. Wygląd strony, na której w celu wyróżnienia wierszy i kolumn tabeli zastosowano obwódki Rozdział 11. CPCXNKPMNKPM]EQNQT åVGZVFGEQTCVKQPPQPG_ CPCXNKPMXKUKVGF]EQNQT åVGZVFGEQTCVKQPPQPG_ CPCXNKPMJQXGT]EQNQTEEEEEE åVGZVFGEQTCVKQPPQPG_ VF] HQPVHCOKN[8GTFCPC#TKCN*GNXGVKEC åUCPUUGTKHHQPVUKGRZ XGTVKECNCNKIPVQR _ VKVNG] HQPVUKGRZHQPVYGKIJV åPQTOCNEQNQTHHHHHH OCTIKPVQRRZOCTIKPDQVVQORZ åOCTIKPNGHVRZ RCFFKPIVQRRZRCFFKPIDQVVQORZ åRCFFKPINGHVRZ _ UV[NG W przypadku omawianej aplikacji zostanie wykorzystany arkusz stylów CSS, który 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[ VCDNGYKFVJDQTFGT åEGNNURCEKPIEGNNRCFFKPI åCNKIPEGPVGT VT VFEQNURCPDIEQNQT åRENCUUVKVNG 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 u n o l b a z s e i n e z r o w T Rysunek 11.3. Struktura aplikacji internetowej, której katalogiem głównym jest katalog html Zarządzanie zawartością strony — przykład 4. Utworzyć sekcję powiązaną z odnośnikami i rozpocząć definiowanie komórek przechowujących zawartość strony. VFXCNKIPVQRPQYTCRPQYTCR D CJTGHKPFGZRJRENCUU åPCXNKPM 5VTQPCIđÎYPCC DT CJTGHXKGYAWTNURJR åENCUUPCXNKPM 2TGINæFCLCFTGU[ å74.C DT CJTGHCFFAWTNRJRENCUU åPCXNKPM å QFCLCFTGU74.C DT CJTGHXKGYAHKNGURJRENCUU åPCXNKPM 2TGINæFCLRNKMKC DT CJTGHCFFAHKNGRJR åENCUUPCXNKPM QFCLRNKMC D VF VFXCNKIPVQRENCUUEQPVGPV .KUVKPIPCINQYGMJVON 5. Zapisać plik pod nazwą naglowek.html i umieścić go na serwerze WWW (w katalogu includes). 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. T w o r z e n i e s z a b l o n u 381 Listing 11.2. Plik stopka.html zawiera pozostałe definicje wyglądu strony HTML .KUVKPIUVQRMCJVON -QPKGECYCTVQħEKUVTQP[ VF VT  VT VF PDURVF VFCNKIPEGPVGT EQR[ .CTT[ 7NNOCPCPF / +PUKIJVU+PEVF VT  VCDNG DQF[ JVON Rozdział 11. Aby utworzyć plik stopka.html, należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nową stronę HTML (listing 11.2). .KUVKPIUVQRMCJVON 2. Zakończyć kod środkowego wiersza tabeli. VF VT Cała zawartość strony będzie przechowywana w środkowym wierszu tabeli, którego definicja zaczyna się w pliku naglowek.html. Powyższy kod kończy definicję wiersza, po którym zostanie umieszczony trzeci i ostatni wiersz. 3. Zdefiniować ostatni wiersz i zakończyć tworzenie strony HTML. VT VF PDURVF VFCNKIPEGPVGT EQR[.CTT[  å7NNOCPCPF / +PUKIJVU+PEVF VT VCDNG DQF[ JVON 4. Zapisać plik pod nazwą stopka.html i umieścić go na serwerze WWW (w katalogu includes). u n o l b a z s e i n e z r o w T 382 Zarządzanie zawartością strony — przykład Listing 11.3. Główna strona aplikacji (w razie potrzeby należy umieścić na niej bardziej wartościowe informacje) Tworzenie zwykłych stron internetowych !RJR.KUVKPIKPFGZRJR )đÎYPCUVTQPCUGTYGTC999 7UVCYKGPKGV[VWđWUVTQP[ KFQđæEGPKGPCIđÎYMC*6/. RCIGAVKVNG CTæFCPKG CYCTVQħEKæUVTQP  KPENWFGAQPEG  KPENWFGUPCINQYGMJVON  ! R 5RCOURCOURCOURCOURCOURCO URCOURCOURCOURCOR R 5RCOURCOURCOURCOURCOURCO URCOURCOURCOURCOR !RJR QđæEGPKGUVQRMK*6/. KPENWFGAQPEG KPENWFGUUVQRMCJVON  ! Rysunek 11.4. Główna strona Zanim zajmiemy się najważniejszą częścią aplikacji internetowej (samym mechanizmem zarządzania zawartością stron) konieczne będzie stworzenie jeszcze dwóch stron HTML. Jedna z nich o nazwie index.php będzie spełniała rolę głównej strony aplikacji. Z kolei druga o nazwie mysql_connect.php jest skryptem, którego zadaniem jest połączenie z serwerem MySQL i wybranie wymaganej bazy danych (w celu uzyskania dodatkowych informacji na jej temat należy zapoznać się z zawartością ramki Schemat bazy danych zawartej w następnym podrozdziale). Aby utworzyć główną stronę, należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nowy skrypt PHP (listing 11.3). !RJR.KUVKPIKPFGZRJR 2. Określić tytuł strony i dołączyć plik nagłówka HTML. RCIGAVKVNG CTæFCPKGCYCTVQħEKæ åUVTQP  KPENWFGAQPEG KPENWFGUPCINQYGMJVON  ! 3. Wypełnić stronę tekstem. R 5RCOURCOURCOURCOURCOURCOURCO åURCOURCOURCOR R 5RCOURCOURCOURCOURCOURCOURCO åURCOURCOURCOR 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 T w o r z e n i e z w y k ł y c h s t r o n i n t e r n e t o w y c h Rozdział 11. Aby utworzyć skrypt mysql_connect.php, należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nowy skrypt PHP (listing 11.4). !RJR.KUVKPIO[USNAEQPPGEVRJR Skrypt jest taki sam jak jego poprzednie wersje wykorzystane w poprzednich rozdziałach (z wyjątkiem nazwy użytkownika i jego hasła oraz konfiguracji bazy danych). Skrypt może zostać stworzony od podstaw lub poprzez odpowiednią modyfikację poprzedniej wersji. 2. Określić konfigurację bazy danych w postaci stałych. FGHKPG $A75 4  WUGTPCOG  FGHKPG $A2#55914  RCUUYQTF  FGHKPG $A*156  NQECNJQUV  FGHKPG $A0#/  EQPVGPV  Mając na względzie kwestię zabezpieczeń użytkownik łączący się z serwerem MySQL powinien na potrzeby omawianej aplikacji 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 14FKG 0KGD[đQOQľNKYG åRQđæEGPKGUGTYGTGO/[53.  åO[USNAGTTQT   O[USNAUGNGEVAFD $A0#/ 14FKG å 0KGD[đQOQľNKYGY[DTCPKGDC[FCP[EJ ååO[USNAGTTQT   Aplikacja dysponuje podstawowym mechanizmem obsługi błędów realizowanym przez funkcję O[USNAGTTQT . Więcej informacji na ten temat zawarto w rozdziale 6. 4. Zakończyć skrypt PHP. ! h c y w o t e n r e t n i n o r t s h c y ł k y w z e i n e z r o w T Listing 11.4. Skrypt łączy z serwerem MySQL i wybiera bazę danych content !RJR.KUVKPIO[USNAEQPPGEVRJR 9RNKMWCYCTVQRCTCOGVT[ Y[OCICPGFQW[UMCPKCFQUVúRW FQDC[FCP[EJ2NKMLGUV Wľ[YCP[VCMľGRT[đæEGPKWUKú UGTYGTGO/[53.KY[DKGTCPKGO DC[FCP[EJ 7UVCYKGPKGLCMQUVCđ[EJ RCTCOGVTÎYWFKGNCLæE[EJFQUVúRW FQDC[FCP[EJ FGHKPG $A75 4  WUGTPCOG  FGHKPG $A2#55914   RCUUYQTF  FGHKPG $A*156  NQECNJQUV  FGHKPG $A0#/  EQPVGPV  0CYKæCPKGRQđæEGPKC UGTYGTGOKY[DTCPKGDC[FCP[EJ FDE O[USNAEQPPGEV $A*156  $A75 4 $A2#55914 14FKG  0KGD[đQOQľNKYGRQđæEGPKG UGTYGTGO/[53. O[USNAGTTQT   O[USNAUGNGEVAFD $A0#/ 14FKG  0KGD[đQOQľNKYGY[DTCPKGDC[ FCP[EJ O[USNAGTTQT   ! Wskazówki  W następnym rozdziale zostanie omówiony przykład, w którym zostaną wykorzystane bardziej zaawansowane metody obsługi błędów. Poza tym zamieszczono w nim zmodyfikowaną wersję skryptu mysql_connect.php. 5. Zapisać plik pod nazwą mysql_connect.php i umieścić go na serwerze WWW poza katalogiem głównym (rysunek 11.3).  W celu uzyskania dodatkowych informacji na temat praw dostępu do serwera MySQL 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 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 Z a r z ą d z a n i e a d r e s a m i U R L Rozdział 11. Schemat bazy danych W niniejszym rozdziale zastosowano bazę danych o namzwie content, którą utworzono w rozdziale 5. W tamtym rozdziale zdefiniowano trzym znormalizowane tabele na potrzeby obsługi adresów URL (złożona struktura pozwala na zaklamsyfikowanie adresów URL do wielu typów). W tym rozdziale zostanie stworzonam tabela WRNQCFU wykorzystywana przy zarządzaniu plikami. Całkowita struktura bazy mdanych może zostać ponownie zdefiniowana z wykorzystaniem poniższych poleceń:  4 #6 6#$. WRNQCFU WRNQCFAKFKPV  705+)0 01607..#761A+0 4 / 06 åHKNGAPCOG8#4 *#4  01607..HKNGAUKG+06  705+)0 01607..HKNGAV[RG å8#4 *#4  01607..FGUETKRVKQP8#4 *#4   (#7.607..WRNQCFAFCVG å #6 6+/ 01607..24+/#4;- ; WRNQCFAKF - ;HKNGAPCOG HKNGAPCOG   4 #6 6#$. WTNAVKVNGU VKVNGAKF5/#..+06  705+)0 01607..#761A+0 4 / 06 åWTN8#4 *#4  01607..VKVNG8#4 *#4  01607..FGUETKRVKQP6+0;6 :6016 å07..24+/#4;- ; VKVNGAKF 70+37 - ;WTN WTN   4 #6 6#$. WTNAV[RGU V[RGAKF6+0;+06  705+)0 01607..#761A+0 4 / 06 åV[RG8#4 *#4  01607..24+/#4;- ; V[RGAKF 70+37 - ;V[RG V[RG   4 #6 6#$. WTNU WTNAKF5/#..+06  705+)0 01607..#761A+0 4 / 06 åVKVNGAKF5/#..+06  705+)0 01607..V[RGAKF6+0;+06  705+)0 01607.. åCRRTQXGF *#4   (#7.6 0 FCVGAUWDOKVVGF6+/ 56#/2  01607..24+/#4; å- ; WTNAKF - ;VKVNGAKF VKVNGAKF - ;V[RGAKF V[RGAKF - ; åFCVGAUWDOKVVGF FCVGAUWDOKVVGF  W celu sprawdzenia struktury bazy danych zawsze możmna użyć poniższych poleceń języka SQL (rysunek 11.5). 5*196#$. 5  5 4+$ nazwa_tabeli Rysunek 11.5. Sprawdzenie struktury bazy danych 386 L R U i m a s e r d a e i n a z d ą z r a Z Aby utworzyć skrypt add_url.php, należy wykonać następujące kroki: 1. W edytorze tekstu utworzyć nowy skrypt PHP (listing 11.5). !RJR.KUVKPICFFAWTNRJR RCIGAVKVNG QFCYCPKGCFTGUÎY74.  KPENWFG KPENWFGUPCINQYGMJVON  TGSWKTGAQPEG O[USNAEQPPGEVRJR  2. Sprawdzić, czy formularz został wypełniony i zastosować funkcję GUECRGAFCVC . KH KUUGV A2156= UWDOKV ? ] å1DUđWICHQTOWNCTC HWPEVKQPGUECRGAFCVC FCVC ] INQDCNFDE KH KPKAIGV OCIKEASWQVGUAIRE ] FCVCUVTKRUNCUJGU FCVC  _ TGVWTPO[USNATGCNAGUECRGAUVTKPI å VTKO FCVC FDE  _ Zarządzanie zawartością strony — przykład Podobnie jak w poprzednich rozdziałach, funkcja GUECRGAFCVC gwarantuje poprawność przesyłanych danych niezależnie od tego, czy uaktywniono funkcję Magic Quotes, czy nie. 3. Przeprowadzić walidację wprowadzonego adresu URL i jego tytułu. KH GORV[ A2156= WTN ? ] WGUECRGAFCVC A2156= WTN ?  _GNUG] W(#.5  GEJQ R HQPVEQNQTTGF 2TQUúRQFCè åCFTGU74.HQPV R _ KH GORV[ A2156= VKVNG ? ] VGUECRGAFCVC A2156= VKVNG ?  _GNUG] V(#.5  GEJQ R HQPVEQNQTTGF å2TQUúRQFCèPCYúCFTGUW å74.VKVNGHQPV R _ Listing 11.5. Skrypt pozwala użytkownikom przesyłać adresy URL do bazgy danych !RJR.KUVKPICFFAWTNRJR 5VTQPCRQYCNCWľ[VMQYPKMQOFQFCèCFTGU[74.FQDC[FCP[EJ 7UVCYKGPKGV[VWđWUVTQP[KFQđæEGPKGPCIđÎYMC*6/. RCIGAVKVNG QFCYCPKGCFTGUÎY74.  KPENWFG KPENWFGUPCINQYGMJVON  TGSWKTGAQPEG O[USNAEQPPGEVRJR 2QđæEGPKGDCæFCP[EJ KH KUUGV A2156= UWDOKV ? ]1DUđWICHQTOWNCTC (WPMELCWUWYCLæECPCM  KQDEKPCLæECFCPGYRTQYCFQPGYHQTOWNCTW HWPEVKQPGUECRGAFCVC FCVC ] INQDCNFDE KH KPKAIGV OCIKEASWQVGUAIRE ] FCVCUVTKRUNCUJGU FCVC  _ TGVWTPO[USNATGCNAGUECRGAUVTKPI VTKO FCVC FDE  _-QPKGEUGMELKHWPMELKGUECRGAFCVC  387 Z a r z ą d z a n i e a d r e s a m i U R L 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 ? ] FGUECRGAFCVC å A2156= FGUETKRVKQP ?  _GNUG] F _ Ze względu na to, że w polu FGUETKRVKQP tabeli WTNAVKVNGU nie trzeba wstawiać wartości, 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. Rysunek 11.6. Jeśli użytkownik nie poda adresu URL lub jego tytułu, zostanie wyświetlony komunikat błędu Listing 11.5. Skrypt pozwala użytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy 5RTCYFGPKGCFTGUW74. KH GORV[ A2156= WTN ? ] WGUECRGAFCVC A2156= WTN ?  _GNUG] W(#.5  GEJQ R HQPVEQNQTTGF 2TQUúRQFCèCFTGU74.HQPV R _ 5RTCYFGPKGPCY[CFTGUW74. KH GORV[ A2156= VKVNG ? ] VGUECRGAFCVC A2156= VKVNG ?  _GNUG] V(#.5  GEJQ R HQPVEQNQTTGF 2TQUúRQFCèPCYúCFTGUW74.VKVNGHQPV R _ 5RTCYFGPKGYCTVQħEKRQNCFGUETKRVKQP PKGLGUVY[OCICPG  KH GORV[ A2156= FGUETKRVKQP ? ] FGUECRGAFCVC A2156= FGUETKRVKQP ?  _GNUG] F _ 388 L R U i m a s e r d a e i n a z d ą z r a Z Zarządzanie zawartością strony — przykład 5. Sprawdzić wybraną kategorię. KH A2156= V[RG ?  14 å A2156= V[RG ?  14 å A2156= V[RG ?   ] V[RG647  _GNUG] V[RG(#.5  GEJQ R HQPVEQNQTTGF å2TQUúRQFCèEQPCLOPKGLLGFPæ å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ę, że użytkownik wybierze kategorię przy użyciu pierwszego menu rozwijanego (V[RG). Niezależnie od tego instrukcja warunkowa sprawdzi, czy skorzystano z przynajmniej jednego menu rozwijanego. Jeśli tak nie będzie, zostanie wyświetlony komunikat błędu (rysunek 11.7). Rysunek 11.7. Użytkownik musi wybrać co najmniej jedną kategorię dla wprowadzonego adresu URL Listing 11.5. Skrypt pozwala użytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy 5RTCYFGPKGMCVGIQTKK KH A2156= V[RG ?  14 A2156= V[RG ?  14 A2156= V[RG ?   ] V[RG647  _GNUG] V[RG(#.5  GEJQ R HQPVEQNQTTGF 2TQUúRQFCèEQPCLOPKGLLGFPæMCVGIQTKúHQPV R _ KH WVV[RG ],GħNKYU[UVMQLGUVYRQTæFMW  QFCYCPKGCFTGUW74.FQVCDGNKWTNAVKVNGU SWGT[+05 46+061WTNAVKVNGU WTNVKVNGFGUETKRVKQP 8#.7 5  W  V  F  TGUWNV O[USNASWGT[ SWGT[ 9[MQPCPKGCR[VCPKC VKF O[USNAKPUGTVAKF 2QDTCPKGKFGPV[HKMCVQTCV[VWđW  KH VKF  ],GħNKQUVCđQY[MQPCPGRTCYKFđQYQ 6YQTGPKGCR[VCPKC SWGT[ +05 46+061WTNU VKVNGAKFV[RGAKFCRRTQXGFFCVGAUWDOKVVGF 8#.7 5  KH A2156= V[RG ?  ] SWGT[ VKF]A2156= V[RG ?_ ; 019 _ 389 Z a r z ą d z a n i e a d r e s a m i U R L Rozdział 11. 6. Dodać adres URL do tabeli WTNAVKVNGU. 7. Utworzyć główne zapytanie. KH WVV[RG ]  QFCYCPKGCFTGUW74.FQVCDGNK åWTNAVKVNGU SWGT[+05 46+061WTNAVKVNGU WTN åVKVNGFGUETKRVKQP 8#.7 5 W  å V  F  TGUWNV O[USNASWGT[ SWGT[  VKF O[USNAKPUGTVAKF  Ze względu na strukturę bazy danych, adres URL musi zostać dodany do tabeli WTNAVKVNGU zanim będzie możliwa modyfikacja tabeli WTNU. Powyższe zapytanie doda adres URL, a następnie przy użyciu funkcji O[USN AKPUGTVAKF zwróci wartość pola VKVNGAKF (klucz główny tabeli o automatycznie zwiększanej wartości). Uzyskana wartość może następnie zostać wykorzystana w drugim zapytaniu (krok 7.). KH VKF  ] SWGT[ +05 46+061WTNU å VKVNGAKFV[RGAKFCRRTQXGF åFCVGAUWDOKVVGF 8#.7 5  KH A2156= V[RG ?  ] SWGT[ VKF å]A2156= V[RG ?_ ;  å019  _ KH A2156= V[RG ?  ] SWGT[ VKF]A2156 å= V[RG ?_ ; 019  _ KH A2156= V[RG ?  ] SWGT[ VKF å]A2156= V[RG ?_ ;  å019  _ SWGT[UWDUVT SWGT[  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úEKGQUVCVPKGIQRTGEKPMCKURCELK 9[MQPCPKGCR[VCPKC TGUWNV O[USNASWGT[ SWGT[  KH TGUWNV ] GEJQ R D KúMWLGO[CRTGUđCPKGFCP[EJD R  A2156CTTC[  _GNUG],GħNKY[UVæRKæRTQDNGO[ GEJQ R HQPVEQNQTTGF 0CUMWVGMDđúFWU[UVGOQYGIQY[UđCPGCR[VCPKGPKGOQIđQ QUVCèRTGVYQTQPG2TGRTCUCO[CCKUVPKCđæPKGFQIQFPQħèHQPV R  _ _GNUG],GħNKY[UVæRKæRTQDNGO[ GEJQ R HQPVEQNQTTGF 0CUMWVGMDđúFWU[UVGOQYGIQY[UđCPGCR[VCPKG PKGOQIđQQUVCèRTGVYQTQPG2TGRTCUCO[CCKUVPKCđæPKGFQIQFPQħèHQPV R  _ 390 L R U i m a s e r d a e i n a z d ą z r a Z Jeśli zostanie pobrana wartość zmiennej VKF, bez obaw można przejść do wykonywania głównego zapytania (dodanie rekordu do tabeli WTNU). Aby tak postąpić, na początku należy zdefiniować zapytanie i przypisać jego początkową część zmiennej SWGT[. Po sprawdzeniu, czy wybrano kategorie (przy użyciu menu rozwijanych), dla każdej z nich dodano rekord przy użyciu zapytania. Na końcu w celu usunięcia z zapytania ostatnich dwóch znaków (przecinek i znak spacji) zostanie użyta funkcja UWDUVT . Jeśli wystąpią problemy ze składnią zapytania należy nakazać interpreterowi języka PHP wyświetlenie wartości zmiennej SWGT[, dzięki czemu można stwierdzić, co będzie przetwarzane przez serwer MySQL. Zarządzanie zawartością strony — przykład 8. Wykonać zapytanie, wprowadzić komunikaty informujące o jego wyniku i uzupełnić instrukcje warunkowe. TGUWNV O[USNASWGT[ SWGT[  KH TGUWNV ] GEJQ R D KúMWLGO[C åRTGUđCPKGFCP[EJD R  _GNUG],GħNKY[UVæRKæRTQDNGO[ GEJQ R HQPVEQNQTTGF å0CUMWVGMDđúFWU[UVGOQYGIQ åY[UđCPGCR[VCPKGPKGOQIđQ åQUVCèRTGVYQTQPG å2TGRTCUCO[CCKUVPKCđæ åPKGFQIQFPQħèHQPV R  _ Powyższe instrukcje warunkowe wyświetlą odpowiednie komunikaty związane z przesyłanymi danymi. Listing 11.5. Skrypt pozwala użytkownikom przesyłać adresy URL do bazy danych — ciąg dalszy _GNUG],GħNKLGFPCQRGTCELKURTCYFGPKCFCP[EJUKúPKGRQYKGFKG GEJQ R HQPVEQNQTTGF 2TQUúURTÎDQYCèRQPQYPKGHQPV R  _ _-QPKGEKPUVTWMELKYCTWPMQYGLQDUđWIWLæEGLFCPGYRTQYCFCPGYHQTOWNCTW (QTOWNCTY[ħYKGVNCLæE[FCPG 6YQTGPKGOGPWTQYKLCPGIQ SWGT[5 . 6 (41/WTNAV[RGU14 4$;V[RG#5  TGUWNV O[USNASWGT[ SWGT[  RWNNFQYP QRVKQP 9[DKGTLGFPæRQ[ELúQRVKQP  YJKNG TQYO[USNAHGVEJACTTC[ TGUWNV/;53.A#551 ] RWNNFQYPQRVKQPXCNWG ]TQY= V[RGAKF ?_  ]TQY= V[RG ?_QRVKQP P _ ! HQTOCEVKQP!RJRGEJQA5 48 4= 2*2A5 .( ?! OGVJQFRQUV HKGNFUGV NGIGPF 9EGNWRTGUđCPKCCFTGUW74.PCNGľ[Y[RGđPKèHQTOWNCT  OQľPCY[DTCèOCMU[OCNPKGMCVGIQTKG NGIGPF R D #FTGU74.D KPRWVV[RGVGZVPCOGWTNUKGOCZNGPIVJ XCNWG!RJRKH KUUGV A2156= WTN ? GEJQA2156= WTN ?!  DT  UOCNN 0KGFQđæECLKFGPV[HKMCVQTCK JVVRK UOCNN R _GNUG] GEJQ R HQPVEQNQTTGF 0CUMWVGMDđúFWU[UVGOQYGIQY[UđCPGCR[VCPKG PKGOQIđQQUVCèRTGVYQTQPG2TGRTCUCO[CCKUVPKCđæPKGFQIQFPQħèHQPV R  _ _GNUG] GEJQ R HQPVEQNQTTGF 2TQUúURTÎDQYCèRQPQYPKGHQPV R  _ _ 391 Z a r z ą d z a n i e a d r e s a m i U R L 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[RGU14 4$; åV[RG#5  TGUWNV O[USNASWGT[ SWGT[  RWNNFQYP QRVKQP 9[DKGTLGFPæ åRQ[ELúQRVKQP  YJKNG TQYO[USNAHGVEJACTTC[ TGUWNV å/;53.A#551 ] RWNNFQYPQRVKQP å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 R D 0CYCV[VWđCFTGUW74.D KPRWVV[RGVGZVPCOGVKVNGUKG OCZNGPIVJXCNWG!RJRKH KUUGV A2156= VKVNG ? GEJQA2156= VKVNG ?!  R  R D 1RKUD VGZVCTGCPCOGFGUETKRVKQPEQNUTQYU !RJRKH  KUUGV A2156= FGUETKRVKQP ? GEJQA2156= FGUETKRVKQP ?! VGZVCTGC R  R D -CVGIQTKCD UGNGEVPCOGV[RG !RJRGEJQRWNNFQYP! UGNGEV R  R D -CVGIQTKCD UGNGEVPCOGV[RG !RJRGEJQRWNNFQYP! UGNGEV R  R D -CVGIQTKCD UGNGEVPCOGV[RG !RJRGEJQRWNNFQYP! UGNGEV R  HKGNFUGV  FKXCNKIPEGPVGT KPRWVV[RGUWDOKVPCOGUWDOKVXCNWG9[ħNKL FKX  HQTO -QPKGEHQTOWNCTC !RJR O[USNAENQUG  COMPKúEKGRQđæEGPKCDCæFCP[EJ KPENWFG KPENWFGUUVQRMCJVON  QđæEGPKGUVQRMK*6/. ! 392 L R U i m a s e r d a e i n a z d ą z r a Z Rysunek 11.8. Kod źródłowy strony HTML dynamicznie generujący menu rozwijane 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. HQTOCEVKQP!RJRGEJQ A5 48 4= 2*2A5 .( ?! OGVJQFRQUV HKGNFUGV NGIGPF 9EGNWRTGUđCPKCCFTGUW å74.PCNGľ[Y[RGđPKèHQTOWNCT OQľPC åY[DTCèOCMU[OCNPKGMCVGIQTKG NGIGPF R D #FTGU74.D KPRWVV[RGVGZV åPCOGWTNUKGOCZNGPIVJ åXCNWG!RJRKH KUUGV A2156= WTN ? åGEJQA2156= WTN ?!  DT å UOCNN å0KGFQđæECLKFGPV[HKMCVQTC åK JVVRK UOCNN R R D 0CYCV[VWđCFTGUW74.D KPRWV åV[RGVGZVPCOGVKVNGUKG åOCZNGPIVJXCNWG!RJRKH å KUUGV A2156= VKVNG ? GEJQ åA2156= VKVNG ?!  R R D 1RKUD VGZVCTGCPCOGFGUETKRVKQP åEQNUTQYU !RJRKH å KUUGV A2156= FGUETKRVKQP ? GEJQ åA2156= FGUETKRVKQP ?! VGZVCTGC R R D -CVGIQTKCD UGNGEVPCOGV[RG !RJRGEJQRWNNFQYP! UGNGEV R R D -CVGIQTKCD UGNGEVPCOGV[RG !RJRGEJQRWNNFQYP! UGNGEV R R D -CVGIQTKCD UGNGEVPCOGV[RG !RJRGEJQRWNNFQYP! UGNGEV R HKGNFUGV FKXCNKIPEGPVGT KPRWVV[RGUWDOKV åPCOGUWDOKVXCNWG9[ħNKL FKX HQTO 393 Z a r z ą d z a n i e a d r e s a m i U R L 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). 394 Rysunek 11.9. Formularz służący do dodawania adresów URL Rysunek 11.10. Po przesłaniu wprowadzonych danych zostanie wyświetlony komunikat i formularz będzie widoczny ponownie (z poprzednio wstawionymi wartościami) L R U i m a s e r d a e i n a z d ą z r a Z Zarządzanie zawartością strony — przykład  W zastosowanym przykładzie można było też stworzyć kontrolki, które posłużyłyby do wybierania maksymalnie trzech kategorii.  Po uaktywnieniu funkcji Magic Quotes, wartości wprowadzone do formularza przed przesłaniem do przeglądarki muszą zostać przetworzone przez funkcję UVTKRUNCUJGU .  W przytoczonym przykładzie po poprawnym przesłaniu wstawionych wartości formularz zostanie ponownie wyświetlony wraz z poprzednio wprowadzonymi danymi. Aby to zmienić, należy zrezygnować z wyświetlania formularza lub wyczyścić zawartość zmiennej tablicowej A2156 po udanym wykonaniu zapytania na bazie danych.  Funkcja języka PHP o nazwie O[USNAKPUGTV jest odpowiednikiem funkcji .#56A+05 46A+ oferowanej przez serwer MySQL. Wskazówki  W celu zablokowania możliwości stosowania znaczników języka HTML we wprowadzanych wartościach należy posłużyć się funkcją UVTKRAVCIU . Funkcja ta usuwa wszystkie znaczniki nie tylko języka HTML, ale też PHP.  Aby wyświetlić znaczniki języka HTML (w postaci, w jakiej występują w kodzie źródłowym) bez ich uaktywniania należy skorzystać z funkcji JVONURGEKCNEJCTU i JVONGPVKVKGU .  Funkcja O[USNAKPUGTVAKF jest powiązana z każdą pojedynczą sesją (interakcja z bazą danych). Z tego też powodu nie należy się przejmować tym, że zwrócono nieprawidłową wartość nawet wtedy, gdy skrypt jednocześnie został wykonany przez kilku różnych użytkowników.  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 Z a r z ą d z a n i e a d r e s a m i U R L 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). Nowe funkcje i metody Skrypt view_urls.php wprowadza dwa nowe rozwiązania. Jednym z nich jestm rzutowanie, czyli narzucanie zmiennej konkretnego typu (całkowitmoliczbowy, łańcuchowy itp.). Aby zrzutować zmienną, należy przed jej nazwą w nawiamsach określić ostateczny jej typ. Oto przykład: XCTV[RđCēEWEJQY[ XCT KPV XCTV[RECđMQYKVQNKEDQY[ Do dostępnych typów zmiennych (w niektórych przypadkmach 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śmć rzutowanej zmiennej zmieni jej typ i przypisze jej modpowiadającą mu wartość logiczną (w celu uzyskania szczegółowych informacji z tym zwimą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 komlejnym skrypcie). Z kolei poprzez umieszczenie wartości w znakach cudzysłowu można zammienić typ zmiennej na łańcuchowy. Drugim nowym rozwiązaniem zastosowanym w skrypcie jemst funkcja NKUV . Funkcja pobiera wartości zmiennej tablicowej i przypisuje jme oddzielnym zmiennym. Oto przykład: XCTCTTC[ ,CP0QYCM  NKUV HKTUVNCUV XCT Powyższym zmiennym HKTUV i NCUV zostaną przypisane odpowiednio wartości Jan i Nowak. Podobna funkcjonalność może być również uzyskana przy umżyciu funkcji GZVTCEV podobnej do funkcji NKUV . 396 L R U i m a s e r d a e i n a z d ą z r a Z Rysunek 11.11. Menu rozwijane 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.KUVKPIXKGYAWTNURJR RCIGAVKVNG 2TGINæFCPKGCFTGUÎY74.  KPENWFGAQPEG KPENWFGUPCINQYGMJVON  TGSWKTGAQPEG O[USNAEQPPGEVRJR  2. Rozpocząć definiowanie formularza zawartego na stronie HTML. GEJQ FKXCNKIPEGPVGT HQTOOGVJQFIGVCEVKQPXKGYAWTNURJR UGNGEVPCOGV[RG QRVKQPXCNWG07.. 9[DKGT åMCVGIQTKúQRVKQP  Po pierwszym wyświetleniu strony HTML 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 kategorgiami adresów URL, jak i z adresami dla konkretnej kategorii !RJR.KUVKPIXKGYAWTNURJR 5VTQPCRQYCNCY[ħYKGVNKèCFTGU[74.CRKUCPGYDCKGFCP[EJ 7UVCYKGPKGV[VWđWUVTQP[KFQđæEGPKGPCIđÎYMC*6/. RCIGAVKVNG 2TGINæFCPKGCFTGUÎY74.  KPENWFGAQPEG KPENWFGUPCINQYGMJVON  TGSWKTGAQPEG O[USNAEQPPGEVRJR 2QđæEGPKGDCæFCP[EJ 6YQTGPKGHQTOWNCTCRQYCNCLæEGIQWľ[VMQYPKMQYKY[DTCPKGCFTGUW74. MVÎT[QUVCPKGY[ħYKGVNQP[ GEJQ FKXCNKIPEGPVGT HQTOOGVJQFIGVCEVKQPXKGYAWTNURJR UGNGEVPCOGV[RG QRVKQPXCNWG07.. 9[DKGTMCVGIQTKúQRVKQP   397 Z a r z ą d z a n i e a d r e s a m i U R L 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  TGUWNVO[USNASWGT[ SWGT[  YJKNG TQYO[USNAHGVEJACTTC[ å TGUWNV/;53.A07/ ] GEJQ QRVKQPXCNWG TQY=?   åUVTKRUNCUJGU TQY=?  QRVKQP  _ 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). Rysunek 11.12. Dynamicznie wygenerowany kod źródłowy formularza zawartego na stronie HTML Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategorgiami adresów URL, jak i z adresami dla konkretnej kategorii — ciąg dalszy 2QDTCPKGKY[ħYKGVNGPKGFQUVúRP[EJV[RÎY SWGT[ 5 . 6 (41/WTNAV[RGU14 4$;V[RG#5  TGUWNVO[USNASWGT[ SWGT[  YJKNG TQYO[USNAHGVEJACTTC[ TGUWNV/;53.A07/ ] GEJQ QRVKQPXCNWG TQY=?  UVTKRUNCUJGU TQY=?  QRVKQP   _   CMQēEGPKGHQTOWNCTC GEJQ UGNGEV KPRWVV[RGUWDOKVPCOGUWDOKVXCNWG9[ħNKL HQTO FKX    2QDTCPKGCFTGUÎY74.QMTGħNQPGIQV[RW LGħNKIQRQFCPQ  KH KUUGV A) 6= V[RG ? ]  VKPVXCN A) 6= V[RG ? 5RTCYFGPKGE[V[RLGUVECđMQYKVQNKEDQY[  2QDTCPKGPCY[CMVWCNPKGY[DTCPGIQV[RW SWGT[5 . 6V[RG(41/WTNAV[RGU9* 4 V[RGAKFV TGUWNVO[USNASWGT[ SWGT[  NKUV V[RG O[USNAHGVEJACTTC[ TGUWNV/;53.A07/   GEJQJT FKXCNKIP EGPVGT  D V[RGQFPQħPKMÎYD DT UOCNN 9U[UVMKGQFPQħPKMKDúFæMQT[UVCđ[YđCUPGIQQMPC0CLRKGTY QUVCPæY[ħYKGVNQPGQUVCVPKQFQFCPGQFPQħPKMK UOCNN FKX P 398 L R U i m a s e r d a e i n a z d ą z r a Z 4. Zakończyć definicję formularza umieszczonego na stronie HTML. GEJQ UGNGEV KPRWVV[RGUWDOKVPCOGUWDOKV åXCNWG9[ħNKL HQTO FKX  5. Sprawdzić, czy został wybrany typ adresu URL i czy pobrano informacje na jego temat. KH KUUGV A) 6= V[RG ? ] VKPVXCN A) 6= V[RG ?  SWGT[5 . 6V[RG(41/WTNAV[RGU å9* 4 V[RGAKFV TGUWNVO[USNASWGT[ SWGT[  NKUV V[RG O[USNAHGVEJACTTC[ å TGUWNV/;53.A07/  GEJQJT FKX åCNKIP EGPVGT  D V[RG åQFPQħPKMÎYD DT UOCNN 9U[UVMKGQFPQħPKMKDúFæ åMQT[UVCđ[YđCUPGIQQMPC0CLRKGTY åQUVCPæY[ħYKGVNQPGQUVCVPKQFQFCPG åQFPQħPKMK UOCNN FKX P Zarządzanie zawartością strony — przykład Jeśli typ został już wybrany (w takim przypadku zostanie dołączony do adresu URL i udostępniony przy użyciu zmiennej tablicowej A) 6), powiązane z nim adresy URL powinny być pobrane. Pierwsza operacja będzie polegała na zastosowaniu funkcji KPVXCN w celu sprawdzenia, czy wybrany typ, który zostanie zastosowany w zapytaniu jest typem całkowitoliczbowym. W dalszej kolejności przy użyciu funkcji NKUV zostanie pobrana nazwa typu i wyświetlona na stronie w roli nagłówka. Więcej informacji na temat funkcji KPVXCN i NKUV można znaleźć w ramce Nowe funkcje i metody lub w dokumentacji języka PHP. 6. Zainicjalizować zmienną HKTUV i wysłać zapytanie do bazy danych. HKTUV647  SWGT[5 . 6WTNVKVNGFGUETKRVKQP å(41/WTNU#5WWTNAVKVNGU#5WV9* 4 åWVVKVNGAKFWVKVNGAKF#0 WV[RGAKFV å#0 WCRRTQXGF ; 14 4$; åFCVGAUWDOKVVGFFGUE TGUWNVO[USNASWGT[ SWGT[  Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategorgiami adresów URL, jak i z adresami dla konkretnej kategorii — ciąg dalszy HKTUV647 +PKELCNKCELCOKGPPGL 9[MQPCPKGCR[VCPKCPCDCKGFCP[EJ SWGT[5 . 6WTNVKVNGFGUETKRVKQP(41/WTNU#5WWTNAVKVNGU#5WV 9* 4 WVVKVNGAKFWVKVNGAKF#0 WV[RGAKFV#0 WCRRTQXGF ; 14 4$;FCVGAUWDOKVVGFFGUE TGUWNVO[USNASWGT[ SWGT[  9[ħYKGVNGPKGYU[UVMKEJCFTGUÎY74. YJKNG TQYO[USNAHGVEJACTTC[ TGUWNV/;53.A#551 ] ,GħNKLGUVVQRKGTYU[TGMQTFYVGF[QUVCPKGWVYQTQPCVCDGNCJGCFGT KH HKTUV ] GEJQ VCDNGDQTFGTYKFVJEGNNURCEKPIEGNNRCFFKPICNKIPEGPVGT VT VFCNKIPTKIJVYKFVJ HQPVUKG  1FPQħPKMHQPV VF VFCNKIPNGHVYKFVJ HQPVUKG  1RKUHQPV VF VT  _-QPKGERúVNKYCTWPMQYGLGOKGPPæHKTUV 399 Z a r z ą d z a n i e a d r e s a m i U R L Rozdział 11. Zmienna HKTUV zostanie wykorzystana na dwa sposoby. Pierwszy z nich będzie polegał na tym, że zmienna wskaże, że przed wyświetleniem pierwszego rekordu na stronie HTML powinna zostać utworzona tabela. W drugim przypadku zmienna posłuży do sprawdzenia, czy w wyniku wykonanego zapytania zostały zwrócone jakiekolwiek adresy URL. 7. Wyświetlić wszystkie zwrócone rekordy. YJKNG TQYO[USNAHGVEJACTTC[ å TGUWNV/;53.A#551 ] KH HKTUV ] GEJQ VCDNGDQTFGTYKFVJ åEGNNURCEKPIEGNNRCFFKPI åCNKIPEGPVGT VT VFCNKIPTKIJVYKFVJ HQPV åUKG  1FPQħPKMHQPV VF VFCNKIPNGHVYKFVJ HQPV åUKG  1RKUHQPV VF VT  _ GEJQVT VFCNKIP TKIJV  C åJTGH JVVR]TQY= WTN ?_  åVCTIGV APGY  UVTKRUNCUJGU å TQY= VKVNG ? C VF VFCNKIP NGHV  ]TQY å= FGUETKRVKQP ?_VF VT P HKTUV(#.5  _ Pętla YJKNG zwróci wszystkie rekordy pobrane w wyniku wykonanego zapytania. Przed wyświetleniem pierwszego rekordu do przeglądarki internetowej zostanie wysłana tabela i jej nagłówek (rysunek11.13). Listing 11.6. Skrypt view_urls.php wyświetla zarówno menu z kategorgiami adresów URL, jak i z adresami dla konkretnej kategorii — ciąg dalszy 9[ħYKGVNCYU[UVMKGTGMQTF[ GEJQVT VFCNKIP TKIJV  CJTGH JVVR]TQY= WTN ?_ VCTIGV APGY   UVTKRUNCUJGU TQY= VKVNG ? C VF VFCNKIP NGHV  ]TQY= FGUETKRVKQP ?_VF VT P HKTUV(#.5  YTÎEQPQLGFGPTGMQTF _-QPKGERúVNKYJKNG ,GħNKPKGY[ħYKGVNQPQľCFPGIQTGMQTFW KH HKTUV ] GEJQ FKXCNKIPEGPVGT #MVWCNPKGFNCY[DTCPGLMCVGIQTKKPKGKUVPKGLG ľCFGPQFPQħPKMFKX  _GNUG] GEJQ VCDNG  COMPKúEKGVCDGNK _ _-QPKGEKPVUVTWMELKYCTWPMQYGLA) 6= V[RG ? O[USNAENQUG  COMPKúEKGRQđæEGPKCDCæFCP[EJ KPENWFGAQPEG KPENWFGUUVQRMCJVON  QđæEGPKGUVQRMK*6/. ! 400 L R U i m a s e r d a e i n a z d ą z r a Z Rysunek 11.13. Lista adresów URL dla wybranego typu Rysunek 11.14. Wygląd strony w przypadku, gdy z wybranym typem nie powiązano jeszcze żadnych adresów URL 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 FKXCNKIPEGPVGT #MVWCNPKGFNC åY[DTCPGLMCVGIQTKKPKGKUVPKGLGľ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 rekordów i powinien zostać wyświetlony komunikat podobny do pokazanego na rysunku 11.14. W przeciwnym razie powinna 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ć rekordy na wielu stronach (zapoznaj się 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 Z a r z ą d z a n i e a d r e s a m i U R L Rysunek 11.15. Użytkownicy będą mogli wybrać plik, który zostanie umieszczony na serwerze Rysunek 11.16. Definicja typu file tworzy na formularzu zawartym na stronie HTML przycisk podobny do pokazanego powyżej Rozdział 11. Zarządzanie plikami Ostatnia część omawianej aplikacji internetowej służy do zarządzania plikami dowolnego typu. Odpowiednie skrypty pozwolą użytkownikom przy użyciu przeglądarki internetowej umieścić na serwerze pliki przechowywane na ich komputerach (rysunek 11.15). Dodatkowo do bazy danych zostanie dodany rekord powiązany z wykonaną operacją. Umieszczanie plików na serwerze Podobnie jak w przypadku przetwarzania przy użyciu skryptu PHP dowolnego formularza zawartego na stronie HTML, również operacja umieszczania plików na serwerze składa się z dwóch etapów. Najpierw musi zostać wyświetlony formularz zawarty na stronie HTML umożliwiający umieszczanie plików na serwerze. Po przesłaniu danych wprowadzonych do formularza skrypt PHP musi skopiować plik w odpowiednie miejsce na serwerze. Wymagana składnia kodu źródłowego definiującego formularz umożliwiający umieszczenie pliku na serwerze składa się z trzech części: HQTOGPEV[RGOWNVKRCTVHQTOFCVC åCEVKQPUETKRVRJROGVJQFRQUV KPRWVV[RGJKFFGPPCOG/#:A(+. A5+  åXCNWG (KNGKPRWVV[RGHKNGPCOGWRNQCF Atrybut GPEV[RG zawarty w pierwszej parze znaczników kodu formularza oznacza, że powinien być w stanie obsłużyć wiele typów danych, włączając w to pliki. Należy również zauważyć, że formularz musi korzystać z metody 2156. Wartość ukrytego pola /#:A(+. A5+ spełnia w formularzu rolę ograniczenia wielkości przetwarzanego pliku (wyrażonej w bajtach) i musi znajdować się przed definicją pola HKNG, które służy do utworzenia na formularzu odpowiedniego przycisku (rysunek 11.16). 402 i m a k i l p e i n a z d ą z r a Z Tabela 11.1. Dane dotyczące pliku umieszczanego na serwerze mogą zostać uzyskane przy użyciu powyższych elementów tablicy Zmienna tablicowa $_FILES Indeks Znaczenie PCOG V[RG UKG VORAPCOG Oryginalna nazwa pliku (przechowywanego na komputerze użytkownika). Typ MIME pliku określony przez przeglądarkę. Wielkość pliku umieszczanego na serwerze (wyrażona w bajtach). Tymczasowa nazwa pliku po umieszczeniu na serwerze. Zarządzanie zawartością strony — przykład Począwszy od wersji 4.1 języka PHP, dostęp do pliku umieszczonego na serwerze może być uzyskany przy użyciu zmiennej superglobalnej A(+. 5. W przypadku wcześniejszych wersji (jeśli uaktywniono parametr TGIKUVGTAINQDCNU) należało skorzystać ze zmiennej tablicowej *662A2156A(+. 5 lub po prostu ze zmiennej WRNQCF, powiązanej z nazwą pola HKNG. Zmiennej plikowej zostaną przypisane wartości tablicy wymienione w tabeli 11.1. Po pobraniu pliku przez skrypt PHP funkcja OQXGAWRNQCFGFAHKNG może go przenieść z katalogu tymczasowego w jego docelowe położenie. OQXGAWRNQCFGFAHKNG PCYCARNKMWAV[OECUQYGIQ åPCYCARNKMWAFQEGNQYGIQ  Po wywołaniu funkcji zakończonym powodzeniem tymczasowa wersja pliku zostanie usunięta z serwera. Aby jednak tak było, serwer WWW musi dysponować prawem zapisu do katalogu, w którym zostanie umieszczony plik. Mając to na uwadze, na początku dokonam modyfikacji pliku konfiguracyjnego języka PHP o nazwie php.ini tak, aby możliwe było umieszczanie plików na serwerze, a następnie zostanie stworzony sam skrypt realizujący to zadanie. Z a r z ą d z a n i e p l i k a m i 403 Rozdział 11. Aby przygotować serwer, należy wykonać następujące kroki: 1. W edytorze tekstu otworzyć plik php.ini. 2. W File Uploads zmodyfikować poniższe parametry (rysunek 11.17): HKNGAWRNQCFU1P WRNQCFAVORAFKTVOR WRNQCFAOCZAHKNGUKG/ Pierwszy parametr pozwala na umieszczanie plików na serwerze lub blokuje taką możliwość. Drugi parametr pozwala określić miejsce, w którym tymczasowo będą przechowywane pliki umieszczane na serwerze. W przypadku większości systemów operacyjnych przed parametrem tym można bez większych obaw umieścić znak komentarza (znak średnika). Użytkownicy systemów Mac OS X i UNIX zazwyczaj dla parametru ustawiają katalog /tmp, natomiast w przypadku systemu Windows powinni korzystać z katalogu określonego ścieżką C:PHPuploadtemp. Ostatni z wymienionych parametrów służy do określenia maksymalnej wielkości plików (wyrażonej w megabajtach) umieszczanych na serwerze. i m a k i l p e i n a z
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

PHP i MySQL. Dynamiczne strony WWW. Szybki start
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


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