Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie zdjęć z serwera z wyborem katalogu
Forum PHP.pl > Forum > PHP
xarkez
Witam mam mały problem lecz na tyle juz w głowie sobie namieszałem że nie daje rady go rozwiązać biggrin.gif
Mianowicie chodzi mi o usuwanie zdjęć z wybranego katalogu(czyt. folderu)

Mam taki kod:
  1. <form action="usun-foto-2.php" method="POST" class="form-upload">
  2. <select class="edytor-input" style="width: 300px; background: white" name="katalog">
  3. <?php
  4. include("../db_data.php");
  5. $wynik = mysql_query("SELECT * FROM albumy")
  6. or die('Błąd zapytania');
  7. if(mysql_num_rows($wynik) > 0) {
  8. while($r = mysql_fetch_array($wynik)) {
  9. echo ' <option value="./'.$r[1].'">'.$r[1].'</option> ';
  10. }
  11. }
  12. ?>
  13. </select>
  14.  
  15. <input id="button" type="submit" value="Wyślij plik" class="przycisk"/>
  16. </form>


odpowiedzialny jest on za wybór danego folderu ( foldery zapisane są w MySQL )

kolejnym krokiem jest wyświetlenie zawartości wybranego wcześniej folderu/katalogu/czy jak kto woli

  1. <?php
  2. $katalog = $_POST['katalog'];
  3. if ($handle = opendir('../album/galleries/'.$katalog.'/'))
  4. {
  5. while (($file = readdir($handle))!=false)
  6. {
  7. if ($file != '.' && $file != '..') {
  8. echo'<div class="lista-img"><img src="../album/galleries/'.$katalog.'/'.$file.'" id="usun-foto-img"/>';
  9. echo'<br><a href="usun-foto-3.php?zdjecie='.$file.'">Usuń</a></div>';
  10. }
  11. }
  12. }
  13. closedir($handle);
  14. ?>


Do tego czasu wszystko działa jak należy.
Teraz pojawia się problem z usuń-foto-3.php

  1. <?php
  2. $katalog = "../album/galleries//";
  3. if (isset($_POST['zdjecie'])) {
  4. foreach ($_POST['zdjecie'] as $file) {
  5. if (file_exists($katalog . $file)) {
  6. unlink($katalog . $file);
  7. echo 'Plik ' . $file . ' Został usunięty.<br />';
  8. }
  9. }
  10. }
  11.  
  12. ?>


skrypt niestety nie usuwa zdjęcia. BA nie robi nic po za wyświetleniem pustej strony.

Widzi ktoś gdzieś błąd ? Z góry dziękuje za pomoc

kapslokk
  1. <a href="usun-foto-3.php?zdjecie='.$file.'">Usuń</a>

Po kliknieciu w link zdjecie zostanie wyslane getem a nie postem.

przed
  1. if (isset($_POST['zdjecie'])) {


wstaw sobie

  1. var_dump(isset($_POST['zdjecie']));
  2. var_dump(isset($_GET['zdjecie']));



Dodatkowo w Twoim przypadku zdjecie bedzie stringiem, a nie tablica wiec petla:
  1. foreach ($_POST['zdjecie'] as $file) {
jest dodatkowym błędem.


No i warto tutaj wspomnieć, że skrypt w takiej formie umożliwia usunięcie dowolnego pliku na serwerze. Ktoś może np sobie spreparowac url usun-foto-3.php?zdjecie=../../../index.php
xarkez
A jesteś w stanie poprawić ten kod by jakoś w miare śmigało ?

Bo wstawieniu
  1. var_dump(isset($_POST['zdjecie']));
  2. var_dump(isset($_GET['zdjecie']));


wyświetla się komunikat
bool(false) bool(true)

teraz to już całkiem zgłupiałem biggrin.gif
viking
Potwierdziłeś tylko to, co pisał kapslokk. Dane są wysyłane metodą GET zatem isset($_GET['zdjecie']) daje true, a POST false. Dodatkowo używasz przestarzałych funkcji mysql.
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.