Obsługa plików w PHP – wprowadzenie
PHP oferuje szeroki zestaw funkcji do pracy z plikami, które umożliwiają otwieranie, odczytywanie, zapisywanie i modyfikowanie plików. Dzięki tym funkcjom możemy np. przechowywać dane użytkowników w plikach tekstowych, tworzyć dzienniki (logi) dla aplikacji lub generować dynamiczne pliki, takie jak raporty. W tej lekcji omówimy podstawowe operacje na plikach w PHP.
Otwieranie pliku za pomocą fopen()
Funkcja fopen()
służy do otwierania pliku. Wymaga dwóch parametrów:
- nazwa pliku: Ścieżka do pliku, który chcemy otworzyć,
- tryb otwarcia: Określa sposób, w jaki chcemy otworzyć plik (np. tylko do odczytu, zapisu itp.).
Przykład otwierania pliku do odczytu:
<?php $plik = fopen("plik.txt", "r"); if ($plik) { echo "Plik został otwarty pomyślnie."; } else { echo "Nie udało się otworzyć pliku."; } fclose($plik); // Zamykanie pliku ?>
Tryby otwierania plików
W PHP istnieje kilka trybów otwierania plików, które określają, jak plik będzie używany:
r
: Otwiera plik tylko do odczytu. Wskaźnik pliku znajduje się na początku pliku.w
: Otwiera plik do zapisu. Jeśli plik istnieje, jego zawartość zostanie nadpisana; jeśli plik nie istnieje, zostanie utworzony.a
: Otwiera plik do zapisu, ale dane będą dopisywane na końcu pliku. Jeśli plik nie istnieje, zostanie utworzony.r+
: Otwiera plik do odczytu i zapisu. Wskaźnik pliku znajduje się na początku pliku.w+
: Otwiera plik do odczytu i zapisu, ale zawartość pliku zostanie nadpisana. Jeśli plik nie istnieje, zostanie utworzony.a+
: Otwiera plik do odczytu i zapisu. Dane będą dopisywane na końcu pliku. Jeśli plik nie istnieje, zostanie utworzony.
Odczytywanie zawartości pliku
PHP oferuje kilka funkcji do odczytywania zawartości pliku:
1. fgets()
: Odczytuje jedną linię z pliku.
<?php $plik = fopen("plik.txt", "r"); if ($plik) { while (($linia = fgets($plik)) !== false) { echo $linia . "<br>"; } fclose($plik); } else { echo "Nie udało się otworzyć pliku."; } ?>
2. fread()
: Odczytuje określoną liczbę bajtów z pliku.
<?php $plik = fopen("plik.txt", "r"); $zawartość = fread($plik, filesize("plik.txt")); // Odczyt całego pliku echo $zawartość; fclose($plik); ?>
3. file_get_contents()
: Najprostszy sposób na odczytanie całego pliku do jednej zmiennej.
<?php $zawartość = file_get_contents("plik.txt"); echo $zawartość; ?>
Zapis do pliku
Aby zapisać dane do pliku, możemy użyć funkcji fwrite()
lub file_put_contents()
.
Przykład zapisu danych za pomocą fwrite()
:
<?php $plik = fopen("plik.txt", "w"); // Otwieramy plik w trybie zapisu if ($plik) { fwrite($plik, "To jest nowa zawartość pliku.\n"); fwrite($plik, "Kolejna linia.\n"); fclose($plik); echo "Dane zostały zapisane."; } else { echo "Nie udało się otworzyć pliku."; } ?>
Przykład zapisu danych za pomocą file_put_contents()
:
<?php $tekst = "To jest nowa zawartość pliku."; file_put_contents("plik.txt", $tekst); echo "Dane zostały zapisane."; ?>
Funkcja file_put_contents()
nadpisuje zawartość pliku. Jeśli chcesz dodać dane na końcu pliku, możesz użyć drugiego parametru FILE_APPEND
:
<?php $tekst = "Nowa linia tekstu.\n"; file_put_contents("plik.txt", $tekst, FILE_APPEND); echo "Dane zostały dopisane do pliku."; ?>
Zamykanie pliku
Po zakończeniu pracy z plikiem, zawsze należy go zamknąć za pomocą funkcji fclose()
. Zamknięcie pliku zwalnia zasoby systemowe.
<?php $plik = fopen("plik.txt", "r"); // Operacje na pliku fclose($plik); ?>
Sprawdzanie, czy plik istnieje
Zanim spróbujemy otworzyć lub zapisać do pliku, dobrze jest upewnić się, że plik istnieje. Możemy to zrobić za pomocą funkcji file_exists()
:
<?php if (file_exists("plik.txt")) { echo "Plik istnieje."; } else { echo "Plik nie istnieje."; } ?>
Usuwanie plików
Aby usunąć plik, używamy funkcji unlink()
:
<?php if (file_exists("plik.txt")) { unlink("plik.txt"); echo "Plik został usunięty."; } else { echo "Plik nie istnieje."; } ?>
Przykład kompleksowy: Tworzenie i zapisywanie pliku z danymi formularza
Załóżmy, że mamy formularz, w którym użytkownik podaje swoje imię i wiek. Dane te zostaną zapisane do pliku.
Formularz HTML:
<form action="zapisz.php" method="post"> Imię: <input type="text" name="imie"><br> Wiek: <input type="number" name="wiek"><br> <input type="submit" value="Zapisz dane"> </form>
Plik PHP zapisz.php
:
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $imie = htmlspecialchars($_POST['imie']); $wiek = htmlspecialchars($_POST['wiek']); $dane = "Imię: " . $imie . "\nWiek: " . $wiek . "\n\n"; file_put_contents("dane.txt", $dane, FILE_APPEND); echo "Dane zostały zapisane."; } ?>
W tym przykładzie dane wprowadzone przez użytkownika są zapisywane do pliku dane.txt
, a każda nowa para imię-wiek jest dopisywana na końcu pliku.
Podsumowanie
W tej lekcji nauczyliśmy się podstawowych operacji na plikach w PHP, takich jak otwieranie, odczytywanie, zapisywanie i zamykanie plików. Omówiliśmy różne tryby otwierania plików oraz funkcje ułatwiające pracę z nimi. Zrozumienie obsługi plików jest kluczowe dla wielu zastosowań PHP, w tym przechowywania danych, generowania logów czy tworzenia dynamicznych treści.
Gratulacje! Ukończyłeś lekcję 7.
Przejdź teraz do lekcji 8 >> Sesje i ciasteczka w PHP
Spis Treści - darmowy kurs PHP
Wprowadzenie: Instalacja środowiska PHP
Lekcja 1: Podstawy składni PHP
Lekcja 2: Funkcje i instrukcje warunkowe w PHP
Lekcja 3: Pętle w PHP
Lekcja 4: Tablice w PHP
Lekcja 5: Dodatkowe podstawy funkcji w PHP
Lekcja 6: Praca z formularzami HTML w PHP
Lekcja 7: Obsługa plików w PHP
Lekcja 8: Sesje i ciasteczka w PHP
Lekcja 9: Podstawy operacji na bazach danych MySQL z PHP
Lekcja 10: Prepared Statements w PHP i bezpieczeństwo aplikacji
Lekcja 11: Zarządzanie użytkownikami – rejestracja, logowanie i autoryzacja w PHP
Lekcja 12: Wzorce projektowe w PHP – wprowadzenie do wzorca MVC
Lekcja 13: Zaawansowane techniki pracy z bazami danych w PHP
Lekcja 14: Testowanie jednostkowe w PHP z PHPUnit
Lekcja 15: Tworzenie i korzystanie z API RESTful w PHP
Lekcja 16: Obsługa plików JSON i XML w PHP
Dodatki
- Spis najważniejszych funkcji PHP