|
Nie będzie tutaj omawiana instalacja i konfiguracja PHP, gdyż informacje takie można znaleźć na stronie http://php.zone.pl/.
1. Co to jest PHP i jak jego używać?
PHP (PHP: Hypertext Preprocessor) jest językiem skryptowym wykonywanym po stronie serwera, to znaczy, że komendy zawarte między znacznikami <?php i ?> lub <? i ?> będą wykonywane na serwerze, a nie na komputerze klienta (użytkownika) w przeglądarce. Język skryptowy PHP jest zbliżony do języków Perl oraz C. Za jego pomocą można zrealizować wszystko to, co za pomocą programów CGI.
Przykład skryptu:
<HTML> <HEAD> <TITLE>Pierwszy skrypt PHP<TITLE> </HEAD> <BODY> <?php echo("Witaj świecie!"); // Ta linia wypisuje tekst 'Witaj świecie!' ?> </BODY> </HTML> |
Wygląd znaczników określających część skrypty wykonywaną po stronie serwera jest zależna od konfiguracji zainstalowanego PHP. Jeżeli wartość short_open_tag w pliku konfiguracyjnym PHP (php.ini) posiada wartość TRUE to znaczniki mogą przyjmować obie formy (tj. <?php ?> lub <? ?>), zaś w przypadku wartości FALSE znaczniki określające zawartość PHP muszą wyglądać następująco: <?php i ?>. Każda instrukcja PHP, podobnie jak w Perlu i C, musi być zakończona znakiem średnika, tak jak zostało to pokazane w powyższym przykładzie.
Komentarze można umieszczać:
- |
za znakami // - w przypadku, gdy komentarz znajduje się tylko w jednej linii |
- |
za znakiem # - w przypadku, gdy komentarz znajduje się tylko w jednej linii |
- |
wewnątrz znaków /* ... */ - w przypadku, gdy komentarz znajdować się będzie w jednej lub większej ilości linii |
Przykład:
<?php echo "To jest linia 1"; // Ten komentarz znajduje się w jednej linii /* A ten komentarz znajduje się w dwóch liniach */ echo "To jest linia 2"; # To jest jeszcze jeden komentarz ?> |
Należy być ostrożnym, aby nie umieszczać komentarzy zawartych wewnątrz znaków /* i */ wewnątrz siebie tak jak zostało to pokazane poniżej:
<?php /* echo "To jest tekst testowy"; /* Ten komentarz spowoduje pojawienie się błędów */ */ ?> |
2. Typy zmiennych
W PHP występują następujące typy zmiennych:
- |
zawierające wartości liczb całkowitych, |
- |
zawierające wartości liczb rzeczywistych, |
- |
łańcuchy, |
- |
tablice, |
- |
obiekty. |
Przykłady zmiennych całkowitych:
$liczbaC = 123; |
# wartość dziesiętne |
$liczbaC = -123; |
# wartość ujemna |
$liczbaC = 0123; |
# wartość ósemkowa |
$liczbaC = 0x23; |
# wartość szestnastkowa |
Przykłady zmiennych rzeczywistych:
$liczbaR = 4.321; |
$liczbaR = -4.3e2; |
Łańcuchy mogą być zawarte w pojedynczym cudzysłowiu, tj. ', lub w podwójnym, tj. ". Jeżeli łańcuch zostanie zawarty w podwójnym cudzysłowiu to wartości zmiennych zawartych wewnątrz łańcucha będą wyświetlone, zaś w przypadku pojedynczego cudzysłowia, nie będą. Znak \ poprzedza elementy określające znaki specjalne. W przypadku pojedynczego cudzysłowia występują tylko dwa znaki specjalne, tj.:
\\ |
- wyświetla znak \ |
\' |
- wyświetla znak ' |
W przypadku podwójnego cudzysłowia znaków specjalnych występuje znacznie więcej. Oto one:
\n |
- przejście do nowej linii |
\r |
- powrót karetki do początku linii |
\t |
- odpowiednik klawisza Tab (tabulacja) |
\\ |
- wyświetla znak \ |
\" |
- wyświetla znak " |
\$ |
- wyświetla znak $ |
\[0-7]{1,3} |
- wyświetla znak odpowiadający wartości podanej w formacie ósemkowym |
\x[0-9A-Fa-F]{1,2} |
- wyświetla znak odpowiadający wartości podanej w formacie szestnastkowym |
Przykłady użycia zmiennej wewnątrz łańcucha:
$liczba = 5; $lancuch = "<p>Liczba to $liczba</p>"; $lancuch2 = '<p>Liczba to $liczba</p>'; |
echo $lancuch; |
// wyświetli się komunikat "Liczba to 5" |
echo $lancuch2; |
// wyświetli się komunikat "Liczba to $liczba" |
Jeśli jest potrzeba wyświetlenia dowolnego wyrazu z łańcucha można to zrobić w następujący sposób:
$lancuch = "<p>To jest przykład testowy.</p>"; |
echo $lancuch[0]; |
// wyświetli się komunikat "To" |
echo $lancuch[2]; |
// wyświetli się komunikat "przykład" |
echo $lancuch[strlen($lancuch) - 1]; |
// wyświetli się komunikat "testowy.", ostatni wyraz |
W powyższym przykładzie funkcja strlen(nazwaŁańcucha) zwraca długość łańcucha nazwaŁańcucha.
Istnieje możliwość przypisania zmiennej łańcucha, który nie będzie zawierał symboli określających znaków specjalnych, takich jak przejście do następnej linii, itp., mimo tego, że tekst będzie znajdował się w kilku liniach. Do tego celu służy składnia <<. Należy tylko pamiętać o tym, aby za znakami << znalazł się identyfikator w postaci tekstu oraz ten sam identyfikator na końcu łańcucha. Oto przykład:
$lancuch = <<EOD |
|
Przykład łańcucha znajdującego się w kilku liniach. |
EOD; |
Łączenie dwóch łańcuchów odbywa się za pomocą operatora ".", oto przykład:
$lancuch = "Ten łańcuch"; $lancuch = $lancuch . " zawiera jeszcze ten tekst."; |
i jest on równoważny zapisowi
$lancuch = "Ten łańcuch"; $lancuch .= " zawiera jeszcze ten tekst."; |
Tablice określają grupy zmiennych skalarnych. Tablice mogą być jedno- lub wielowymiarowe. W celu jej utworzenia można posłużyć się funkcjami list() oraz array() lub poprzez bezpośrednie przypisanie wartości odpowiedniej pozycji tablicy, np.:
$tablica[0] = "tekst"; $tablica[1] = "inny"; $tablica[2] = "jeden"; $tablica2["wiek"] = 14; |
Powyższy zapis jest równoważny zapisowi:
$tablica = array( |
|
0 => "tekst", 1 => "inny", 2 => "jeden"); |
$tablica2 = array( |
|
"wiek" => 14); |
Jeśli istnieje potrzeba dodania elementów do tablicy można to zrobić w następujący sposób:
$tablica[] = "lancuch"; |
// $tablica[3] = "lancuch" |
$tablica[] = "jeszcze"; |
// $tablica[4] = "jeszcze" |
w celu określenia długości łańcucha należy posłużyć się funkcją count(), np.:
echo count($tablica); |
// wyświetli wartość 5 |
Funkcje odpowiadające za sortowanie tablicy:
asort() |
- |
sortuje elementy tablicy alfabetycznie rosnąco |
arsort() |
- |
sortuje elementy tablicy alfabetycznie malejąco |
ksort() |
- |
sortuje elementy tablicy według klucza rosnąco |
krsort() |
- |
sortuje elementy tablicy według klucza malejąco |
rsort() |
- |
sortuje elementy tablicy malejąco |
sort() |
- |
sortuje elementy tablicy rosnąco |
uasort() |
- |
sortuje elementy tablicy wykorzystując funkcję zdefiniowaną przez użytkownika |
usort() |
- |
sortuje elementy tablicy według wartości zwróconej przez funkcję zdefiniowaną przez użytkownika |
uksort() |
- |
sortuje elementy tablicy według wartości zwróconej przez funkcję zdefiniowaną przez użytkownika |
W celu przemieszczania się po elementach tablicy można użyć funkcji next(), prev() lub each(). W celu pobrania bieżącego elementu można użyć funkcji current(pozycjaElementu).
next() |
- |
zwraca wartość następnego elementu tablicy względem bieżącej pozycji; w przypadku wystąpienia końca tablicy zwraca wartość FALSE |
prev() |
- |
zwraca wartość poprzedzającego elementu tablicy względem bieżącej pozycji; w przypadku braku elementów zwraca wartość FALSE |
each() |
- |
zwraca parę zawartą w czteroelementowej tablicy, tj. klucz i wartość, dotyczącą bieżącego elementu tablicy, po czym następuje zmiana pozycji na element następny; w przypadku wystąpienia ostatniego elementu tablicy pozycja nie jest zmieniana; przykład:
|
$foo = array ("Robert" => "Bob", "Seppo" => "Sepi"); $bar = each ($foo); |
teraz $bar będzie zawierać: |
|
0 => 'Robert' 1 => 'Bob' key => 'Robert' value => 'Bob' | |
current() |
- |
zwraca bieżący element tablicy |
end() |
- |
wskazuje ostatni element tablicy jako element bieżący |
Przykłady tablic wielowymiarowych:
$tab[1][0] = 3; $tab["liczba"][3] = 4; $tab[2]["liczba"] = 5; $tab["liczba"][1]["kolor"] = 6; $tab["kolor"]["tekst"][0]["liczba"] = 7; |
Używając tablic wielowymiarowych należy pamiętać o tym, że wewnątrz łańcucha w celu wyświetlenia ich wartości należy umieścić je wewnątrz nawiasów klamrowych tak, jak to pokazuje poniższy przykład:
$tab["liczba"][1]["kolor"] = 6; $lancuch = "Wartosc łańcucha to {$tab[liczba][1][kolor]}"; |
// Ten przykład dotyczy PHP4 |
lub
$tab["liczba"][1]["kolor"] = 6; $lancuch = "Wartosc łańcucha to " . $tab[liczba][1][kolor]; |
W celu posługiwania się obiektami należy ja najpierw zainicjalizować. Oto przykład:
<?php class klasa { |
|
function rob_klasa() { |
|
|
echo "Wykonuje się funkcja rob_klasa()"; |
|
} |
} $moja_klasa = new klasa; $moja_klasa->rob_klasa(); ?> |
Nazwy zmiennych w PHP: - muszą być poprzedzane znakiem dolara "$", - w przypadku wielkich i małych liter należy pamiętać, że są one rozróżniane, czyli zmienna Liczba to nie jest to samo co zmienna liczba, - mogą zawierać tylko znaki tj. a-z, A-Z, "_" oraz znaki z zakresu od 7F (hex) do FF (hex).
Poniżej przedstawione zostały zmienne tworzone przez serwer Apache (http://www.apache.org/).
Nazwa zmiennej |
Opis |
GATEWAY_INTERFACE |
opis specyfikacji CGI używany przez serwer WWW, np. 'CGI/1.1' |
SERVER_NAME |
nazwa serwera WWW, na którym znajduje się bieżacy skrypt |
SERVER_SOFTWARE |
łańcuch identyfikujący serwer, podawany w nagłówku w czasie przesyłania odpowiedzi na "zapytanie" klienta (przeglądarki) |
SERVER_PROTOCOL |
nazwa oraz wersja protokołu wymiany informacji, np. 'HTTP/1.0' |
REQUEST_METHOD |
określa metodę dostępu do strony, np. 'GET', 'POST', 'HEAD', 'PUT' |
QUERY_STRING |
zawiera ciąg znaków znajdujący się w adresie wywołanej strony po znaku '?' |
DOCUMENT_ROOT |
zawiera ścieżkę do katalogu głównego, w którym skrypt jest wykonywany |
HTTP_ACCEPT |
zawartość Accept: nagłówek z bieżącego wywołania |
HTTP_ACCEPT_CHARSET |
zawartość Accept-Charset: nagłówek z bieżącego wywołania, np. 'iso-8859-2,*,utf-8' |
HTTP_ENCODING |
zawartość Accept-Encoding: nagłówek z bieżącego wywołania, np. 'gzip' |
HTTP_ACCEPT_LANGUAGE |
zawartość Accept-Language: nagłówek z bieżącego wywołania, np. 'pl' |
HTTP_CONNECTION |
zawartość Connection: nagłówek z bieżącego wywołania, np. 'Keep-Alive' |
HTTP_HOST |
zawartość Host: nagłówek z bieżącego wywołania |
HTTP_REFERER |
zawiera adres strony z której została wywołana strona bieżąca, nie obsługiwane przez wszystkie przeglądarki |
HTTP_USER_AGENT |
zawartość User_Agent: nagłówek z bieżącego wywołania, łańcuch zawierający informacje na temat przeglądarki, np. 'Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)' |
REMOTE_ADDR |
zawiera adres IP z pod którego użytkownik wywołał bieżącą stronę |
REMOTE_PORT |
zawiera numer portu użytego po stronie użytkownika wywołującego stronę (klienta) przez który odbywa się komunikacja z serwerem WWW |
SCRIPT_FILENAME |
zawiera pełną ścieżkę do aktualnie wykonywanego (wywołanego) skryptu |
SERVER_ADMIN |
zawiera wartość przypisaną dyrektywie SERVER_ADMIN (Apache) w pliku konfiguracyjnym serwera WWW |
SERVER_PORT |
zawiera numer portu przez który komunikuje się serwer WWW. Domyślnie jest to wartość '80' lecz może być inna |
SCRIPT_NAME |
zawiera ścieżkę do bieżącego skryptu |
REQUEST_URI |
zawiera ścieżkę wirtualną do bieżącego skryptu, np. '/index.html' |
Zmienne środowiskowe:
Nazwa zmiennej |
Opis |
argv |
tablica argumentów dołączonych do skryptu w przypadku, gdy jest on wywołany z lini komend lub poprzez wywołanie metody GET |
argc |
zawiera liczbę parametrów podanych w lini komend, dołączonych do skryptu |
PHP_SELF |
nazwa pliku aktualnie wykonywanego w odniesieniu do katalogu głównego WWW (ścieżka wirtualna); jeżeli skrypt wywołany jest z linii komend - zmienna jest niedostępna |
HTTP_COOKIES_VARS |
zawiera tablice 'cookies' dołączonych do skryptu; dostępna w przypadku ustawionej wartości track_vars na ON lub wywołaniu dyrektywy <?php_track_vars?> |
HTTP_GET_VARS, _GET |
zawiera tablicę zmiennych dołączonych do skryptu poprzez wywołanie metody GET; dostępna w przypadku ustawionej wartości track_vars na ON lub wywołaniu dyrektywy <?php_track_vars?> |
HTTP_POST_VARS, _POST |
zawiera tablicę zmiennych dołączonych do skryptu poprzez wywołanie metody POST; dostępna w przypadku ustawionej wartości track_vars na ON lub wywołaniu dyrektywy <?php_track_vars?> | | |