KURS PHP - PODSTAWY. Copyright 2011 INSIGO Grzegorz Róg. Wszelkie prawa zastrzeżone. INSIGO Grzegorz Róg www.eduweb.pl ISBN: 978-83-62083-23-7



Podobne dokumenty
Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

PHP: bazy danych, SQL, AJAX i JSON

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Sesje, ciasteczka, wyjątki. Ciasteczka w PHP. Zastosowanie cookies. Sprawdzanie obecności ciasteczka

PHP 5 język obiektowy

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

SQL (ang. Structured Query Language)

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Należy ściągnąć oprogramowanie Apache na platformę

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Niezbędne narzędzia. Przed rozpoczęciem pracy z PHP należy zainstalować odpowiednie narzędzia: środowisko PHP serwer WWW serwer baz danych MySQL

Wykład 5. SQL praca z tabelami 2

Rozdział 4 KLASY, OBIEKTY, METODY

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Memeo Instant Backup Podręcznik Szybkiego Startu

Tworzenie witryn internetowych PHP/Java. (mgr inż. Marek Downar)

instrukcja INSTALACJI APi_proxy

Ćwiczenie zapytań języka bazy danych PostgreSQL

Administracja i programowanie pod Microsoft SQL Server 2000

Dokumentacja smsapi wersja 1.4

INSTRUKCJA OBSŁUGI DLA SIECI

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1

2014 Electronics For Imaging. Informacje zawarte w niniejszej publikacji podlegają postanowieniom opisanym w dokumencie Uwagi prawne dotyczącym tego

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład VII

CREATE USER

Podstawy technologii WWW

elektroniczna Platforma Usług Administracji Publicznej

INSTRUKCJA obsługi certyfikatów

Fiery Remote Scan. Uruchamianie programu Fiery Remote Scan. Skrzynki pocztowe

Kontrola sesji w PHP HTTP jest protokołem bezstanowym (ang. stateless) nie utrzymuje stanu między dwoma transakcjami. Kontrola sesji służy do

Zmienne i stałe w PHP

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Szczegółowa specyfikacja funkcjonalności zamawianego oprogramowania.

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

6. Bezpieczeństwo przy współpracy z bazami danych

Opcje Fiery1.3 pomoc (klient)

Instrukcja obsługi Strona aplikacji

Aplikacje WWW - laboratorium

Jakie nowości i udogodnienia niesie za sobą przejście do Sidoma 8, część z tych różnic znajdziecie Państwo w tabeli poniżej.

Baza danych do przechowywania użytkowników

Zarządzanie licencjami dla opcji Fiery na komputerze klienta

Programowanie obiektowe

Aplikacje WWW - laboratorium

Dokumentacja modułu Woocommerce

10. Programowanie obiektowe w PHP5

1. Podręcznik instalacji aplikacji EXR Creator Wstęp Instalacja Instalacja aplikacji EXR Creator z płyty CD

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Instrukcja użytkownika

4. Podstawowa konfiguracja

Smarty PHP. Leksykon kieszonkowy

edistro.pl Spis treści

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym PrestaShop (plugin dostępny w wersji ecommerce)

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR

Dokumentacja fillup - MS SQL

Programy LeftHand - Obsługa plików JPK. Luty 2017

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Serwery aplikacji. dr Radosław Matusik. radmat

Autor: Joanna Karwowska

Bazy danych. dr Radosław Matusik. radmat

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Usługi sieciowe systemu Linux

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

DECLARE VARIABLE zmienna1 typ danych; BEGIN

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Internetowe bazy danych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Podręcznik użytkownika

UNIFON podręcznik użytkownika

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Kurs WWW. Paweł Rajba.

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Języki programowania wysokiego poziomu. Ćwiczenia

Pracownia internetowa w szkole ZASTOSOWANIA

P o d s t a w y j ę z y k a S Q L

Wykład 8: klasy cz. 4

Języki skryptowe - PHP. Podstawy PHP. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

Wprowadzenie do projektu QualitySpy

Synchronizator plików (SSC) - dokumentacja

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

elektroniczna Platforma Usług Administracji Publicznej

Opcje Fiery1.3 pomoc (serwer)

Projektowani Systemów Inf.

Internetowy serwis Era mail Aplikacja sieci Web

Zagrożenia trywialne. Zagrożenia bezpieczeństwa aplikacji internetowych. Parametry ukryte. Modyfikowanie parametrów wywołania

Paweł Rajba

ADOBE FLASH PLAYER Menedżer ustawień lokalnych

Tutaj znajdziesz Odpowiedź na: Najczęściej Spotykane Problemy Najczęściej zadawane Pytania

Fiery Remote Scan. Łączenie z serwerami Fiery servers. Łączenie z serwerem Fiery server przy pierwszym użyciu

Enterprise JavaBeans (EJB)

Transkrypt:

KURS PHP - PODSTAWY Copyright 2011 INSIGO Grzegorz Róg. Wszelkie prawa zastrzeżone. INSIGO Grzegorz Róg ISBN: 978-83-62083-23-7 Kurs składa się z dwóch elementów: książki oraz płyty. Dołączona płyta stanowi część składową książki i nie może być przedmiotem odrębnej transakcji.

PHP - PODSTAWY 3 AUTOR MATEUSZ MANAJ od 8 lat zajmuje się programowaniem dynamicznych stron WWW. Jako kierownik działu oprogramowania i nowych technologii w firmie Softgraf Mikołów jest autorem wielu systemów zarządzania treścią, algorytmów phpclasses. org, portali, dedykowanych systemów zarządzania jednostkami wewnątrz-firmowymi, m.in. autorskiego systemu dla Eurovia POLSKA S.A. Można powiedzieć - poliglota - biegle posługuje si ę ogro mną il o ś c i ą j ęzy ków programowania sieciowego i środowiskowego. W wolnych chwilach Mateusz udoskonalaja swoje umiejętności wzbogacając je o nowe technologie i rozwiązania m.in. po to, abyś już dzisiaj mógł korzystać z tej wiedzy bez przeszkód!

PHP - PODSTAWY 4 WPROWADZENIE Język PHP jest to najpopularniejszy obiektowy język programowania wykorzystywany podczas tworzenia stron WWW. Pozwala on na generowanie danych w czasie rzeczywistym i zalicza się do języków server-side, które działają po stronie serwera, w przeciwieństwie do języków clientside, takich jak JavaScript czy ActionScript, działających po stronie przeglądarki. Najprostszym sposobem na zilustrowanie tej różnicy, będzie skrypt, który pobiera czas i wyświetla go na stronie WWW. W przypadku PHP będzie to czas serwera, w przypadku języków client-side, na przykład JS, będzie to czas systemowy użytkownika. PHP pozwala także na komunikację z bazą danych. CIEKAWE INFORMACJE O PHP Late Static Bindings Od PHP w wersji 5.3.0, interpreter zawiera nową funkcjonalność nazwaną Late Static Bindings która może być użyta jako referencja statycznych obiektów danej klasy. Będąc bardziej precyzyjnym, LSB pracuje przez zapis klasy non-forwarding call. Stosowanie nowego operatora LSB sprowadza się do umieszczenia słowa kluczowego static zamiast zwykłego odniesienia do wartości statycznych poprzez self, jak to było do czasu wprowadzenia funkcjonalności LSB. Mamy zatem 3. główne operatory dostępu self::, parent:: oraz static::. Zamiennikiem do obiektowego typu static:: jest strukturalna funkcja forward_static_call(). Stosowanie funkcji get_called_class() również jest dostępne w przypadku stosowania LSB w naszej klasie. Nowa funkcjonalność przyjęła swoją nazwę z dwu powodów late binding wzięło się z faktu iż static:: nie jest obsługiwany przez klasę w której dana metoda statyczna jest umieszczona, lecz obliczana na podstawie równolegle przetwarzanych informacji. Jest również druga część o nazwie static binding, jak łatwo się domyślić chodzi o skojarzenie LSB z obiektami statycznymi.

PHP - PODSTAWY 5 Ograniczenia self:: Statyczne referencje do klasy, takie jak self:: lub CLASS (ekstrahuje nazwę klasy) były rozpatrywane przez tę samą klasę do której się odnosiły, co ilustruje poniższy przykład: Użycie self:: <?php class A { public static function who() { echo CLASS ; public static function test() { self::who(); class B extends A { public static function who() { echo CLASS ; B::test();?> Powyższy przykład wyświetli: A LSB zastosowanie LSB próbuje rozwiązać powyższe ogranicznenie poprzez słowo kluczowe static:: które odnosi się do klasy wywołującej je w czasie rzeczywistym (runtime). Niejako słowo static:: daje możliwość odniesienia się do klasy B z metody test(), w ten sposób nie powstało nowe słowo kluczowe w PHP lecz użyte zostało wcześniej zarezerwowane static:: Prosty przykład użycia static::

PHP - PODSTAWY 6 <?php class A { public static function who() { echo CLASS ; public static function test() { static::who(); // Zaczynamy pisanie LSB class B extends A { public static function who() { echo CLASS ; B::test();?> Powyższy przykład wyświetli: B Uwaga: W przypadku niestatycznym wywoływana klasa będzie instancją tego obiektu. Od czasu używania $this-> użycie LSB dla metod prywatnych może dawać inne rezultaty. Dodatkową różnicą jest użycie LSB, gdzie static:: może odnosić się tylko do właściwości statycznych. Przykład użycia static:: na niestatycznym obiekcie <?php class A { private function foo() { echo Sukces!\n ; public function test() { $this->foo(); static::foo(); class B extends A { /* foo() zostanie skopiowane do klasy B, stąd jego zasięg będzie w * klasie A oraz wywołanie się powiedzie. */

PHP - PODSTAWY 7 class C extends A { private function foo() { /* Pierwotna metoda została nadpisana, zasięg nowej jest w C $b = new B(); $b->test(); $c = new C(); $c->test(); // NIEPOWIEDZIE SIĘ!?> Powyższy przykład wyświetli: Sukces! Sukces! Sukces! Fatal error: Call to private method C::foo() from context A in /tmp/test.php on line 9 Przykład 4. Przekazywanie i nie przekazywanie wywołań <?php class A { public static function foo() { static::who(); public static function who() { echo CLASS. \n ; class B extends A { public static function test() { A::foo(); parent::foo(); self::foo();

PHP - PODSTAWY 8 public static function who() { echo CLASS. \n ; class C extends B { public static function who() { echo CLASS. \n ; C::test();?> Powyższy przykład wyświetli: A C C Tekst przetłumaczony i przeredagowany na podstawie artykułu dostępnego na stronie: http:// www.php.net/lsb SESJE Czy zastanawiałeś się w jaki sposób ludzie przechwytują sesje użytkowników, następnie przechwycone dane wykorzystują do np. zalogowania się? Dzieje się to poprzez specjalne sniffery sieciowe które mogą podsłuchiwać użytkowników w trakcie korzystania z Internetu a w odpowiedzi dostają nieprzetworzone nagłówki np. GET lub POST. Z takich strzępków informacji możemy wyciągnąć potrzebne dane a następnie odnieść się do zasobów serwera i otrzymać w odpowiedzi konkretne dane wyjściowe. Jakiś czas temu próbowałem zrobić coś takiego i muszę przyznać, że jest to metoda bardzo szybka i efektywna (na nasze nieszczęście). Oczywiście próbowałem tego na swoim prywatnym serwerze. Pytanie brzmi jak się przed tym obronić? Odpowiedź jest prosta, zastosować mechanizm szyfrowania. Niekoniecznie polecam MD5 ze względu na to, że jest to szyfrowanie w jedną stronę oraz dostępne są strony www na których można sprawdzić odszyfrowanie takiego ciągu metodą brute-force. Zatem najlepiej zastosować własną kłódkę i dorobić własny klucz, czyli:

PHP - PODSTAWY 9 <?php class Cipher { protected static $key = NAk9WhaMbFdgHlkJg83q1Z= ; public static function Encode($STRING) { $encrypted_data = mcrypt_ecb (MCRYPT_3DES, self::$key, $STRING, MCRYPT_ENCRYPT); return base64_encode($encrypted_data); public static function Decode($HASH) { $dec = mcrypt_ecb (MCRYPT_3DES, self::$key, base64_decode($hash), MCRYPT_DECRYPT); return trim($dec); $str = Moje#Tajne@dane*&do zaszyfrowania ; $enc = Cipher::Encode($str); $dec = Cipher::Decode($enc); echo Zaszyfrowane dane:.$enc. <br /> ; echo Po odszyfrowaniu:.$dec;?> Oczywiście możemy zastosować dowolnie inny klucz, który nie musi być wpisany na sztywno jako zmienna członkowska statyczna typu chronionego, ale przy rozszyfrowywaniu (metoda Decode()) lub szyfrowaniu możemy przekazywać ten klucz przy wywołaniu danej metody. Wszystko zależy od tego jak Ty to widzisz. Powyższy przykład wyświetli: Zaszyfrowane dane: 1fJ92qL7GUD2VDrueBRfAvLf74Kni4fFrwm+WmrmSB7iE06tEWxsCg== Po odszyfrowaniu: Moje#Tajne@dane*&do zaszyfrowania

PHP - PODSTAWY 10 Tak zaszyfrowane dane możemy bez obaw zapisać do sesji. Użytkownik który podsłuchuje to co robimy zobaczy w superglobalnej zmiennej sesyjnej ciąg: 1fJ92qL7GUD2VDrueBRfAvLf74Kni4f Frwm+WmrmSB7iE06tEWxsCg== który zapewne nic mu nie powie dopóki dopóty nie znajdzie odpowiedniego klucza. Oczywiście możesz powiedzieć, że nie ma takiego zabezpieczenia którego nie da się złamać. Owszem, tak jest. Różnica polega na tym, że możemy to znacznie utrudnić potencjalnemu napastnikowi. Abstrahując od zabezpieczeń naszych danych w sesji, dobrą praktyką przy kasowaniu jej jest najpierw przypisanie jej pustego string a a następnie wykonanie funkcji session_destroy() aby mieć 100% pewność, że gdy z jakiś niewyjaśnionych przyczyn funkcja session_destroy() nie zadziała jak należy to wartość zmiennej sesyjnej jest pusta i nie zawiera żadnych nie potrzebnych lub wrażliwych danych. Poniżej przedstawiam przykład: <?php /* Jeśli zainicjalizowaliśmy sesję i wprowadziliśmy do niej wartości np. * z logowania, możemy ją teraz bezpiecznie usunąć. */ $_SESSION[ login ] = ; session_destroy();?> To samo tyczy się używania superglobalnej tablicy $_COOKIE czyli ciasteczek, ale przed jego usunięciem musimy je przeterminować ustawiając czas przydatności (czas życia w pamięci przeglądarki) na ujemny np. na 2000 rok. KONFIGURACJA SERWERA Jeśli jesteś administratorem fizycznego serwera www lub chciałbyś wiedzieć co ja osobiście robię u siebie na serwerach, aby były one bezpieczne i dobrze skonfigurowane, przedstawiam kilka dobrych wskazówek. Ustawienia zastosowuję w pliku konfiguracyjnym php.ini

PHP - PODSTAWY 11 asp_tags ustawienie na wartość ON powoduje możliwość użycia tagów języka ASP <% %> w kodzie PHP. safe_mode Od PHP w wersji 5.3.0 ta własność jest przestarzała i nie należy jej używać ze względów bezpieczeństwa. W przypadku gdy korzystasz z PHP w wersji < 5.3.0 pozostaw tą opcję włączoną gdy masz uruchomione wirtualne serwery (virtual hosts) max_execution_time własność ta mówi interpreterowi jak długo ma przetwarzać dany skrypt (czas przetwarzania skryptu wyrażony w ms). Po tym czasie w przeglądarce pokazuje się na błąd z rodziny timeout. max_input_time jeśli na Twój serwer przesyłane zostają duże pliki możesz pozostawić domyślną wartość -1 co oznacza brak limitu czasu przesyłanego żądania, lub ustaw ją na najbardziej dla Ciebie odpowiednią pamiętając o wyrażeniu tego czasu w milisekundach. memory_limit własność ta mówi ile pamięci może maksymalnie zająć skrypt PHP. Domyślną wartością jest 8 MB ( 8M ). Jeśli przetwarzasz duże pliki np. parsujesz ogromny plik XML lub XLS (excel) ustaw tą wartość na kilkukrotnie większą. error_reporting Raportowanie błędów. Jeśli wystąpi błąd w naszym skrypcie PHP to ta wartość mówi czy ma go wyświetlić. Domyślną wartością jest E_ALL, ale ja osobiście, niemal zawsze korzystam z trybu E_ALL E_STRICT. display_errors jeśli error_reporting jest włączony i ma jakąkolwiek wartość różną od OFF wtedy ta opcja blokuje (OFF) lub odblokowuje (ON) wyświetlenie błędu w przeglądarce. Jeśli error_reporting = OFF oraz display_errors = ON/OFF wtedy nawet gdybyśmy bardzo chcieli przechwycić taki błąd np. metodą try catch to tego nie zrobimy ponieważ wszystkie błędy są pomijane i kod leci dalej, co skutkuje tym, że tych błędów nie ma ale nasz kod nie chce poprawnie działać. Osobiście tą opcję mam ustwioną na OFF ponieważ zwykle sam ręcznie przechwytuję wszystkie błędy i odpowiednio je przetwarzam. log_errors mówi nam czy PHP automatycznie zapisuje błędy do pliku dziennika. W przypadku serwerów produkcyjnych włączamy tę opcję (ON), by dysponować jednolitym źródłem wszystkich komunikatów błędów. register_globals i register_long_arrays - wartości te decydują o tym, czy można stosować starszy styl odwołań do zmiennych globalnych HTTP, takich jak GET czy POST. Od PHP w wersji 5.x posługujemy się wyłącznie nowszym systemem, więc pozostawimy tę opcję wyłączoną (OFF). magic_quotes_gpc - wskazuje, czy PHP automatycznie wstawia znaki ucieczki przez apostrofami w przekazywanych danych (w danych POST, 6ET i COOKIE). W tym kursie polecam samodzielne wstawianie znaków ucieczki w otrzymywanych danych, więc pozostawimy tę opcję wyłączoną (OFF). mbstring.language zwykle tę opcję ustawiam na Neutral, aby mbstring nie preferował żadnego konkretnego języka. mbstring.internal encoding w przypadku serwerów deweloperskich jak i produkcyjnych ustawiam tę opcję na UTF-8, tak aby PHP wewnętrznie operował ciągami Unicode.

PHP - PODSTAWY 12 PRZYDATNE POLECENIA BAZODANOWE: Zaznaczenie danych w tabeli SELECT nazwa_kolumn(y) FROM nazwa_tabeli SELECT imie, nazwisko FROM users Zaznaczenie danych bez powtórzeń SELECT DISTINCT nazwa_kolumny FROM nazwa_tabeli SELECT DISTINCT imie, nazwisko FROM users Wprowadzenie danych do tabeli * INSERT INTO nazwa_tabeli (nazwa(y)_kolumn(y)) VALUES (wartość(ci)) INSERT INTO users (nick, haslo) VALUES ( super-nick, password ) Aktualizacja danych tabeli UPDATE nazwa_tabeli SET nazwa_kolumny1=wartość1 UPDATE users SET nick=inny-nick, haslo=super-haslo Usunięcie danych z tabeli DELETE FROM nazwa_tabeli DELETE FROM users * W zapytaniu do bazy danych przy odniesieniu do większej ilości kolumn stosuje się ich nazwy wyszczególnione po przecinku; to samo odnosi się do wartości VALUES Sprecyzowanie zasięgu operacji: Dla każdej operacji podstawowej możemy określić operandy precyzujące zasięg takiego zapytania. Dla przykładu: Zaznacz proszę kolumnę nick, haslo z tabeli users gdzie imię jest równe Zenobiusz a wyniki wyświetl w postaci posortowanej od Z-A

PHP - PODSTAWY 13 Klauzula WHERE * Nazwa SQL Przykład Operator logiczny AND..OR ORDER BY ASC..DESC SELECT nazwa_kolumn(y) FROM nazwa_tabeli WHERE nazwa_kolumny [oper.] wartość SELECT nazwa_kolumn(y) FROM nazwa_tabeli WHERE nazwa_kolumny [oper.] wartość AND nazwa_kolumny [oper.] wartość SELECT nazwa_kolumn(y) FROM nazwa_tabeli WHERE nazwa_kolumny [oper.] wartość ORDER BY nazwa_ kolumny DESC SELECT nick, haslo FROM users WHERE imie = Zenobiusz SELECT nick, haslo FROM users WHERE imie = Zenobiusz AND nazwisko = Kowalski SELECT nick, haslo FROM users WHERE imie = Zenobiusz ORDER BY imie DESC Operator SQL Opis = Sprawdzenie równości <> Sprawdzenie nierówności (również!=) > Większe od < Mniejsze od >= Większe bądź równe od <= Mniejsze bądź równe BETWEEN Czy dwie wartości znajdują się w przedziale pomiędzy LIKE Znajdowanie wzoru (pattern)

PHP - PODSTAWY 14 MATERIAŁY ŹRÓDŁOWE: Skąd czerpać tajemną wiedzę i inspirację? Poniżej przedstawiam dodatkowe źródła informacji o pisaniu aplikacji WWW: Dokumentacja PHP (http://www.php.net/manual/pl). Podstawowe źródło informacji o PHP i jego funkcjach pełne komentarzy użytkowników i wskazówek pozwalających na uniknięcie często występujących problemów. PHP Freaks (http://www.phpfreaks.com). Społeczność użytkowników i entuzjastów PHP oraz związanych z nim technologii. Na stronie można znaleźć poradniki, informacje i inne pomocne wskazówki. Repozytorium klas PHP (http://www.phpclasses.org). Jest to największy zbiór klas pisany przez wielu znanych programistów. W3 Schools (http://www.w3schools.com). Bardzo użyteczna strona internetowa przedstawiająca różne technologie pisania udanych aplikacji WWW. Znajdują się w niej również dobre mini-kursy (tutoriale) z których również możesz się czegoś nowego dowiedzieć. The World Wide Web Consortium (http://www.w3.org). Co tu dużo mówić jeśli masz podstawowe pytania dotyczące czemu dokument xhtml musi rozpoczynać się o tagu <!DOCTYPE > to tam się wszystkiego dowiesz. Naprawdę dobra lektura na długie zimowe wieczory dla wytrwałych. Dokumentacja internetowa MySQL (http://dev.mysql.com/doc). Jest to pełna internetowa dokumentacja MySQL. Została bardzo dobrze napisana i zawiera wszystko, co potrzebne, by w pełni i skutecznie korzystać z serwera bazy danych MySQL. Dokumentacja internetowa PostgreSQL (http://www.postgresqi.org/docs). Niezwykle bogata i dobrze napisana.

PHP - PODSTAWY 15 KORZYSTANIE Z PŁYTY DVD DOŁĄCZONEJ DO KSIĄŻKI Na płycie DVD znajdziesz pełne szkolenie z zakresu Adobe Dreamweaver które jest dodatkiem do książki. Prosimy o pobranie licencji, która jednocześnie jest dowodem zakupu oraz lagalności kursu. Certyfikat jest dostępny na stronie http:// po zalogowaniu do Strefy Klienta. INSTRUKCJA OBSŁUGI PŁYTY DVD Po włożeniu płyty DVD do napędu proszę wybrać opcję Eksploruj (wyświetlić zawartość płyty), a następnie uruchomić plik index.html W razie problemów z odtwarzaniem filmów należy: 1/ Pobrać najnowszy Flash Player (http://get.adobe.com/pl/flashplayer/) 2/ Zainstalować środowisko Java (http://www.java.com/pl/download/) 3/ Wyczyścić pliki tymczasowe i uruchomić ponownie przeglądarkę, a jeśli to nie zadziała, w miarę możliwości spróbować uruchomić plik pod inną przeglądarką (np. Firefox ) 4/ W ostateczności zmienić rozszerzenie pliku.flv w folderze video na.mov i sprawdzić, czy film będzie odtwarzał się w QuickTime Kurs jest w sposób elektroniczny powiązany z właścicielem licencji. Kurs przeznaczony jest do użytku osoby kupującej. Z wyjątkiem sytuacji dopuszczalnych przez prawo, jakiekolwiek powielanie, montaż, wypożyczanie czy inne rozpowszechnianie płyty lub jej zawartości czy fragmentów zawartości jest bezwzględnie zabronione. Książka wraz z płytą DVD nie mogą być przedmiotem odsprzedaży czy sprzedaży handlowej bez uzyskania odpowiedniej licencji.