PHP 3

advertisement
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
1/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
2/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.
3/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.
4/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.
5/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.
6/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
7/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;
}
}
8/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”);
jest host_url:<font color=blue>”;
„host_url”);
color=red>”;
„host_opis”);
echo”</font><br>To
echo pg_result ($result, $i,
echo”</font><br>To jest host_opis:<font
echo pg_result ($result, $i,
echo „</font><br><hr>”;
$i++;
}
}
9/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>
10/25
PHP 3
Wynik otrzymany w przeglądarce
11/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.
12/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.
13/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.
14/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()
{
15/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
16/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)
{
$this->name = $inputName;
$this->password = $inputPassword;
$this->last_login = time();
}
fuction getLastLogin()
{
return (Date („d M Y”, $this->last_login));
}
}
// metoda init wykorzystuje zmienną this
// do przypisania wartości trzem atrybutom obiektu
17/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.
18/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();
19/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
20/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
21/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.
22/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:
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
przykład:
<?
$image_file = „plik1.gif”;
$image_size = getimagesize ($image_file);
print („<IMG SRC= \”$image_file\” $image_size[3]>\n”);
?>
23/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.
24/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ń.
25/25
Download