Uprawnienia r
- otwiera plik do odczytu
r+
- otwiera plik do odczytu i zapisu
w
- kasuje zawartość pliku i otwiera go do zapisu
w+
- kasuje zawartość pliku i otwiera go do zapisu i odczytu
a
- otwiera plik do dopisywania
a+
- otwiera plik do dopisywania i odczytu Co
ciekawe, funkcja fopen może otworzyć plik na innym serwerze przez protokół
http (tylko odczyt), lub ftp (odczyt lub zapis, ale nie jednocześnie). fopen
zwraca liczbę, która służy do identyfikowania otwartego pliku. Przykład: $file=fopen("file.txt", "r"); /* otwiera plik file.txt do odczytu */ $file=fopen("file.txt", "w"); /* otwiera plik do zapisu. Jeżeli plik nie istnieje, zostanie utworzony */ $file=fopen("ftp://adres.serwera/plik", "r"); /* otwiera plik przez protokół ftp */ Po zakończeniu operacji na pliku, należy go zamknąć funkcją fclose, np: $file=fopen("file.txt", "r"); fclose($file);
$znak=getc($file); Jeśli
funkcja napotka koniec pliku, zwróci wartość FALSE. Po odczytaniu znaku,
pozycja w pliku jest przesuwana o 1 do przodu. Dzięki temu, po kolejnym wywołaniu
funkcji getc otrzymamy kolejny znak, a nie jeszcze raz ten sam. $linia=fgets($file, $maxLen); Drugi
parametr określa ile znaków funkcja może odczytać. Trzecią funkcją do
odczytu z pliku jest fread. Działa ona podobnie do fgets, z tym że nie
przerywa czytania gdy natrafi na znak nowej lini. fwrite($file, $tekst, $maxLen); Funkcja
ta zapisuje tekst podany jako 2 parametr do pliku identyfikowanego przez $file.
3 parametr jest opcjonalny i określa maksymalną długość tekstu, jaka może
zostać zapisana. Jest jeszcze funkcja fputs, ale działa ona dokładnie tak
samo. W PHP często występują identyczne funkcje pod innymi nazwami - ułatwia
to życie osobom przyzwyczajonym do innych języków. flock($file, mode); Pierwszy
argument funkcji flock to identyfikator otwartego pliku. Argument mode określa
typ dostępu, jaki chcemy uzyskać. Może mieć następujące wartości:
1
- dostęp do odczytu
2
- dostęp do zapisu
3
- zwolnienie blokady Jeżeli
chcemy uzyskać dostęp do zapisu, najpierw wszystkie inne blokady muszą być
zwolnione. Do uzyskania dostępu do odczytu wystarczy, ze plik nie będzie
zablokowany do zapisu - w ten sposób wiele skryptów może jednocześnie czytać
z pliku, ale tylko jeden może do niego zapisywać. Dodatkowo w trakcie zapisu
żaden inny skrypt nie może odczytywać z pliku - dzięki temu nie natrafi na
niekompletne dane. $file1=fopen("jakis.plik", "r"); /* otwiera 2 razy ten sam plik */ $file2=fopen("jakis.plik", "r"); flock($file1, 2); /* blokuje pierwszą kopie */ if(flock($file2, 6)) /* funkcja flock zwróci false, ponieważ plik */ { /* jest już zablokowany */ echo("Plik nie zablokowany"); }else{ echo("Plik zablokowany"); } flock($file, 3); /* odblokowuje plik */ file_exists(nazwa)
- sprawdza, czy istnieje plik o podanej nazwie
filegroup(nazwa)
- zwraca identyfikator grupy, do której należy plik
fileowner(nazwa)
- zwraca identyfikator właściciela pliku
filesize(nazwa)
- zwraca rozmiar pliku o podanej nazwie
ftell($file)
- zwraca pozycję w otwartym pliku
is_readable(nazwa)
- sprawdza, czy skrypt ma uprawnienia do odczytania pliku
is_writeable(nazwa)
- sprawdza, czy skrypt może zapisać do pliku
mkdir(nazwa)
- tworzy katalog o podanej nazwie
readfile(nazwa)
- wyświetla zawartość pliku
if(file_exists("counter.n")) /* sprawdza, czy plik istnieje */ { $file=fopen("counter.n", "r"); /* otwiera plik */ flock($file, 1); /* blokuje plik */ $ile=fgets($file, 100); /* odczytuje wartość */ flock($file, 3); /* odblokowuje plik */ fclose($file); /* zamyka plik */ $ile++; /* zwiększa wartość o 1 */ } else $ile=1; /* jeśli plik nie istnieje, wyświetli się 1 */ $file=fopen("counter.n", "w"); /* otwiera plik do zapisu */ flock($file, 2); /* blokuje do zapisu */ fwrite($file, $ile); /* zapisuje wartość */ flock($file, 3); /* odblokowuje plik */ fclose($file); /* zamyka plik */ echo($ile); /* wyświetla wartość */ Ten
skrypt odczytuje z pliku wartość, zwiększa ją o 1, a następnie wyświetla
na stronie. Jeżeli plik counter.n nie istnieje, skrypt spróbuje go utworzyć.
Ten licznik zwiększy się za każdym razem gry użytkownik wejdzie na stronę,
lub ją odświeży. Licznik odporny na odświeżanie pokaże w części 5. [ Poprzednia strona ] [ Następna strona ] |