skanuj0193 (4)

skanuj0193 (4)



Rozdział 7. ♦ System plików 205

sposób, że wszystkie znaki końca linii \n są zamieniana na znaczniki <br>, dzięki czemu na stronie WWW każdy wpis będzie się znajdował w oddzielnym wierszu. Zawartość zmiennej str jest ostatecznie wysyłana do przeglądarki za pomocą instrukcji echo.

Skrypt dodaj.php, którego zadaniem jest odebranie przesłanych z formularza danych i zapisanie ich w pliku opinie.txt, został zaprezentowany na listingu 7.17. Kod rozpoczyna się od sprawdzenia, czy pod indeksem opinia w tablicy $_GET znajdują się jakieś dane (por. rozdział 5., sekcja „Metoda GET”). Jeśli danych nie ma, skrypt kończy działanie, wysyłając stosowny komunikat. Jeśli dane są obecne, plik opinie.łxt jest otwierany w trybie dopisywania — a, a ciąg znajdujący się pod indeksem opinia w tablicy $_GET, po usunięciu z niego ewentualnych znaczników HTML (funkcja strip_tags), jest zapisywany za pomocą instrukcji fwrite.

Listing 7.17. Skrypt obierający dane i zapisujące je w pliku opinie.txt <?php

if(!isSet($_GET["opinia"]) || $_GET["opinia"] == exit("Opinia nie została przesłana."):

if(!$fd - fopenCopinie.txt". 'ab')) exit("Błąd serwera. Opinia nie została zapisana.");

$str - strip_tags($_GET["opinia"]):

fwrite($fd.$str.''\n”);

fclose($fd):

echoCDziękujemy za przesłanie opinii.");

?>

Poruszanie się po danych w pliku

Jak wiemy, odczyt danych z pliku powoduje przesuwanie wskaźnika pozycji w pliku, dzieje się to jednak automatycznie, bez wiedzy programisty. Istnieje jednak możliwość odczytania aktualnej pozycji tego wskaźnika, a także zmiany jego wartości. Służą do tego celu trzy funkcje: ftel 1, fseek i rewind. Funkcja ftel ł zwraca aktualną pozycję w pliku w postaci wartości typu int. Funkcji należy przekazać w postaci argumentu deskryptor pliku, otwartego za pomocą funkcji fopen. Na listingu 7.18 widoczny jest prosty skrypt, który odczytuje z pliku kolejne wiersze tekstu i wyświetla je, podając jednocześnie aktualną pozycję wskaźnika pliku.

listing 7.18. Wykorzystanie funkcji ftell do sprawdzenia aktualnej pozycji wskaźnika pliku <?php

if(!$fd - fopenCtest.txt'. 'r')) exit("Nie mogę otworzyć pliku test.txt"): whilet!feof($fd)){

$str - fgets(Sfd):

$pos - ftell(tfd):

echoCPo odczytaniu linii: \"$str\” wskaźnik pozycji w pliku ma wartość: $pos.<br>”);

i! }

fclose($fd):


Wyszukiwarka

Podobne podstrony:

skanuj0175 (8) Rozdział 7. ♦ System plików 187 Rysunek 7.1. Efekt działania skryptu wyświetlającego

więcej podobnych podstron