Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Kasowanie plików
Forum PHP.pl > Forum > Przedszkole
lukasz.sekula
Witam,

uploaduje sobie plik i zmieniam jego nazwe (wszystko działa).
Następnie chcę skasować ten plik takim skrypcikiem:

  1. <?php
  2. if (isset($_POST['submit']) && $_POST['submit']=="Tak") {
  3. $plik="/upload/".$_SESSION['foto'];
  4. chmod($plik,0777);
  5. unlink($plik) or die ("nie kasuje");
  6. }
  7. ?>


dodałem chmod aby zmienić już jego uprawnienia ponieważ po uploadzie dostaje automatycznie 600, czyli rw dla właściciela.
uprawnienia dla folderu upload to 777 czyli pełny dostęp (dlatego też upload działa)

jakieś propozycje?
sniezny_wilk
Możliwe, że przechowujesz nazwę pliku przed zmianą a nie po zmianie i odwołujesz się do starej nazwy, wyświetlaj to co trzyma zmienna sessyjna i pokaż może trochę więcej kodu.
lukasz.sekula
nazwa pliku zgadza się na 1000% ponieważ po małej zmianie dostaję nie kauje 1.png a tak właśnie się nazywa plik

oto pełny kod (ale to jest już tzw. pytane o to czy na pewno usunąć.

  1. <?php
  2. include "auth_user.inc.php";
  3. include "conn.inc.php";
  4.  
  5. if (isset($_POST['submit']) && $_POST['submit']=="Tak") {
  6. $plik="/upload/".$_SESSION['foto'];
  7. chmod($plik,0777);
  8. unlink($plik) or die ("nie kasuje ".$_SESSION['foto']);
  9. } else {
  10. ?>
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  15. <title>Mega Partners</title>
  16. </head>
  17.  
  18. <body>
  19. <p><b>Czy na pewno chcesz usunąć zdjęcie?</b></p>
  20. <form action="remove_foto.php" method="post">
  21. <input type="submit" name="submit" value="Tak" />&nbsp;&nbsp;
  22. <input type="button" value="Nie" onclick="hostory.go(-1);" />
  23. </form>
  24. <?php
  25. }
  26. ?>
  27. </body>
  28. </html>
sniezny_wilk
zrób dla pewności przed kasowaniem file_exists" title="Zobacz w manualu PHP" target="_manual i zobacz co zwraca..
lukasz.sekula
  1. <?php
  2. include "auth_user.inc.php";
  3. include "conn.inc.php";
  4.  
  5. if (isset($_POST['submit']) && $_POST['submit']=="Tak") {
  6. $plik=$_SESSION['foto'];
  7. opendir("upload");
  8. if (file_exists($plik)) {
  9. echo "istnieje ".$plik." ";
  10. } else {
  11. echo "nie istnieje ".$plik." ";
  12. }
  13. chmod($plik,0777);
  14. unlink($plik) or die ("nie kasuje ".$_SESSION['foto']);
  15.  
  16. $query_update="UPDATE uzytkownicy SET foto='' WHERE email='".$_SESSION['user_logged']."' AND haslo=(PASSWORD('".$_SESSION['user_password']."'))";
  17. $result_update=mysql_query($query_update) or die(mysql_error());
  18. header("Refresh: 3; URL=user_personal.php");
  19. echo "<p>Plik został usunięty!<br /><br />Przekierowanie za 5 sekund... Jeśli Twoja przeglądarka nie obsługuje przekier
    owań <a href=\"user_personal.php\">kliknij tutaj</a>.
  20.  ........
  21.  ........
  22.  ........//dalsza część jw.
  23. ?>


wynik na ekranie to: nie istnieje /upload/1.png nie kasuje 1.png

a moim zdaniem powinien być: nie istnieje /upload/1.png nie kasuje /upload/1.png
z drugiej strony skoro funckja unlink dostaje nazwe pliku 1.png powinna go skasować... chociaż skąd ma znać scieżke? smile.gif

wiec później spóbowałem inaczej przez funckję opendir() itp z reszta widzicie sami smile.gif
zrobiłem nieco zmian ale nadal nie smiga :/

nie mam pomysłu jak to poprawić, jakaś propozycja?
sniezny_wilk
Czyli już wiesz co jest nie tak ze ścieżką.. nie dawaj tego opendir.. tylko popatrz czy masz dobrą ścieżkę.. może bez tego / na początku ? Podaj jak możesz strukturę katalogów na serwerze.
phpion
Spróbuj w ten sposób. Zmień:
  1. <?php
  2. $plik=$_SESSION['foto'];
  3. ?>

na:
  1. <?php
  2. $plik='./upload/'.$_SESSION['foto'];
  3. ?>

Resztę zostaw jak jest.
lukasz.sekula
dzięki wielkie smile.gif pomogło... i wywyaliłem opendir smile.gif
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.