[PHP] Jak usunąć plik?
W PHP często generujemy różnego rodzaju pliki, np. pliki logów, czy też różnego rodzaju statystyk. Podobnie jak system operacyjny, na którym pracujesz, PHP pozwala tworzyć i usuwać pliki.
Do usuwania plików z poziomu PHP służy funkcja unlink. Jako argument podajemy ścieżkę do pliku, który ma zostać usunięty. Funkcja zwróci TRUE, jeśli udało się usunąć plik, w przeciwnym razie funkcja zwróci FALSE. Jeśli ścieżka do pliku jest niepoprawna funkcja wygeneruje błąd typu E_WARNING.
Przykładowe użycie
<?php
unlink('/ścieżka/do/pliku/test.html');
Pamiętaj, aby rozważnie używać tej funkcji, ponieważ operacji usunięcia pliku nie można cofnąć.
Takim kodem usuwam wpis w tabeli. Jak dopisać do tego unlink by jednocześnie przy usuwaniu wpisu usuwane było również odpowiadające wpisowi zdjęcie w katalogu?
OdpowiedzUsuńinclude ('connect.php');
$id=$_GET['id'];
$sql="DELETE FROM tabela WHERE id='$id'";
$result=mysql_query($sql);
if($result){
echo "ok";
}
else {
echo "ERROR";
}
mysql_close();
Przede wszystkim ten kod nie jest poprawny, ponieważ przy operacji takiej jak DELETE do sprawdzania czy rekord został usunięty używamy funkcji mysql_affected_rows.
OdpowiedzUsuńZatem w powyższym warunku należy wstawić kod:
mysql_affected_rows() > 0, gdzie mysql_affected_rows zwróci ilość usuniętych wierszy. Jeśli mysql_affected_rows zwróci 0 oznaczać to będzie niepowodzenie w usuwaniu rekordu.
Wracając do pytania, jeśli zdjęcia w katalogu zapisywane są w formacie id.rozszerzenie wystarczy tylko unlink('ścieżka do katalogu/' . $id . '.rozszerzenie'); oczywiście, jeśli zapytanie DELETE przyniosło efekt.
Należy pamiętać o ostrożności podczas używania unlink, by nie usunąć poprzez błąd ważnych plików.
Nie zapominajmy też o filtrowaniu danych.