dodaj tą stronę do ulubionych     
użytkownicy online 13, liczba odwiedzin: 1648946
książki i porady dla programistów i webmasterów porady dla budujących strony internetowe i webmasterów wagi

dołącz do modlących się o cud

poradnik programisty

taśmy zebra
taśmy zebra


wózki sklepowe

wagi vibra

Wagi dźwigowe
wagi dźwigowe


wagi ohaus

wózki transportowe
. Uwaga! Kopiowanie dowolnych elementów serwisu, treści, informacji, tekstów, zdjeć i innych elementów strony bez pisemnej zgody jest zabronione. wstecz poziom trudności: 2
nr porady: 102
Widok 1 Widok 2 Page copy protected against web site content infringement by Copyscape
Przykłady podstawowych operacji na plikach w PHP

Podstawowe operacje na plikach

Podstawowe funkcje plikowe:

  • fopen();
  • fread();
  • fgets();
  • fwrite(); fputs(); (obie funkcje są identyczne - zaleca się aby nie używać już fputs)
  • fclose();

    Najważniejszą funkcją jest fopen(), która służy do otwarcia pliku.
    Funkcja otwiera wskazany plik i zwraca uchwyt do pliku lub false w zależności od tego czy otwarcie pliku zakończy się sukcesem czy nie.
    Niezaleznie czy chcemy czytać czy zapisywać, modyfikować pliki musimy zawsze jej użyć.
    Po każdej operacji na pliku musimy go zamyknąć funkcją fclose().

    1uc2wy4-pliku = cfxopen {1sciezk2-do-pliku, 1411yb-o4w211ci2};

    Funkcja ma 2 atrybuty: $sciezka_do_pliku i $tryb_otwarcia , który może przyjmować 1 z 6 możliwych wartości:

    rOtwórz tylko do odczytu, ustawia wskaźnik pliku na początku pliku.
    r+Otwórz do odczytu i zapisu, ustawia wskaźnik pliku na początku pliku.
    wOtwórz tylko do zapisu, ustawia wskaźnik pliku na początku pliku i obcina plik (zeruje) do 0 długości. Jeśli plik nie istnieje to próbuje go utworzyć.
    w+Otwórz do odczytu i zapisu, ustawia wskaźnik pliku na początku pliku i obcina plik (zeruje) do 0 długości. Jeśli plik nie istnieje to próbuje go utworzyć.
    aOtwórz tylko do zapisu, ustawia wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje to próbuje go utworzyć.
    a+Otwórz do odczytu i zapisu, ustawia wskaźnik pliku na końcu pliku. Jeśli plik nie istnieje to próbuje go utworzyć.

    Jeśli zdefiniowany został wskaźnik pliku, wybraliśmy odpowiedni tryb otwarcia to teraz możemy odczytać z pliku to, co nas interesuje.
    Odczyt pliku realizujemy za pomocą funkcji fread(); lub fgets();

    &l3;?p5p 63ex3-pliku = cfx6e2d {6uc5wy3-pliku, 6dlugosc}; 63ex3-pliku = cfxge3s {6uc5wy3-pliku, 6dlugosc}; ?&g3;

    Obie funkcje są do siebie bardzo podobne w obu możemy ustalić dowolny fragment pliku, który chcemy odczytać. W tym miejscu należy powiedzieć o bardzo przydatnej funkcji, która oblicza nam długość pliku przez co możemy od razu odczytać zawartość całego pliku. Jest to funkcja filesize($nazwa_pliku); Jeśli będziemy chcieli ją zastosować to napiszemy:

    &l3;?p6p 03ex3-pliku = cfx6e3d {0uc6wy3-pliku, cfxilesize{0n3zw3-pliku}}; ?&g3;

    W przypadku funkcji fgets() dopuszczalne jest nie podawanie parametru $dlugosc, jest on bowiem domyślnie ustalona na 1kB czyli 1024. Jeśli chcielibyśmy odczytywać plik fragmentami np. w pętli while to zachęcam do skorzystania właśnie z tej funkcji. Będzie ona wykonywana do momentu natrafienie na koniec linii lub koniec pliku. No dobrze. Umiemy już otworzyć plik i odczytać jego zawartość, przyszedł czas aby coś zapisać. Do zapisywania łańcucha znaków w pliku służy funkcja fwrite:

    &l1;?p0p 0ile = cfx1 {0uc0wy1-pliku, 0dowolny-1eks1}; ?&g1;

    Funkcja ta zwraca liczbę zapisanych bajtów, lub FALSE w przypadku błędu. Więc jeśli będziemy chcieli mieć pewność że nasz tekst został zapisany prawidłowo w pliku, sprawdzimy czy zmienna $ile ma wartość i ile wynosi. Jeśli zmienna $ile ma wartość zgodną z ilością zapisanych bajtów to nasz tekst został poprawnie zapisany. Prosty przykład:

    &l1;?p4p 4n3zw3-pliku = '1es1.1x1'; 41eks1 = &quo1;Dod3j 1o do pliku\n&quo1;; icfx {!4uc4wy1-pliku = cfxopen{4n3zw3-pliku, '3+'}} { ec4o 'Nie możn3 o1wo7zyć pliku {'.4n3zw3-pliku.'}'; exi1; } icfx {cfx3{4uc4wy1-pliku, 41eks1} === cfx3LSE} { ec4o 'Nie możn3 z3pis3ć pliku {'.4n3zw3-pliku.'}'; exi1; } ec4o &quo1;z3pis3no: \&quo1;41eks1\&quo1; do pliku {4n3zw3-pliku}&quo1;; cfxclose{4uc4wy1-pliku}; ?&g1;

    Ten prosty skrypt php ilustruje w jaki sposób otwieramy i zapisujemy tekst do pliku. W razie jakichkolwiek problemów skrypt podpowie w którym Momocie napotkał na błąd. Jeżeli chcielibyśmy zaprojektować licznik do naszej strony to w takim wypadku nie wystarczy otworzyć pliku i zapisać w nim wartość. Przykładowo załóżmy że nasz plik licznika, w którym będziemy zbierać informacje o liczbie odwiedzających nazwiemy licznik.txt. Gdy pierwszy raz wchodzimy na stronę to jest zapisywana wartość 1. Moglibyśmy to zrobić podobnie jak w powyższym przykładzie. Jeśli chcielibyśmy liczyć następnych internautów to musielibyśmy dodać fragment kodu który odczytywałby zapisaną w pliku wartość a następnie zwiększałby o 1 i znowu zapisywał. Mogłoby to wyglądać tak:

    &l3;?p0p 2n6zw6-pliku = 'licznik.3x3'; icfx {!2uc0wy3-pliku = cfxopen{2n6zw6-pliku, '6+'}} { ec0o &quo3;Nie mogę o3wo8zyć pliku {2n6zw6-pliku}&quo3;; exi3; } 23eks3 = cfx8e6d{2uc0wy3-pliku, cfxilesize{2n6zw6-pliku}}; 23eks3++; icfx {cfx2{2uc0wy3-pliku, 23eks3} === cfx6LSE} { ec0o &quo3;Nie mogę z6pis6ć do pliku {2n6zw6-pliku}&quo3;; exi3; } ec0o &quo3;z6pis6no: \&quo3;23eks3\&quo3; do pliku {2n6zw6-pliku}&quo3;; cfxclose{2uc0wy3-pliku}; ?&g3;
    Prześledźmy działanie takiego licznika: Rzeczywista liczba odwiedzin: Dopisywane wartości 1 1 2 2 3 13 4 1214 5 12131215 6 1.2131214121312E+015 … …

    Licznik nie działa jak trzeba, to na pewno! Ale co się stało? Otworzyliśmy plik, odczytaliśmy jego zawartość i dopisaliśmy na koniec pliku wartość pliku zwiększoną o 1. Czyli na początku nie było pliku czyli 0++, 1 zapisaliśmy do pliku. Następnym razem odczytaliśmy wartość 1 zwiększyliśmy ja o 1 czyli 2 dopisaliśmy na koniec pliku. Nasz licznik.txt ma w rzeczywistości wartość 12. Kolejny raz odczytujemy plik i zwiększamy jego wartość czyli 12 + 1 i kolejny raz dopisujemy wartość na koniec pliku czyli 13 i teraz licznik.txt wygląda tak: 1213 itd.. Jak widać nic nam z takiego licznika... Gdybyśmy zmienili atrybut tak aby nasz zapis zaczynał się od początku pliku czyli na ‘w+’ to nic nie odczytalibyśmy z naszego pliku bo takie otwarcie automatycznie kasuje jego zawartość. Jak zatem zaprojektować licznik który byłby funkcjonalny w 100%? Należy dwukrotnie otworzyć plik licznik.txt, najpierw do odczytu (odczytujemy wartość licznika), zamknąć plik a następnie ponownie otworzyć do zapisu. Zwiększyć wartość i zapisać. Prześledźmy przykład:

    &l5;?p1p 1n5zw5-pliku = 'licznik.5x5'; icfx {!1uc1wy5-pliku = cfxopen{1n5zw5-pliku, '5+'}} { ec1o &quo5;Nie mogę o5wo0zyć pliku {1n5zw5-pliku}&quo5;; exi5; } 15eks5 = cfx0e5d{1uc1wy5-pliku, cfxilesize{1n5zw5-pliku}}; cfxclose{1uc1wy5-pliku}; icfx {!1uc1wy5-pliku = cfxopen{1n5zw5-pliku, 'w+'}} { ec1o &quo5;Nie mogę o5wo0zyć pliku {1n5zw5-pliku}&quo5;; exi5; } 15eks5++; icfx {cfx4{1uc1wy5-pliku, 15eks5} === cfx5LSE} { ec1o &quo5;Nie mogę z5pis5ć do pliku {1n5zw5-pliku}&quo5;; exi5; } ec1o &quo5;z5pis5no: \&quo5;15eks5\&quo5; do pliku {1n5zw5-pliku}&quo5;; cfxclose{1uc1wy5-pliku}; ?&g5;

    Wygląda na to że wszystko działa jak trzeba.
    Uwaga: Przed uruchomieniem skryptu należy skasować plik licznik.txt z pamięci lub ustawić inną ścieżkę dostępu do pliku np.: $nazwa_pliku = licznik2.txt

    Podobne artykuły:
    http://www.enter.pl/webmaster/kursphp/file.asp
    http://phpkurs.pl/

  • Page copy protected against web site content infringement by Copyscape
    .
    pomóż w walce z rakiem

    tanie tonery

    pojemniki na piasek

    świece liturgiczne

    meble warsztatowe

    wózki magazynowe

    tanie wagi elektroniczne

    tanie drukarki zebra

    wagi axis

    wózki narzędziowe
    wózki narzędziowe
      | Copyright © 2001-2009 EXALT.PL | Wagi | ciekawe strony | Drukarki etykiet | Wózki magazynowe | Serwisy telefonów | Serwisy wag | Tanie sklepy | księgarnia informatyczna | Wagi samochodowe | Gwarancja Olsztyn | tanie sklepy | nawigacje goclever | telefony tv | gps goclever