25
1/25 PHP 3 PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz do tworzenia dynamicznych stron WWW autor: Rafał Majewski źródło: czasopismo Linux+, książka „PHP3” autorstwa Leona Atkinsona

PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

  • Upload
    melora

  • View
    30

  • Download
    1

Embed Size (px)

DESCRIPTION

PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz do tworzenia dynamicznych stron WWW autor: Rafał Majewski źródło: czasopismo Linux+, książka „PHP3” autorstwa Leona Atkinsona. PHP 3 – co to jest i do czego służy ? - PowerPoint PPT Presentation

Citation preview

Page 1: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

1/25

PHP 3

PHP 3narzędzie do komunikacji z bazami danych

z poziomu stron WWW

oraz

do tworzenia dynamicznych stron WWW

autor: Rafał Majewski

źródło: czasopismo Linux+, książka „PHP3” autorstwa Leona Atkinsona

Page 2: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

2/25

PHP 3

PHP 3 – co to jest i do czego służy ?

PHP 3 jest to technologia skryptowa działająca po stronie serwera (jest projektem Open Source).

Służy ona do komunikowania się z bazami danych a następnie do zwracania rezultatów tej komunikacji

w postaci dokumentów HTML.

Jest to silne narzędzie w rękach programisty – obsługuje bezpośrednio wiele baz, np.:

- PostgreSQL

- Adabas D

- Oracle

- Sybase

- wszystkie bazy obsługujące sterownik ODBC

Page 3: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

3/25

PHP 3

Historia PHP 3

Autorem PHP jest Rasmus Lerdorf, który stworzył i zaczął rozwijać tą technologię na początku 1995

roku.

Na początku istnienia PHP zawierało w sobie prymitywny parser, który potrafił zrozumieć kilka makr

(można w tym było stworzyć między innymi licznik, książkę gości). Następnie dodana została obsługa

bazy danych mSQL i tak powstała pierwsza wersja PHP nazwana PHP/FI 2.

Technologia ta od razu zaczęła cieszyć się dużym zainteresowaniem na całym świecie i dzięki

udostępnionym kodom źródłowym została szybko rozwinięta o kolejne funkcje.

Duży wkład w stworzenie PHP 3 mają Zeev Suraski oraz Andi Gutman. PHP 3 jest wynikiem połączenia

PHP/FI 2 z nowymi funkcjami.

Standardowo PHP 3 zawiera bezpośrednią obsługę protokołu IMAP, można w nim tworzyć grafikę

(wtedy skrypt PHP zwraca obrazek w formacie GIF), generować cookies oraz tworzyć na tyle

zaawansowane programy jak klient news’owy lub klient pocztowy korzystający z IMAP’a.

Pełna wersja PHP 3 została udostępniona 6 czerwca 1998 roku.

Page 4: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

4/25

PHP 3

PHP 3 – dlaczego jest lepsze od rozwiązań konkurencyjnych?

- podstawowym argumentem jest to, że PHP 3 jest darmowe.

- PHP pozwala na szybsze tworzenie kodu i szybciej go wykonuje – w stosunku do takich rozwiązań jak

Active Server Pages lub CGI

- ten sam kod PHP, bez żadnych modyfikacji może działać na wielu serwerach WWW ( m.in. Apache,

Internet Information Server) oraz na wielu systemach operacyjnych ( Unix, Windows 98, Windows NT

oraz Macintosh’owych OS’ach).

- możliwości funkcjonalne, będące standardem PHP, w innych środowiskach są dodatkami.

- system śledzenia błędów, dostępny na witrynie PHP, pokazuje wszelkie problemy i sposoby ich

rozwiązywania.

- pomoc związana z wykorzystaniem PHP jest bezpłatna i łatwo dostępna. Odpowiedzi na pytania,

przesyłane na listy dyskusyjne poświęcone PHP, nadsyłane są w krótkim czasie.

Page 5: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

5/25

PHP 3

Współpraca PHP 3 z serwerem WWW

Proces komunikacji rozpoczyna się w chwili zgłoszenia przez przeglądarkę żądania dostarczenia

strony WWW.

Przeglądarka określa adres serwera WWW na podstawie adresu URL oraz identyfikuje stronę, którą

chce otrzymać.

Standardowo serwer WWW bez żadnych dodatkowych operacji wysyła do przeglądarki gotowy

dokument w formacie HTML.

W przypadku zgłoszenia żądania dostępu do strony PHP, zostaje ono przetworzone dokładnie tak jak

żądanie CGI – po stronie serwera zostaną wykonane operacje zdefiniowane w skrypcie PHP, a

następnie ich wynik przekazany do przeglądarki w formacie HTML.

Page 6: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

6/25

PHP 3

Tworzenie stron WWW

Standardowo strona napisana w PHP 3 powinna mieć rozszerzenia *.php3 lub *.phtml.

Jest to konieczne do prawidłowej interpretacji ich przez serwer WWW.

Istnieje możliwość ustawienia w konfiguracji serwera WWW ( na przykładzie serwera WWW

Apache) dowolnego rozszerzenia i przypisania go do skryptów PHP 3.

Page 7: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

7/25

PHP 3

Szkielet bazy danych (PostgreSQL)

początek skryptu

CREATE TABLE tbl_host_info

( host_id int

, host_urltext not null

, host_opis text

, PRIMARY KEY (host_id) );

- stworzenie licznika

CREATE SEQUENCE seq_host_id start 1;

- nadanie praw dla użytkownika nobody do czytania tabeli

GRANT select on tbl_host_info to nobody

- wprowadzenie kilku danych testowych

INSERT into tbl_host_info (host_id, host_url, host_opis)

VALUES ( nextval(<<seq_host_id>>), <<test.com.pl>>, <<Super host>>);

INSERT into tbl_host_info (host_id, host_url, host_opis)

VALUES ( nextval(<<seq_host_id>>), <<www.linux.com.pl>>, <<Strona pisma Linux+>>);

- koniec skryptu

Page 8: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

8/25

PHP 3

Przykładowa strona w PHP 3

<html> <head> <title> Strona testowa </title> <body bgcolor=white>

<? // definicje zmiennych

$host = localhost; $port = 5432; // port na którym znajdziemy bazę $base_name = wwwindex; // nazwa naszej bazy

// funkcja mająca za zadanie nawiązanie komunikacji z bazą danych i przekazanie // informacji o sukcesie lub porażce

function connect ($host, $port, $base_name) { $conn = pg_connect ( $host, $port, „”, „”, $base_name);

if (!conn) { Print(„Połączenie nie powiodło się”);

} else {

print („<h1>!SUKCES!</h1>”); return conn; }

}

Page 9: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

9/25

PHP 3

Przykładowa strona w PHP 3 c.d.

//funkcja zwracająca kolejne wartości z pól tabeli function show_result ($conn) {

// zdefiniowanie zapytania SQL $sql = „SELECT * FROM tbl_host_info”;

// wykonanie zapytania $result = pg_exec ($conn, $sql);

// zliczenie ilości wierszy tabeli $rows = pg_numrows ($result);

// $i - zmienna pomocnicza dla licznika $i = 0;

while ($i<$rows) { echo „<br>To jest host_id:<font color=green>”;

echo pg_result ($result, $$i, „host_id”); echo”</font><br>To jest host_url:<font color=blue>”; echo pg_result ($result, $i, „host_url”);

echo”</font><br>To jest host_opis:<font color=red>”; echo pg_result ($result, $i, „host_opis”); echo „</font><br><hr>”; $i++; }

}

Page 10: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

10/25

PHP 3

Przykładowa strona w PHP 3 c.d.

// wywołanie funkcji connect $conn connect($host, $port, $base_name);

// wywołanie funkcji show_result show_result($conn);

?>

</body> </html>

Page 11: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

11/25

PHP 3

Wynik otrzymany w przeglądarce

Page 12: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

12/25

PHP 3

Dołączanie plików nagłówkowych (bibliotek)

W PHP 3 dołączanie dodatkowych plików można zrealizować na dwa sposoby.

Jednym z tych sposobów jest dyrektywa include(„plik”).

Dyrektywa ta dołącza plik zdefiniowany jako argument, w miejscu gdzie została umieszczona.

Przykładowo, możemy w jednym pliku zdefiniować nagłówek strony, w innym stopkę, i dołączyć

je do skryptu, aby uzyskać pożądany efekt.

Przykładowe pliki:

head.inc

<? echo „<html> <head> <title> To jest nagłówek </title> </head> ?>

foot.inc

<?

echo „</body>

</html>”;

?>

test.php3

<?

include („head.inc”)

echo „To jest strona testowa”

include („foot.inc”);

?>

Jedną z zalet include jest to, że często powtarzające się części kodu można zapisywać w

oddzielnych plikach, co może znacznie usprawnić pisanie programów.

Page 13: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

13/25

PHP 3

Dołączanie plików nagłówkowych (bibliotek) c.d.

Drugim ze sposobów korzystania z zewnętrznych plików z poziomu skryptów PHP jest dyrektywa

require(). Jest ona bardzo podobna do dyrektywy #include z języka C. Używa się jej tak samo jak

w języku C, więc w przeciwieństwie do include() trzeba jej używać na początku skryptu.

Używanie tej dyrektywy pozwala na tworzenie plików-bibliotek, zawierających wszystkie funkcje

używane w skrypcie.

Dzięki takim zabiegom można uzyskać większą przejrzystość pisanych skryptów.

Page 14: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

14/25

PHP 3

Identyfikatory , Typy danych i zmienne

Identyfikatory nadają nazwy abstrakcyjnym elementom PHP – funkcjom, zmiennym i klasom. Niektóre z

nich są tworzone przez PHP jako funkcje wbudowane lub zmienne środowiskowe. Inne są tworzone są

przez użytkownika. Identyfikatory mogą mieć dowolną długość i mogą składać się z dowolnej kombinacji

liter, cyfr i znaków podkreślenia. Pierwszym znakiem identyfikatora musi być litera lub znak

podkreślenia. Duże i małe litery są rozróżnialne i traktowane jako odmienne. Wyjątkiem od tej reguły są

funkcje wbudowane. Nie ma znaczenia czy funkcja wbudowana zostanie napisana dużymi, czy małymi

Literami, np. „print” czy „Print”.

Zmienne określane są poprzedzeniem ich przez znak $. W konsekwencji tej składni można nadawać

zmiennym takie nazwy jak funkcjom, a nawet takie jak funkcjom wbudowanym, co może wprowadzać

zamieszanie przy analizowaniu kodu. PHP dysponuje trzema typami danych: liczbami całkowitymi,

liczbami zmiennoprzecinkowymi oraz łańcuchami znaków. Podczas deklarowania zmiennych nie określa

się konkretnie ich typu. PHP automatycznie rozpoznaje typ danej i przypisuje je do siebie.

Istnieje możliwość zmienienia domyślnego przypisania typu zmiennej. Odbywa się to przez

Zastosowanie funkcji settype z odpowiednimi parametrami ( intval, doubleval, strval ). Miejsce, w którym

zmienna została po raz pierwszy użyta określa zakres, w którym będzie ona widoczna. Każda

zdefiniowana funkcja posiada własny zakres widzialności zmiennych.

Page 15: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

15/25

PHP 3

Identyfikatory , Typy danych i zmienne c.d

Oznacza to, że są zmienne istniejące wyłącznie wewnątrz funkcji, które nie są widoczne w innej części

skryptu. Dodatkowo istnieje także globalny zakres widzialności, przeznaczony dla zmiennych

stworzonych poza funkcjami. W PHP zmienne globalne nie są automatycznie dostępne wewnątrz

funkcji. W PHP, tworząc funkcję należy jawnie określić, czy zmienna globalna ma być w niej dostępna.

<HTML>

<HEAD>

<BODY>

<?

function printCity ($NameOfCity) { Print („Nazwa miasta: $NameOfCity.<br>\n”);

}

function California() { $capital = „Sacramento”;

printCity ($capital); }

function Utah() {

Page 16: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

16/25

PHP 3

Identyfikatory i Typy danych i zmienne c.d

$capital = „Salt Lake City”; printCity ($capital); } function Nation () { global $capital; printCity($capital); }

$capital = „Washington D.C.”;

California(); Utah(); Nation();

?> </BODY> </HTML>

Wynikiem po wykonaniu tego skryptu będzie wyświetlenie po kolei:

Nazwa miasta: Sacramento << wartość pobrana ze zmiennej lokalnej Nazwa miasta: Salt Lake City << wartość pobrana ze zmiennej lokalnej Nazwa miasta: Washington D.C. << wartość pobrana ze zmiennej globalnej

Page 17: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

17/25

PHP 3

Klasy i obiekty w PHP 3

Stworzenie klasy w PHP 3 odbywa się poprzez zadeklarowanie jej nazwy, atrybutów (zmiennych)

i metod. Przy deklaracji atrybutu wstawiane jest słowo kluczowe var przed atrybutem. Przy deklaracji

metody używane jest słowo kluczowe function.

Definicja klasy służącej do gromadzenia informacji o użytkownikach:

<?

class user

{ var $name;

var $password; var $last_login;

function init ($inputName, $inputPassword) // metoda init wykorzystuje zmienną this { // do przypisania wartości trzem atrybutom obiektu $this->name = $inputName; $this->password = $inputPassword; $this->last_login = time(); }

fuction getLastLogin() {

return (Date („d M Y”, $this->last_login)); }

}

Page 18: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

18/25

PHP 3

Klasy i obiekty w PHP 3 c.d.

// stworzenie obiektu i jego zainicjalizowanie $curentUser = new user; $currentUser -> init („Leon”, „xxx”);

// wyświetlenie daty ostatniego logowania print ($currentUser -> getLastLogin()); print („<br>\n); // wyświetlenie nazwy użytkownika print ($currentUser -> name); print („<br>\n);

?>

</BODY> </HTML>

Po zdefiniowaniu klasy do stworzenia nowego egzemplarza obiektu używa się polecenia new. Po

stworzeniu obiektu zostaje zarezerwowana pamięć dla wszystkich jego atrybutów. Każdy egzemplarz

obiektu ma swój zbiór atrybutów. Metody są wspólnie używane przez wszystkie egzemplarze obiektów

danej klasy. Metodom można nadawać wszelkie nazwy, jeśli jednak nazwa metody będzie identyczna z

nazwą klasy, to metoda ta będzie traktowana jako konstruktor i zostanie wykonana od razu po

stworzeniu egzemplarza obiektu. PHP 3 nie udostępnia destruktorów.

Page 19: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

19/25

PHP 3

Klasy i obiekty w PHP 3 c.d.

W odróżnieniu od innych obiektowych języków programowania, takich jak C++, atrybuty w PHP 3

nie są prywatne. Dowolny kod ma dostęp do egzemplarzy obiektów i może odczytywać oraz

Modyfikować wartości atrybutów.

Dostęp do metod jest bardzo podobny jak dostęp do atrybutów. Do wskazania metody egzemplarz

obiektu wykorzystywany jest operator ->

Metody zachowują się tak samo jak funkcje zdefiniowane poza klasami.

Metody dysponują wewnątrz klasy zmienną this, która jest tworzona automatycznie.

Zmienna ta jest odwołaniem do egzemplarza obiektu i pozwala metodom na korzystanie z jego

atrybutów.

Wykorzystując to, że egzemplarze obiektów są zmiennymi, można je umieszczać w tablicach.

Niestety w PHP w wersji 3 nie jest jeszcze możliwe odwoływanie się do metod i atrybutów bezpośrednio

przy użyciu tablicy. Możliwość taka istnieje dopiero w 4 beta wersji tej technologii.

W wersji 3 jedynym rozwiązaniem tego problemu jest zapisanie obiektu z tablicy do zmiennej, np.:

$zmienna = $jakaśTablica[22];

$zmienna -> jakaśMetoda();

Page 20: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

20/25

PHP 3

Funkcje wejścia-wyjścia

Przekazywanie danych do przeglądarki:

Dostępne są tutaj trzy funkcje (echo – pochodząca z PHP w wersji 2, print oraz printf udostępniająca

możliwość formatowania (określenia ich formatu) wysyłanych danych). Wszystkie te funkcje pobierają

Wartości i przesyłają je do przeglądarki.

Pobieranie danych z formularzy:

PHP3 korzysta z kilku udostępnionych przez HTML metod pobierania informacji od użytkowników

Za pośrednictwem formularzy. Dostępne są tutaj listy wyboru, pola tekstowe, checkboxy i inne.

W momencie przesłania formularza każdy z wymienionych elementów staje się łańcuchem znaków

przekazywanym do serwera WWW. PHP pobiera wszystkie pola formularza i przekształca je w zmienne.

Są one traktowane jak wszystkie inne zmienne, istnieje możliwość modyfikacji ich wartości.

Zapisywanie plików na serwerze:

W celu umożliwienia zapisu danych na serwerze, formularz z którego wysyłane są dane musi korzystać

z metody POST, dodatkowo w znaczniku FORM musi być umieszczony atrybut ENCTYPE i musi mieć

przypisaną wartość multipart/form-data. Przed znacznikiem INPUT powinno być także pole ukryte,

nazwane MAX_FILE_SIZE. Jego wartość określa maksymalną dopuszczalną wielkość pliku, określoną

w bajtach. Po odebraniu formularza zostanie on zapisany jako plik w tymczasowym katalogu np./var/tmp

Page 21: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

21/25

PHP 3

Funkcje wejścia-wyjścia c.d.

Zmienne środowiskowe:

PHP udostępnia zmienne środowiskowe. Są one tworzone podczas uruchamiania nowego procesora

poleceń systemu operacyjnego. Niektóre z nich to standardowe zmienne takie jak PATH. Reszta

zmiennych definiowana jest przez CGI, są to np. REMOTE_ADDR lub HTTP_USER_AGENT.

Jedną ze zmiennych środowiskowych tworzonych przez PHP jest GLOBALS – jest to asocjacyjna

tablica wszystkich zmiennych globalnych dostępnych w skrypcie.

Cookies:

Cookies są krótkimi łańcuchami znaków, zawierającymi dane tworzone przez serwer WWW, są jednak

przechowywane w przeglądarce. Posiadają one, oprócz nazwy i wartości, datę wygaśnięcia ważności.

Większość Cookies jest tworzonych na kilka minut, niektóre jednak mogą istnieć miesiącami.

Pozwalają one na rozpoznawanie użytkownika bez konieczności podawania hasła.

Cookie przesłane przez przeglądarkę na serwer jest konwertowane do postaci zmiennej. Dodatkowo

Cookies są przechowywane w tablicy HTTP_COOKIES_VARS.

Ze względu na to, że zarówno Cookies jak i pola formularzy są zamieniane na zmienne, istnieje

komenda określająca w jakiej kolejności dokonywana jest zamiana – jest ona zawarta w pliku

Konfiguracyjnym php.ini

Page 22: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

22/25

PHP 3

Funkcje wejścia-wyjścia c.d.

Zapis i odczyt plików:

Na komunikację z plikami składają się trzy fazy:

- otwarcie strumienia do pliku

- odczytanie pliku lub zapisanie w nim jakiś informacji

- zamknięcia strumienia

Przy otwarciu strumienia otrzymywana jest liczba całkowita, pozwalająca na odwołanie się do otwartego

strumienia. Identyfikator ten jest wykorzystywany za każdym razem, gdy plik jest czytany lub

zapisywany.

Do otwarcia pliku z lokalnego systemu plików używana jest funkcja fopen, przyjmująca jako jeden z

parametrów atrybut zapisu w lub odczytu r.

Istnieje także możliwość podania adresu internetowego – wymaga to umieszczenia przed nazwą

pliku łańcucha znaków http:// lub ftp:// oraz pełnej ścieżki dostępu do pliku, zawierającą także nazwę

hosta.

Page 23: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

23/25

PHP 3

Funkcje graficzne

Analiza obrazów:

W skład tej kategorii wchodzi tylko jedna funkcja getimagesize(string nazwa_pliku)

Funkcja ta zwraca czteroelementową tablicę określającą wielkość obrazu zapisanego w pliku o podanej

nazwie. Przykładowa zawartość tablicy:

przykład:

<? $image_file = „plik1.gif”; $image_size = getimagesize ($image_file); print („<IMG SRC= \”$image_file\” $image_size[3]>\n”); ?>

0 Szerokość wyrażona w pikselach

1 Wysokość wyrażona w pikselach

2 Typ obrazka (GIF=1,JPG=2,PNG=3)

3 Łańcuch znaków o postaci „height=### width=###”, który można wykorzystać w znaczniku IMG

Page 24: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

24/25

PHP 3

Funkcje graficzne c.d.

Tworzenie obrazów GIF:

Do rozpoczęcia pracy z obrazem należy użyć funkcji imagecreate w przypadku, gdy chcemy pracować

na pustym obrazie lub z funkcji imagefromgif, która pozwala na załadowania obrazka GIF o podanej

nazwie.

W skład możliwości tworzenia grafiki w PHP wchodzi wiele funkcji matematyczno-geometrycznych,

zawierających szereg operacji na palecie kolorów.

Page 25: PHP 3 narzędzie do komunikacji z bazami danych z poziomu stron WWW oraz

25/25

PHP 3

Podsumowanie

PHP 3 można uznać za w pełni funkcjonalne narzędzie, służące do tworzenia dynamicznych stron WWW

oraz do zaawansowanej komunikacji z szeroką gamą baz danych z poziomu stron WWW poprzez

Internet.

Pomimo kilku niedociągnięć stało się bardzo popularną technologią. Stało się tak niewątpliwie dlatego,

że składnia w której można programować łączy w sobie najlepsze idee języków Java, Perl oraz C –

czyli języków programowania powszechnie uznanych i używanych.

Kolejnymi argumentami, które powiększają duże już rzesze użytkowników ( ok. 200.000 witryn i serwisów

działało w tym środowisku pod koniec 1999 roku) tego skryptowego środowiska są:

- jest ono darmowe

- kody źródłowe tego produktu są ogólnie dostępne ( istnieje więc możliwość indywidualnego rozwijania

tego środowiska)

- istnieje bardzo mocne wsparcie w postaci list dyskusyjnych i domowej strony PHP3 zawierającej

opisy wszystkich znanych problemów i ich rozwiązań.