Dlaczego pliki zewnętrzne?
Chodzi o wykorzystanie plików tekstowych w dwojaki sposób.
Jedne z nich potrafią przechowywać dane, nazywamy to płaskimi bazami
danych (w odróżnieniu od relacyjnych). Inne przechowują kod
skryptów, które mogą być wykorzystywane przez nasze skrypty.
Czytanie treści z zewnętrznych plików tekstowych
Aby przeczytać treść pliku tekstowego, należy go otworzyć, służy do
tego funkcja fopen().
Jako pierwszy parametr podajemy nazwę otwieranego pliku (wraz ze
ścieżką, jeśli potrzebne), drugi parametr określa sposób otwarcia
pliku:
r - otwarcie pliku tylko do odczytu,
w - otwarcie pliku do odczytu i zapisu,
zawartość pliku zostaje wykasowana,
a - otwarcie pliku do zapisu.
W pracy z zewnętrznymi plikami tekstowymi będziemy wykorzystywać
tzw. zaczepy. Zaczep to zmienna, która przechowuje działanie funkcji
(np. funkcji otwierającej plik tekstowy).
Funkcja fread() służy do przeczytania
zawartości pliku tekstowego. Ma ona dwa parametry: pierwszy oznacza
co czytamy, drugi ile znaków będzie czytanych z pliku.
Zanim zaczniemy otwierać i czytać plik zewnętrzny, warto sprawdzić,
czy w ogóle oczekiwany plik istnieje. Przydatną będzie tu funkcja
file_exists(), gdzie parametrem jest
nazwa pliku (jeżeli potrzeba wraz ze ścieżką dostępu.
ćwiczenie 10_01 - Czytanie pliku tekstowego
-
Należy umieścić na swoim koncie WWW pliki
10_01.php i 10_01.txt (do pobrania
tutaj 10_01.zip)
-
Należy uruchomić skrypt, następnie zmienić
treść pliku tekstowego 10.01.txt i powtórnie uruchomić skrypt.
-
Należy (na chwilę) usunąć z dysku plik
10_01.txt i sprawdzić działanie skryptu 10_01.php
-
Należy przeanalizować kod pliku 10_01.php
Czytanie dłuższych fragmentów plików
tekstowych
Często zdarza się, że nie wiemy, jaki długi tekst przechowywany
jest w pliku tekstowym. W powyższym rozwiązaniu musieliśmy podać
liczbę czytanych znaków. Funkcja filesize()
zwraca długość tekstu przechowywanego w pliku tekstowym podanym jako
parametr tej funkcji.
ćwiczenie 10_02 - Czytanie całego pliku tekstowego
-
Należy umieścić na swoim koncie WWW pliki
10_02.php i 10_02.txt (do pobrania
tutaj 10_02.zip)
-
Należy uruchomić skrypt, w skrypcie należy
zwrócić uwagę na sposób łamania linii tekstu.
Zapisywanie do pliku tekstowego
Użytkownik strony może zapisać informacje do pliku tekstowego.
Zanim jednak przygotujemy odpowiedni skrypt, należy zwrócić uwagę na
ustawienie odpowiednich uprawnieñ do pliku tekstowego, do którego
użytkownik ma mieć prawo zapisu.
Serwery zwykle dają możliwość właścicielowi konta (np. poprzez
połączenie ftp) zmieniać atrybuty plików (tzw. chmod). Jeżeli jest
to niemożliwe, należy skontaktować się z administratorem serwera, na
którym publikuje się skrypty.
W warunkach domowych (serwery instalowane na komputerze z systemem
Windows - patrz Dodatek nr 1) nie trzeba ustawiać szczególnych
uprawnieñ do plików tekstowych.
Aby zapisać do pliku tekstowego należy otworzyć go za pomocą
funkcji fopen() z parametrem "a" lub "w".
Użycie pierwszego z nich umożliwia dopisanie nowych wartości do
pliku. Użycie drugiego "w" powoduje skasowanie dotychczasowej
zawartości pliku i umożliwi wpisanie nowej.
Funkcją odpowiedzialną za zapisywanie do pliku jest funkcja
fwrite(). Podajemy dwa parametry:
zaczep otwartego pliku tekstowego oraz treść, jaka ma zostać
zapisana.
ćwiczenie 10_03 - Licznik odwiedzin strony (rozwiązanie I)
-
Należy umieścić na swoim koncie WWW pliki
10_03.php i 10_03.txt (do pobrania
tutaj 10_03.zip)
-
Plik 10_03.txt należy umieścić w
przygotowanym folderze "pliki"
-
Należy uruchomić skrypt, następnie kilka razy
odświeżyć stronę.
-
Należy przejrzeć zawartość pliku tekstowego
oraz skrypt zwracając uwagę na komentarze.
ćwiczenie 10_04 - Licznik odwiedzin strony (rozwiązanie II)
-
Należy umieścić na swoim koncie WWW pliki
10_04.php i 10_04.txt (do pobrania
tutaj 10_04.zip)
-
Plik 10_04.txt należy umieścić w
przygotowanym folderze "pliki"
-
Należy uruchomić skrypt, następnie kilka razy
odświeżyć stronę.
-
Należy przejrzeć zawartość pliku tekstowego
oraz skrypt zwracając uwagę na komentarze.
Porównanie obu rozwiązañ
Jak wyglądają zapisy plików tekstowych obu
rozwiązañ po kilkukrotnym uruchomieniu każdej ze stron (należy
przeglądnąć).
W pierwszym rozwiązaniu za każdym uruchomieniu strony zostaje
dopisany jeden znak do trybu tekstowego. Wyświetlenie licznika
polega na zliczeniu znaków przechowywanych w pliku tekstowym.
W drugim rozwiązaniu zostaje najpierw przeczytana wartość
przechowywana w pliku tekstowym, następnie zostaje zwiększona o
jeden, po czym nowa wartość nadpisuje poprzednią w pliku tekstowym.
Blokowanie dostępu do pliku
Może zdarzyć się sytuacja, gdy w tym samym czasie
następuje próba zapisania danych do tego samego pliku. Grozi to
utratą przechowywanych danych. W tym celu skrypt powinien po
otwarciu pliku zablokować go do zapisu przez innych użytkowników.
Służy do tego funkcja flock(). Posiada
ona dwa parametry, pierwszy z nich to nazwa pliku tekstowego, drugi:
1 - blokowanie odczytu,
2 - blokowanie zapisu,
3 - zwolnienie blokady
Jeżeli plik zostanie zablokowany, nastąpi
wstrzymanie pracy skryptu, który w tym samym czasie będzie
przeprowadzać operację zapisu. Plik tekstowy powinien być blokowany
oczywiście przez jak najkrótszy czas.
ćwiczenie 10_05 - Sonda (*)
-
Należy umieścić na swoim koncie WWW pliki
10_05.php, 10_05a.txt, 10_05b.txt 10_05a.jpg i 10_05b.jpg
(do pobrania tutaj 10_05.zip)
-
Pliki 10_05a.txt i 10_05b.txt należy umieścić
w przygotowanym folderze "pliki"
-
Należy uruchomić skrypt i oddać kilka głosów
(za i przeciw).
-
Należy przeanalizować kod skryptu ze
zwróceniem uwagi na sposób blokowania i odblokowywania plików
tekstowych.
-
Należy dodać trzecią odpowiedŸ (np. nie mam
wyrobionego zdania) i tak zmodyfikować skrypt, aby zostały
wyświetlone wyniki biorące pod uwagę trzy możliwe odpowiedzi.
Znak koñca wiersza
Przydatną może okazać się funkcja
nl2br(); służy do zamiany znaków koñca
wiersza (efekt użycia klawisza Enter) na HTML-owe znaczniki <BR>
Przykład użycia funkcji:
<?php
$tresc_ksiegi=nl2br(tresc_ksiegi);
echo"$tresc_ksiegi";
?>
Zadanie 12 - Księga gości
-
Należy umieścić na swoim koncie WWW plik
zadanie12.php
-
Należy zwrócić uwagę na następujące:
- najnowsze wpisy powinny pojawiać się na górze księgi gości,
- honorowanie użycia klawisza Enter w treści wiadomości
-
Przykład działania skryptu można obejrzeć
tutaj (wymagane połączenie z Internetem).
Inkludowanie pliku zewnętrznego
Innym rodzajem korzystania z zewnętrznych plików
tekstowych jest tzw. inkludowanie. W odróżnieniu od poprzedniego
sposobu - w plikach inkludowanych możemy zamieszczać kod PHP, który
zostanie uruchomiony przez skrypt inkludujący.
W jakim celu stosuje się tę metodę?
1. W plikach zewnętrznych można przechowywać fragmenty kodu, które
często wykorzystywane są w różnych miejscach witryny.
2. Pliki z kodem można przechowywać w katalogu na dysku, do którego
nie ma dostępu użytkownik internetowy, w taki sposób chronimy kod
PHP, który nie chcemy, aby dostał się w niepowołane ręce.
Pliki tego typu mają zwykle rozszerzenie
.inc. Funkcja pozwalająca wczytać pliki
zewnętrzne - include() - gdzie
parametrem jest nazwa pliku wczytywanego (ewentualnie także ścieżka
do tego pliku).
ćwiczenie 10_06 - Wczytywanie plików zewnętrznych
-
Należy umieścić na swoim koncie WWW pliki
10_06.php i 10_06.inc (do pobrania
tutaj 10_06.zip)
-
Plik10_06.inc należy umieścić w przygotowanym
folderze "inc"
-
Należy uruchomić skrypt i sprawdzić jego
działanie.
-
Należy podejrzeć kod znajdujący się w obu
plikach i przeanalizować treść skryptów zwracając szczególną
uwagę na zamieszczone komentarze.
Zadanie 13 - Umieszczenie stałych elementów witryny w
zewnętrznych plikach tekstowych
-
Należy przygotować plik o nazwie naglowek.inc
i umieścić go w katalogu inc.
-
W pliku należy umieścić kod, który powtarza
się na wszystkich przygotowanych do tej pory podstronach.
-
Wszystkie ćwiczenia wykonane do tej pory
powinny skorzystać z kodu (inkludować) umieszczonego w pliku
nalgowek.inc.
|