Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: unlink
Forum PHP.pl > Forum > Przedszkole
andixxx
w jaki sposob mozna usunac plik z serwera poprzez klikniecie w link? tzn w jaki sposob mozna przypisac unlink(nazwapliku.jpg); do <a href="... ? mozna tak wogole zrobic ?
elem84
No jakkoś ne bardzo da sie tak zrobić, conajwyżej możesz zrobić to w ten sposób że link ma składnie:

  1. <a href="usun.php?plik=nazwaPliku">Link</a>


zaś w pliku usun.php:

  1. <?php
  2. if($_GET['nazwaPliku']) @unlink($_GET['nazwaPliku']);
  3. ?>


Możesz dodać jakieś sprawdzanie jeszcze czy plik wogóle istnieje ale ogólnie nie polecam tej metody gdyż ktoś sprytniejszy może pokasować Ci pliki winksmiley.jpg
andixxx
a mozna to jakos zrobic, aby wszystko bylo w jednym pliku a nie w dwoch?
Wieviór
  1. <?php
  2. if (!isset ($_GET['action'])
  3. {
  4. echo '<a href="usunplik.php?action=usun&nazwapliku=costam">Usuń ten plik</a>';
  5. }
  6. elseif ($_GET['action'] == 'usun')
  7. {
  8. unlink ($_GET['nazwapliku']);
  9. echo 'Usunięto!';
  10. }
  11. ?>


LUB:

  1. <?php
  2. if (!isset ($_GET['nazwapliku'])
  3. {
  4. echo '<a href="usunplik.php?nazwapliku=costam">Usuń ten plik</a>';
  5. }
  6. else
  7. {
  8. unlink ($_GET['nazwapliku']);
  9. echo 'Usunięto!';
  10. }
  11. ?>
elem84
Jeszcze możesz dorzucić tłumienie błędów jeśli by podanego pliku nie było winksmiley.jpg

  1. <?php
  2. @unlink ($_GET['nazwapliku']);
  3. ?>
Gość
  1. <?php
  2. if (!isset ($_GET['nazwapliku'])
  3. {
  4. echo '<a href="usunplik.php?nazwapliku=costam">Usuń ten plik</a>';
  5. }
  6. else
  7. {
  8. unlink ($_GET['nazwapliku']);
  9. echo 'Usunięto!';
  10. }
  11. ?>


dlaczego tutaj, w 3 linijce pokazuje blad?
Parse error: parse error, unexpected '{' in /blebleble/usunplik.php on line 3
WereWolf
Cytat
dlaczego tutaj, w 3 linijce pokazuje blad?
Parse error: parse error, unexpected '{' in /blebleble/usunplik.php on line 3

bo nie masz zamkniętego nawiastu przy warunku dla if, powinno być:

  1. <?php
  2. if (!isset ($_GET['nazwapliku']))
  3. {
  4. echo '<a href="usunplik.php?nazwapliku=costam">Usuń ten plik</a>';
  5. }
  6. else
  7. (...)
  8. ?>
Gość
heh teraz widze party.gif
andixxx
heh kurcze nie moge rozkminic... gdzie musze wpisac nazwe pliku do usuniecia? ;/ bo gdzie jejnie podam to mi wywala blad;/ albo pisze ze plik zostal usuniety, a na serwerze dalej jest!
Cysiaczek
Sprawdź ścieżkę do tego pliku i tom czy podajesz pełną nazwę pliku z rozszerzeniem. Skrypt, który Ci podali ma ta wadę, że nie sprawdza, czy taki plik istnieje.
Dla przykładu:
  1. <?php
  2. echo '<a href="usunplik.php?nazwapliku=costam.txt">Usuń ten plik</a>'; //tu dodałem rozszerzenie
  3. ?>

Teraz jeśli taki plik istnieje w tym samym katalogu, co twój skrypt php, to zostanie usunięty. Jełśi jest gdzieś indziej, to:

  1. <?php
  2. unlink ('katalog/'.$_GET['nazwapliku']);
  3. ?>


Teraz zadziała, a sprawdzenie, czy plik istnieje zostawiam Tobie:
http://pl2.php.net/manual/pl/ref.filesystem.php <-- tu info
andixxx
plik istnieje na 100% .. nazywa sie on skrypt.txt i jest on w katalogu glownym (w roocie) serwera, tak samo jak plik ze skryptem (usunplik.php)...
gdy odpalam plik usunplik.php pokazuje sie link do usuniecia pliku, klikam go i wyskakuje
Cytat
Warning: unlink(skrypt.txt): No such file or directory in /blebleble.../usunplik.php on line 8
Usunięto!

gdy dam aby wytlumilo bledy.. pokazuje sie sam napis "usunieto!" .. a plik dalej siedzi na serwerze ..

  1. <?php
  2. if (!isset ($_GET['nazwapliku']))
  3. {
  4. echo '<a href="usunplik.php?nazwapliku=skrypt.txt">Usuń ten plik</a>';
  5. }
  6. else
  7. {
  8. unlink ($_GET['nazwapliku']);
  9. echo 'Usunięto!';
  10. }
  11. ?>
Cysiaczek
Powiem tak: W tym wypadku zaufam zdrowemu rozsądkowi i zaufam php, a nie Tobie. laugh.gif
Tego pliku nie ma tam, gdzie go usuwasz.

Świadczy o tym ta oto linijka, z której zresztą usunąłeś najbardziej ciekawą część :/
Cytat
Warning: unlink(skrypt.txt): No such file or directory in /blebleble.../usunplik.php on line 8


Żeby jednak było w 100% poprawne zrozszerzenie przesuń do funkcji usuwającej:
  1. <?php
  2. unlink ($_GET['nazwapliku'].'.txt');
  3. ?>


i usun rozszerzenie z URL'a

Sprawdź jeszcze raz, czy ścieżka jest poprawna.

Pozdrawiam
andixxx
plik jestna 100% smile.gif
.. a kod jest wyzej napisany:P

Cytat
Warning: unlink(skrypt.txt): Permission denied in /home/users/rozek_andi/www/usunplik.php on line 8
Usunięto!
taki dokladnie komunikat dostaje smile.gif

a gdy zrobilem, tak jak napisales przed chwila.. to nic sie nie stalo.. wyskakuje dokladnie to samo
Cysiaczek
Ehh.,. laugh.gif
Permission denied == Brak dostepu

Zmień uprawnienia dla katalogu na 666 lub 777

Pozdrawiam.
andixxx
oba pliki maja ustawione chmoody na 777
Cysiaczek
A katalog, w którym sie znajdują? Jemu przydziel 777 smile.gif

Pozdrawiam.
andixxx
oba pliki sa w katalogu glownym serwera.. tzn w roocie snitch.gif
Cysiaczek
No i co z tego? Jak nie ma uprawnień do zapisu w katalogu, to pliku tez nie usuniesz. Przeerzuć sobie te pliki do innego katalogu, jemu daj 777 i tyle. smile.gif
Pozdrawiam.
andixxx
o wzucilem je do jakiegos katalogu i teraz dziala smile.gif dzieki smile.gif
michu9010
ja tez mam problem z unlinkiem ;/;/

o to kod
  1. <?php
  2. require('connect.php');
  3.  
  4.  
  5. $short_title = trim($_POST['short_title']);
  6. $gdzie = 'photo/';
  7. $data_img = trim($_POST['data_img']);
  8. $opis = trim($_POST['opis']);
  9. $file_name = trim($_GET['file_name']);
  10.  
  11. $a = trim($_GET['a']);
  12. $id = trim($_GET['id']);
  13.  
  14. if($a == 'del' and !empty($id)) {
  15.  
  16. /* usuwamy rekord */
  17. unlink('photo/'.$r['file_name']); /*file_name to nazwa kolumny w bazie danych znajduje sie tam nazwa pliku */
  18. mysql_query("DELETE FROM phones WHERE id='$id'")
  19. or die('Błąd zapytania: '.mysql_error());
  20. echo 'Wpis został usunęty z bazy';
  21. }
  22. else {
  23. echo "Brak wpisu o takim ID";
  24. }
  25. ?>


napierw powiniem usunac plik z serwera a potem wpis w bazie ale wywala blad ;/;/

Kod
[b]Warning[/b]:  unlink(photo/) [[url="http://michu.esnet.pl/function.unlink"]function.unlink[/url]]: Is a directory in [b]/home/vmail/esnet.pl/michu/public_html/admin/photo/del.php[/b] on line [b]17
[/b]
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.