Uprawnienia
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:
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 */
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 ] |