ďťż

4.php3

Lemur zaprasza

 














HOSTING
I


PHP
I


XML
I


CGI
I


HTML
I


FORUM
I


INNE
















Dodaj stronę do ulubionych









Chcesz wiedzieć, kiedy pojawia się coś nowego? Wpisz swój e-mail:








Hosting wirtualny
   Informacje
   Cennik
   Jazda próbna


PHP
   Kurs PHP
      Wprowadzenie
      Część 1
      Część 2
      Część 3
      Część 4
      Część 5
      Część 6
   Cookies
   Klasy w PHP
   Parametry   w adresie
   Wyrażenia   regularne
   Upload plików


Skrypty PHP
   Automat. FAQ
   Banner
   Forum
   Imperator Stats
   Komentarze
   Komentarze   (by JaX)
   Księga gości   (MySQL)
   Księga gości   (bez MySQL)
   Księga gości   (by Cezi)
   Księga gości   (by Occulkot)
   Licznik
   Logowanie
   News
   Profile
   Składak
   Sonda
   Sonda tak/nie
   Users Online
   Uploader


XML
   Kurs XML'a
      Wprowadzenie
      Pierwszy      dokument XML
      Sprawa      ogonkowa
      Przekształcenia
      Narzędzia
      Zasoby online


CGI
   Kurs Perla
      Wstęp
      Uruchomienie
      Składnia

   CGI_PL
      Warunki
      Formmail
      Formmail 2
      Formweb
      Tak/nie


HTML
   Podstawy
   Tagi
      Tekst
      Tabele
      Formularze
      Nagłowek
      Inne
   Kolory



Download
   Ygreg offline
   Narzędzia


Inne
   Download
   Błędy w stronach
   Apache i okienka
   Uprawnienia   w UNIX'ie
   Netscape 6
   Darmowe konta
   O mnie





























Katalog stron:

HTML,
Java i JavaScript,
Grafika i design,
ASP,
PHP,
CGI,
Narzędzia,
Pozostałe












Kurs PHP




Część 4


Uprawnienia

     Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma
uprawnienia takie, jak użytkownik który go umieścił. Może też mieć uprawnienia użytkownika nobody - wtedy żeby móc ze skryptu zmodyfikować
jakiś plik, trzeba nadać prawo zapisu wszystkim użytkownikom. Dokładne inforacje na ten temat powinien dostarczyć administrator serwera na
którym umieszczamy skrypty.


Otwieranie plików

     Przed wykonaniem jakiejkolwiek operacji na pliku, należy go otworzyć. Służy do tego funkcja fopen. Pobiera ona 2 argumenty - pierwszy
to nazwa pliku który chcemy otworzyć. Drugi parametr może mieć następujące wartości:

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);


Odczyt z pliku

     Jest kilka funkcji służących do odczytu z pliku. Zacznę może od funkcji fgetc - odczytuje ona 1 znak z pliku:


$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.
Kolejną funkcją jest funkcja fgets:


$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.


Zapis do pliku

     Do zapisywania w pliku służy funkcja fwrite:


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.


Blokowanie plików

     Jak dotąd wszystko wydaje się proste. Co jednak stanie się, jeżeli jednocześnie zostaną uruchomione dwie kopie skryptu, i obie będą próbowały
zmienić ten sam plik? Sytuacja taka jak łatwo się domyślić, może miec przykre konsekwencje. Aby rozwiązać ten problem należy użyć blokowania
plików. Służy do tego funkcja flock:


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.

     Jeżeli określony rodzaj dostępu nie może być w danej chwili uzyskany, wykonanie skryptu zostanie wstrzymane do czasu, gdy będzie
to możliwe. Plik powinien być blokowany na jak najkrótszy czas, aby nie wstrzymywać niepotrzebnie innych operacji. Jeżeli chcemy
tylko sprawdzić, czy plik jest zablokowany, do argumentu mode należy dodać 4 - wtedy funkcja zwróci wartość TRUE jeżeli plik nie jest
zablokowany, lub FALSE gdy jest.

Przykład:


$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 */



Inne funkcje

     PHP zawiera wiele funkcji służących do obsługi plików. Oto niektóre z nich:

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



Prosty licznik tekstowy

     Licznik tekstowy posłuży jako praktyczny przykład wykorzystania dostępu do plików:


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.
















Sonda tylko w wersji online.


















16.09.2001
Artykuły "Cookies" i "Wyrażenia Regularne". Autor: Tomasz Szmigiel.


16.09.2001
Kolejna księga gości i skrypt do komentarzy.


29.08.2001
Wyszukiwarka do forum.


29.08.2001
Skrypty Komentarze i Sonda tak/nie.


29.08.2001
Skrypty Banner i Logowanie.


22.08.2001
Artykuł Parametry w adresie.

27.07.2001
Dizał XML, a w nim kurs XML'a autorstwa Pawła Stroińskiego.

21.07.2001
Skrypt FAQ.

19.07.2001
Serwery wirtualne50 MB, CGI, PHP już od 80 zł / rok.

19.07.2001
Wykupiłem domenę www.ygreg.com




























(C)opyright 1997-2001
by Grzegorz Plebański
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza