Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]formularz z opendir()
Forum PHP.pl > Forum > Przedszkole
piano
Witam. guitar.gif Mam problemik z którym nie moge sie uporać...
W formularzu chciałbym wylistować wszystkie pliki w katalogu galeria (są tam tylko pliki graficzne) za pomocą funkcji opendir() i readdir() i usunąć niektóre z nich za pomocą funkcji unlink($sciezka);
Napisałem wiec :

  1. <?php  $gal="galeria";
  2. $kat = opendir($gal); 
  3.  
  4. echo('<form method="post" action="nastepny.php">');
  5. echo ('Zawartosc katalogu :<br />');
  6. echo('<b>Zaznacz do usuniecia / Plik:</b>'); //wyswietla kolumne checkbox i nazwe pliku
  7.  
  8. while ($plik = readdir($kat)) //odczytanie kolejno plikow
  9. {
  10.  if($plik == "." || $plik == "..") continue; // pomija katalogi nadrzedne
  11. echo ('<br><input type="checkbox" name="plik" value='.$plik['plik'].'>'); 
  12.  echo ("$plik");
  13. }
  14. closedir($kat); //zamyka katalog
  15.  
  16. echo('<br /><input type="submit" name="wyslij" value="Usun zaznaczone"><br />');
  17. echo('</form>');
  18. ?>



w pliku nastepny.php :

  1. <?php
  2. $obraz=($_POST['plik']);
  3. unlink($obraz);
  4. ?>


dodam że prawa są nadane i wszystko powinno być ok. Problem jest z tym iż do pliku nastepny.php nie jest przekazywana żadna wartość z formularza.

Prośba o poradzenie i 2 zdania komentarza...
Dzieki.


mild
echo ('<br><input type="checkbox" name="plik" value='.$plik['plik'].'>');
Zamiast $plik['plik'] nie powinno byc po prostu $plik ?
drPayton
Checkbox przesyła jedynie informacje czy jest zaznaczony czy też nie i żadnych innych. Nie posiada (?) on wartości (value).
W tym momencie w żaden sposób nie przesyłasz nazw plików. Musisz to kompletnie przeorganizować. Nie wiem, może np przekazywać nazwę pliku jako atrybut name checkboxa (tablicowy)?
piano
Ha,.. dzieki mild.
Ruszyło z miejsca winksmiley.jpg .  Nie wiem tylko dlaczego ostatecznie wyświetla mi tylko jedą wartość skoro mam formularz z checkbox.
W przypadku jak w katalogu mam wiecej plikow to mi wiecej wyswietla w formularzu i moge tez wiecej zaznaczyc checkbox'ow.
Z tego co udalo mi sie zauwazyc :
drugi skrypt otrzymuje tylko jedą nazwe pliku a nie wszystkie ktore zaznaczylem.
Czy to jest kwestia formularza czy moze skrypt nastepny.php jest zle napisany...?





Komentarz drPayton'a zauwazylem dopiero po wyslaniu mojego.
Jedna uwaga. Nie jestem aż tak doswiadczony, dlatego podpieram sie literaturą. No i mam przed sobą dziesiątki bibli i wyraźnie mam w że checbox przesyla name/value w postaci name=value.
Potwierdza to też poprawka ktora naniosłem po komentarzu mild.

Mam teraz dylemat z tablicą, tzn. jesli zaznaczylem kilka plikow. I tego chyba nie przeskocze z checkbox'ami...

drPayton
A to przepraszam ;P
  1. <input type="checkbox" name="pliki[]" value="plik1.jpg" />
  2. <input type="checkbox" name="pliki[]" value="plik2.jpg" />
  3. <input type="checkbox" name="pliki[]" value="plik3.jpg" />


Przy odbieraniu w tablicy $_POST['pliki'] będziesz miał wszystkie te, które zostały zaznaczone, więc najprościej jak się da, przy odbieraniu:
  1. <?php
  2. foreach($_POST['pliki'] AS $plik) {
  3. unlink($plik);
  4. }
  5. ?>


Oczywiście zabezpieczenia by się przydały etc
piano
Spox drPayton.
Dzieki za rade.
Sprawdze to co zapodales i sprobuje zrobic jakies pętle gdyz w moim przypadku to nie wiadomo ile bedzie plikow.jpg  (obrazow) do wylistowania. Daje sobie czas do jutra rana.... snitch.gif

Zaciekawilo mnie to co napisales na koncu o zabezpieczeniach.
Jakbyś nakreslił chociaz 2 zdania abym wiedzial czego dalej szukac...
drPayton
Cytat
w moim przypadku to nie wiadomo ile bedzie plikow.jpg (obrazow) do wylistowania.

Dlatego masz ogólną pętlę, jako name checkboxa podajesz jakąś nazwę i [] (co oznacza tablicę) a w polu value pętlą (to już masz) podajesz nazwy plików

Co do zabezpieczeń to chodziło mi o to, że w przykładzie który podałem wypadałoby np sprawdzić,czy plik przeznaczony do usunięcia to plik graficzny,może jakiś alert czy na pewno chcesz usunąć dany plik (jak będzie długa checkboxów to można omyłkowo zaznaczyć nie ten co trzeba) etc
piano
Serce rośnie. guitar.gif Wszytko gra drPayton.
Petle juz zrobilem (mialem dokladnie tak jak opisales - wlasciwie nie trzeba bylo prawie nic robic).

Co do drugiego tematu to myslalem ze piszesz o jakis 'prostych' atakach z zewnatrz.
W tym przypadku ktory opisujesz nie ma niebezpieczenstwa gdyz wgrywam tam tez przez formularz tylko obrazy.

Dzieki.



-------------------------
dodałem [tag] do tematu ponieważ
padły już odpowiedzi
na przyszłość pamiętaj, że dodawanie
[tag]u należy do Ciebie
~Cienki1980
-poczatkujacy-
witam
musze zrobic w php przeglądarke plików w jednym katalogu na serwerze. napisałem podobny skrypt jak piano

$catalog = opendir("pliki/");
while (false !== ($file = readdir($catalog)))
{
$sum_all = $sum_all+filesize("pliki/$file");
$size = size_hum_read((filesize("pliki/$file")));
if (($file != ".") && ($file!=".."))
{
echo ("<tr>");
echo ("<td></td>");

echo ("<td><a href=\"pliki/$file\" align=center>".ikona($file)."$file</a></td>");
echo ("<td align=center>".nazwa($file)."</td>");
echo ("<td align=right>$size</td>");
echo ("</tr>\n");
}
}
wszystko działa całą zawartosc foldeu wypisuje w tabelce xxx
ale w katalogu pliki są tez inne katalogi kiedy chce je otworzyć ich zawartość jest wyswietlana domyslnie

jak zmodyfikować ten skrypt żeby zawartość podfolderów tez była wyświetlana w tabeli?questionmark.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.