Wyższa Szkoła Gospodarki w Bydgoszczy
Instytut Informatyki Stosowanej
Technologie internetowe (2006/2007)
Ćwiczenie 2.
Wprowadzenie do PHP – dynamiczne generowanie stron WWW.
1. Cel ćwiczenia
Celem ćwiczenia jest poznanie języka PHP. Przedstawiono proste przykłady i zastosowania języka
oraz jego możliwości w zakresie dynamicznego generowania stron WWW, operacji na plikach oraz
katalogach itp. Ćwiczenie wymaga znajomości podstaw języka HTML oraz C (instrukcje
warunkowe, formatujące itp.).
2. Wstęp do PHP
PHP jest językiem skryptowym działającym po stronie serwera. Kod PHP osadzany jest w
dokumencie HTML i wykonywany w trakcie wywołania strony. Składnią język ten zbliżony jest do
języka C.
Przetwarzanie PHP jest wyzwalane przez specjalny typ, definiowany w pliku konfiguracyjnym
serwera informujący, że pliki z danym rozszerzeniem mają być traktowane jako skrypty (*.php).
Pliki z powyższym rozszerzeniem nie są od razu wysyłane tylko analizowane pod kątem
wystąpienia znaczników PHP.
Zalety PHP:
wysoka wydajność,
interfejsy do wielu różnych systemów baz danych (MySQL, Oracle, mSQL, Postgres,
Informix, InterBase, Sybase, ODBC itd.),
wbudowane biblioteki służące do rozwiązywania wielu popularnych zadań WWW,
dostęp do popularnych usług sieciowych (HTTP, IMAP, POP3, SMTP, FTP, DNS, itp.) oraz
możliwość tworzenia i otwierania gniazd sieciowych,
niski koszt implementacji,
przenośność,
dostępność kodu źródłowego (Open Source).
Wyższa Szkoła Gospodarki w Bydgoszczy
Instytut Informatyki Stosowanej
Technologie internetowe (2006/2007)
Popularne zastosowania PHP:
przetwarzanie danych z formularzy,
uwierzytelnianie użytkownika i kontrola dostępu (sesje),
współpraca z bazami danych (tworzenie, usuwanie, modyfikowanie zawartości, pobieranie
informacji) i tworzenie interfejsu WWW dla tych operacji,
funkcje plikowe (tworzenie katalogów, tworzenie, odczytywanie, zapisywanie plików,
modyfikowanie praw dostępu, wywoływanie funkcji systemowych),
dynamiczne generowanie obrazów (GIF, JPEG, PNG) i dokumentów (PDF, RTF),
3. Osadzanie kodu PHP w dokumencie HTML - zmienne
Poniższe ćwiczenia wymagają zainstalowanego i poprawnie skonfigurowanego serwera WWW
(Apache) oraz współpracującego z nim interpretera kodu PHP (przynajmniej w wersji 4).
Omówiona zostanie instalacja serwera Apache z obsługą PHP dla Windows (PHPTriad).
Podczas zajęć laboratoryjnych wykorzystany zostanie serwer w sieci lokalnej oparty na
systemie Linux Slackware 9.0.
Początkowy skrypt każdego ćwiczenia powinien nosić nazwę index.php i zostać umieszczony w
katalogu domowym użytkownika. Studenci logują się do lokalnego serwera o adresie:
prowadz1.info.ab-byd.edu.pl (192.168.5.26) z wykorzystaniem oprogramowania - klienta FTP
(Total Commander) - nazwa użytkownika: student1...student15 (hasło takie samo jak nazwa
użytkownika).
Skrypt stworzony przez użytkownika studentX znajduje się pod adresem:
http://prowadz1.info.ab-byd.edu.pl/studentX/
Poniższy skrypt umieść w pliku index.php i sprawdź jego działanie:
<HTML>
<HEAD>
<TITLE>przykład</TITLE>
</HEAD>
<BODY>
<?php echo ”<H1>Przykład</H1>” ?>
<? echo ”osadzanie kodu” ?>
</BODY>
</HTML>
Poniższy skrypt pozwala dodać zawartość dynamiczną (w tym wypadku bieżący czas i data):
<HTML>
<HEAD>
<TITLE>przykład</TITLE>
</HEAD>
<BODY>
<?
// to jest komentarz: użycie funkcji date()
echo ”Dziś jest ”;
echo date(”jS F H:i”);
?>
</BODY>
</HTML>
Wyższa Szkoła Gospodarki w Bydgoszczy
Instytut Informatyki Stosowanej
Technologie internetowe (2006/2007)
Korzystając z podręcznika PHP (www.php.net) zapoznaj się ze sposobem formatowania daty.
W przeciwieństwie do języka C, deklaracja zmiennej następuje automatycznie w trakcie
przypisania. Typ zmiennej zostaje określony na podstawie wartości stojącej po prawej stronie znaku
= (w pierwszym podstawieniu jest to zmienna typu integer, w drugim typu string (łańcuch
tekstowy). Polecenie echo pozwala wyświetlić zmienną lub dowolny tekst (tekst może zawierać
znaczniki HTML).
<?
$a
=
25;
//deklaracja i przypisanie
echo
$a
;
echo
"<BR>"
;
$a
=
"ta sama zmienna"
;
echo
$a
;
?>
3. Zmienne formularza i przesyłanie zmiennych
Znaczniki <FORM> (plik index.php) zawierają komponenty standardowego formularza WWW –
pola tekstowe oraz przycisk. Akcja formularza ustawiona jest na skrypt send.php - w momencie
naciśnięcia na przycisk (submit) zostanie załadowana strona send.php, a nazwy pól formularza
(imie, nazwisko) staną się zmiennymi tekstowymi w skrypcie send.php ($imie, $nazwisko).
Wartości tych zmiennych to informacje, które użytkownik wpisał w pola tekstowe. W metodzie
post wysyłane dane są niewidoczne dla użytkownika (przesyłane jako osobny pakiet).
<FORM
METHOD
=
"post"
ACTION
=
"send.php"
>
<INPUT
TYPE
=
"text"
NAME
=
"imie"
><BR>
<INPUT
TYPE
=
"text"
NAME
=
"nazwisko"
><BR>
<INPUT
TYPE
=
"submit"
VALUE
=
"wyślij"
>
</FORM>
<?
// to jest zawartość sekcji <BODY> pliku send.php
echo
"Podałeś: "
.
$imie
.
" "
.
$nazwisko
;
?>
Zmienne można także przesłać w adresie URL (w odnośniku do danej strony zawierającej skrypt
PHP). Plik index.php można zapisać na dwa sposoby:
<A
HREF
=
"send.php?a=2"
>dalej</A>
lub umieszczając kod odnośnika w kodzie PHP (wartość przesyłanej zmiennej może być
wyznaczona w trakcie działania skryptu):
<?
$a
=
2;
echo
"<A HREF=\"
send
.
php
?
a
=
".$a."
\
">dalej</A>"
;
?>
Skrypt send.php wyświetla przesłaną zmienną:
<?
echo
"Zmienna <B>a</B> wynosi "
.
$a
;
?>
Wyższa Szkoła Gospodarki w Bydgoszczy
Instytut Informatyki Stosowanej
Technologie internetowe (2006/2007)
4. Odczyt danych z pliku
Dostęp do plików (odczyt, zapis) odbywa się podobnie jak w języku C. Otwarty do odczytu lub
zapisu plik zostaje skojarzony z uchwytem pliku – liczbą typu integer. Funkcja fgets() zwraca
kolejne wiersze pliku i przypisuje je zmiennej $linia. Drugi parametr tej funkcji określa liczbę
znaków w linii.
<?
$f
=
fopen(
"produkty.txt"
,
"r"
)
;
while
(!feof(
$f
))
{
$linia
=
fgets(
$f
,100
)
;
echo
$linia
.
"<BR>"
;
}
fclose(
$f
)
;
?>
5. Edycja danych i zapis do pliku
Odczytu z pliku możemy także dokonać przypisując zmiennej tekstowej całą zawartość pliku.
Funkcja filesize() zwraca rozmiar pliku, a fread() – zawartość całego pliku. Zmienna ta podstawiana
jest w polu <TEXTAREA> (pole tekstowe domyślnie wypełnione jest zawartością pliku):
<?
$f
=
fopen(
"produkty.txt"
,
"r"
)
;
$size
=
filesize(
"produkty.txt"
)
;
$plik
=
fread(
$f
,
$size
)
;
fclose(
$f
)
;
echo
"<FORM METHOD=\"
post\
" ACTION=\"
zapisz
.
php\
">"
;
echo
"<TEXTAREA NAME=\"
plik\
">"
.
$plik
.
"</TEXTAREA>"
;
echo
"<BR><INPUT TYPE=\"
submit\
" VALUE=\"
zapisz\
">"
;
echo
"</FORM>"
;
?>
W skrypcie zapisz.php ten sam plik zostaje otwarty do zapisu. Zmodyfikowany tekst (z pola
<TEXTAREA> formularza) przekazywany jest do funkcji fwrite(), która nadpisuje istniejący plik
wartością zmiennej $plik:
<?
$f
=
fopen(
"produkty.txt"
,
"w"
)
;
echo
"Zapisywanie..."
;
fwrite(
$f
,
$plik
)
;
fclose(
$f
)
;
?>
6. Serwis WWW w jednym pliku
Na podstawie powyższych wiadomości oraz zasad projektowania serwisu WWW (ćwiczenie 3)
można stworzyć zarządzalną witrynę na bazie jednego skryptu PHP oraz opcjonalnych plików
tekstowych z treścią serwisu:
Wyższa Szkoła Gospodarki w Bydgoszczy
Instytut Informatyki Stosowanej
Technologie internetowe (2006/2007)
<?
echo
"<A HREF=\"
index
.
php
?
m
=
firma\
">firma</A> | "
;
echo
"<A HREF=\"
index
.
php
?
m
=
produkty\
">produkty</A> | "
;
echo
"<A HREF=\"
index
.
php
?
m
=
kontakt\
">kontakt</A><BR><BR>"
;
if
(
$m
==
"firma"
)
{
//wyświetl informacje o firmie albo plik firma.txt
}
if
(
$m
==
"produkty"
)
{
//wyświetl informacje o produktach albo plik produkty.txt
}
if
(
$m
==
"kontakt"
)
{
//wyświetl dane teleadresowe albo plik kontakt.txt
}
?>
Zastosuj powyższe rozwiązanie w wykonanym w ćwiczeniu 3 projekcie serwisu WWW.
7. Wnioski i spostrzeżenia
8. Literatura
[1] Welling L., Thomson L., PHP i MySQL. Tworzenie stron WWW, HELION, Gliwice 2002,
[2] Lerdorf
R.,
PHP4. Leksykon kieszonkowy, HELION, Gliwice 2003,
[3] Ford
A.,
Apache. Leksykon kieszonkowy, HELION, Gliwice 2000,
[4] www.php.net,