Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie plików
Forum PHP.pl > Forum > Przedszkole
ystudio
Witam,
Listuję grafiki z folderu za pomocą poniższej funkcji. Chcę, aby link usuń po każdej grafice usuwał dany plik.
Proszę o pomoc

Kod
$directory="../upload";
$dir=opendir($directory);

while($file_name=readdir($dir))
    {
         if(($file_name!=".")&&($file_name!=".."))
        {
        $img = '../upload/'.$file_name;
        echo '<img src="'.$img.'" alt="obrazek" width="200" />';
        echo '<a href="">Usuń</a>';
        echo ' ';
        }
    }

closedir($dir);


?>
jasin
  1. <?php
  2. $directory="../upload";
  3. $dir=opendir($directory);
  4.  
  5. while($file_name=readdir($dir))
  6. {
  7. if(($file_name!=".")&&($file_name!=".."))
  8. {
  9. $img = '../upload/'.$file_name;
  10. echo '<img src="'.$img.'" alt="obrazek" width="200" />';
  11. echo '<a href="delete.php?do=deleteimg&filename=' . $file_name . '">Usuń</a>';
  12. echo ' ';
  13. }
  14. }
  15.  
  16. closedir($dir)


[delete.php]
  1. <?php
  2.  
  3. if ($_REQUEST['do'] == 'deleteimg' AND !empty($_REQUEST['filename']))
  4. {
  5. if (unlink('../upload/' . $_REQUEST['filename']))
  6. {
  7. echo "Plik {$_REQUEST['filename']} został usunięty";
  8. }
  9. else
  10. {
  11. echo "Nie udało się usunąć pliku {$_REQUEST['filename']}";
  12. }
  13. }


To tak na szybko pod Twój kod. Aczkolwiek bezpieczniejsze byłoby usuwanie przez posta.
ystudio
Dzięki. "luzem" działa jak należy, ale gdy wrzucam do swojego panelu do zarządzania stroną to już nie działa.

pod taką sciezka mam podstrone z wylistowanymi plikami:
http://localhost/strona/admin/index.php?module=listowanie

po kliknięciu usuń przechodzi do prawidłowego adresu, ale wyświetlana jest główny index mojej strony, a pliki nie zostają usunięte...
CuteOne
Klasyczny błąd - my podajemy wskazówki a ty sam masz rozwiązać problem. Masz swój panel, więc powinieneś wiedzieć jak dodawać do niego nowe moduły... bo z tego co widzę nie podano prawidłowego adresu i/lub pod podanym adresem nie istnieje żądany plik.

ystudio
Pod taki adres przechodzi po kliknięciu w "usuń": http://localhost/strona/admin/listowanie.p...71332798876.jpg
Nazwa pliku jest prawidłowa, ścieżka też wydaje się poprawna, ale nie działa...

Zawartość listowanie.php:

Kod
<?php

if ($_REQUEST['do'] == 'deleteimg' AND !empty($_REQUEST['filename']))
{
    if (unlink('../upload/' . $_REQUEST['filename']) and unlink('../thumb/' . $_REQUEST['filename']))
    {
        echo "Plik {$_REQUEST['filename']} został usunięty";
    }
    else
    {
        echo "Nie udało się usunąć pliku {$_REQUEST['filename']}";
    }
}



$directory="../thumb";
$dir=opendir($directory);

while($file_name=readdir($dir))
    {
         if(($file_name!=".")&&($file_name!=".."))
        {
        $img = '../thumb/'.$file_name;
        echo '<img src="'.$img.'" alt="obrazek" width="200" />';
        echo '<a href="listowanie.php?do=deleteimg&filename=' . $file_name . '">Usuń</a>';
        echo ' ';
        }
    }

closedir($dir);


?>
CuteOne
Sprawdź czy masz tam plik .htaccess(plik może się znajdować w katalogach wyższego rzędu) i jeżeli istnieje co on zawiera
ystudio
htaccess:
Kod
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1
CuteOne
Masz już odpowiedź dlaczego nie działa...
ystudio
Bez takiej zawartości htaccess'u sypią mi się podstrony.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.