Rozdział 7. ♦ System plików 209
Plik counter.txt trzeba utworzyć samodzielnie i zapisać w dowolnie wybranym katalogu serwera. W kodzie skryptu przyjęty został katalog bieżący ./. Pierwsza instrukcja sprawdza, czy plik o podanej nazwie istnieje. Jeśli istnieje, jest otwierany w trybie r+, w przeciwnym wypadku skrypt kończy działanie, wysyłając komunikat o braku pliku licznika. Podobnie, jeśli otwarcie pliku się nie powiedzie, czyli kiedy zmienna fd przechowująca jego deskryptor będzie miała wartość false, skrypt zakończy działanie. Należy zwrócić uwagę, że takie awaryjne zakończenie skryptu powoduje również zaniechanie wysłania do przeglądarki pozostałej części kodu HTML.
Jeśli jednak operacja otwarcia zakończy się sukcesem, za pomocą funkcji fgets odczytywana jest pierwsza linia tekstu, która zawiera liczbę odwiedzin. Odczytana wartość jest zapisywana w zmiennej count oraz zwiększana o jeden. Po wykonaniu tych operacji wskaźnik pozycji w pliku jest przesuwany na jego początek (fseek($fd. 0)), a następnie wartość zapisana w count jest ponownie zapisywana do pliku za pomocą funkcji fputs. Na zakończenie plik jest zamykany przez wywołanie funkcji fclose, a wartość zapisana w count jest wysyłana do przeglądarki. Przykładowy obraz takiego licznika został zaprezentowany na rysunku 7.8.
Rysunek 7.8.
Przykładowy obraz licznika generowanego przez skrypt z listingu 7.19
EŁ Edycja 2Sd* Pr |
c-jć ZaMadb tjaraę&a Pomoc & |
J fj; | - Htp:jfocałostjindtx.phs © Idź |C. | |
^ Roaroczrij przygcd... |
J Attuolnoid |
Treść strony | |
Ta strona została odwiedzona 11 razy od 20 maja 2006 roku. |
Poprzedni przykład pokazywał, w jaki sposób umieścić na stronie WWW prosty licznik tekstowy ukazujący liczbę odwiedzin. Rozwiązanie to można urozmaicić, jeśli dane będą prezentowane w postaci graficznej. W tym celu musimy przygotować dziesięć obrazów przedstawiających kolejne cyfry od 0 do 9. Do ich wykonania można wykorzystać dowolny edytor graficzny lub poszukać gotowych grafik w internecie. Obrazy należy zapisać w plikach, których nazwy odpowiadają poszczególnym cyfrom, czyli 0.jpg, l.jpg itd.
Skrypt generujący licznik w postaci graficznej będzie miał podobną postać, jak prezentowany wcześniej licznik tekstowy. Dane o liczbie odwiedzin będą przechowywane w pliku o nazwie counter.txt. Plik będzie otwierany za pomocą funkcji fopen, a pierwszy wiersz tekstu odczytywany przy użyciu funkcji fgets. Odczytana liczba zostanie zwiększona o jeden i ponownie zapisana w pliku counter.txt za pomocą funkcji fputs.
Do wygenerowania serii znaczników <img>, dzięki którym na stronie pojawią się grafiki odzwierciedlające liczbę odwiedzin, wykorzystywana będzie pętla for. Pobierze ona kolejne znaki z ciągu count i doklei do nich końcówkę jpg (jeśli pliki zostały zapisane w innym formacie, należy oczywiście zmienić odpowiednio nazwę rozszerzenia).