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
Jeśli chciałbyś być poinformowany o następnych kursach to zapisz się do naszego newslettera:
