Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie z sewera
Forum PHP.pl > Forum > Przedszkole
Gadziu
Mam problem z usunięciem pliku z serwera. W sensie mam formularz w którym zaznaczam, który plik chcę usunąć, przekazuję on adres plik przez POST do funkcji unlink. Adres pliku do usunięcia daje dobry, ale pliku nie usuwa i wywala błąd, że takiego pliku nie mam na serwerze, jak jest...

index.php
  1. <form action="usun.php" method="POST">
  2. <?php
  3. include "connection.php";
  4. connection();
  5.  
  6. $query = "SELECT * FROM formularz";
  7.  
  8. $result = mysql_query($query) or die(mysql_error());
  9.  
  10.  
  11. echo "<table border='1'>";
  12. echo "<tr> <th>Nr</th> <th>Miniaturka</th> <th>Adres</th> <th> Opis</th> <th>Usuń</th> </tr>";
  13. // keeps getting the next row until there are no more to get
  14.  
  15. while($row = mysql_fetch_array( $result )) {
  16. // Print out the contents of each row into a table
  17. echo "<tr><td>";
  18. echo $row['pozycja_obraz'];
  19. echo "</td><td>";
  20. echo "<img src=".$row['adres']." alt=\"\" height=\"100px\" width=\"75px\">";
  21. echo "</td><td>";
  22. echo $row['adres'];
  23. echo "</td><td>";
  24. echo $row['opis'];
  25. echo "</td><td>";
  26. echo "<INPUT TYPE=\"checkbox\" NAME=\"zdjecie\" VALUE=".$row['adres']."\">";
  27. echo "</td></tr>";
  28. }
  29.  
  30. echo "</table>";
  31.  
  32. ?>
  33. <input type="submit" name="submit" value="Usuń zdjęcie" />
  34. </form>


usun.php
  1. <?php
  2. unlink($_POST['zdjecie']);
  3. echo "usunieto"
  4.  
  5. ?>


błąd
Kod
Warning: unlink(../images/pokoje/images1.jpg") [function.unlink]: No such file or directory in /home/mulino/domains/mulinoitaliano.pl/public_html/cms/usun.php on line 2
Szymciosek
Zrób sobie coś takiego:

  1. var_dump(scandir($_POST['zdjecie']);


Zobacz co Ci się pokaże przez to i zobacz czy tam istnieje plik, oraz weź pod uwagę, że korzystasz z ../
Mackos
Na 100% dajesz zły link do obrazka wink.gif
Może realpath pomoże albo jakaś funkcja podobna.
Gadziu
Jak wykorzystuję tą funkcję to mi wyskakuje błąd...
andesch there
tak jak wspomina Szymciosek
uzywasz ../

pewnie sciezka musi byc images/pokoje/images1.jpg
chyba ze plik index i usun masz w jakims folderze sasiadujacym katalogiem images, masz nie masz?
Gadziu
Tak, po to to jest, bo to jest w folderze na tym samym poziomie co images. W sensie jest public_html/cms i public_html/images.

A może ma ktoś prostszy pomysł, jak zrobić, by użytkownik mógł np po prostu kliknąć sobie na napis usuń obok zdjęcia, żeby go usunęło?
_Borys_
W checkbox-ie w value nie masz cudzysłowia otwierającego i przez to adres obrazka jest
../images/pokoje/images1.jpg"
Poza tym skoro images są na tym samym poziomie to raczej powinno być bez ../ ale popróbuj z różnymi wersjami.
Gadziu
Ok, stwierdziłem, że nie ma co widocznie na moją wiedzę w tym momencie usuwanie wielu zdjęć naraz to za dużo, więc zrobiłem z radio i działa, a wygląda to tak:
usun.php
  1. <?php
  2. include "connection.php";
  3. connection();
  4.  
  5. $query = "SELECT * FROM formularz";
  6.  
  7. $result = mysql_query($query) or die(mysql_error());
  8.  
  9.  
  10. echo "<table border='1'>";
  11. echo "<tr> <th>Nr</th> <th>Miniaturka</th> <th>Adres</th> <th> Opis</th> <th>Usuń</th> </tr>";
  12. // keeps getting the next row until there are no more to get
  13. echo "<form action=\"usunf.php\" method=\"POST\">";
  14. while($row = mysql_fetch_array( $result )) {
  15. // Print out the contents of each row into a table
  16. echo "<tr><td>";
  17. echo $row['pozycja_obraz'];
  18. echo "</td><td>";
  19. echo "<img src=".$row['adres']." alt=\"\" height=\"100px\" width=\"75px\">";
  20. echo "</td><td>";
  21. echo $row['adres'];
  22. echo "</td><td>";
  23. echo $row['opis'];
  24. echo "</td><td>";
  25. echo "<input type=\"radio\" name=\"zdjecie\" value=".$row['adres'].">";
  26. echo "</td></tr>";
  27. }
  28.  
  29. echo "</table>";
  30. echo "<input type=\"submit\" value=\"Usuń zdjęcie\">";
  31.  
  32. echo "</form>";
  33. ?>


usunf.php
  1. <?php
  2. $plik = $_POST['zdjecie'];
  3. $test = file_exists($plik);
  4. if (!$test)
  5. {
  6. echo "Brak takiego zdjecia na serwerze";
  7. }
  8. else
  9. {
  10. unlink($plik);
  11. echo "Zdjęcie usunięte";
  12.  
  13. }
  14. echo "<meta http-equiv=\"refresh\" content=\"1;url=http://mulinoitaliano.pl/cms/usun.php\" />";
  15. ?>


Tylko teraz mam jeszcze jedno pytanie i jedne problem.
Pytanie: O co chodzi z tym zabezpieczaniem, bo na wielu stronach gdzie czytałem ucząc się, pisali o zabezpieczaniu kodu... Spodziewam się, że mój nie jest bezpieczny. Więc jak co zrobić, by był?
Problem: Chciałbym, żeby oprócz wykasowanie zdjęć z serwera, wykasował się także rekord z bazy, ale nie wiem jak przekazać do funkcji usunf.php te wszystkie rzeczy co mam wykasować...
Stelivo
Zabezpiecz panelem logowania.
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.