Brisanje izlistane stavke iz deirektorijuma

Brisanje izlistane stavke iz deirektorijuma

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Imam mali problem kada izlistam fajlove iz direktorijuma.
Kako da posebno izbrisem neki dir.

E sada, kako da uradim kada se kliknem na stavku images u polje obrisi da se ona obrise. U dole navedenom primeru.
Ne koristim bazu da naglasim unapred jer je jako mala skripta tako da nema potrebe za bazom. Nadam se da me razumete o cemu govorim

Listing izgleda ovako:

----------------------------------------
Ime Fajla | Tip | Velicina | Obrisi
----------------------------------------
images | dir | 210 | Obrisi
----------------------------------------
style.css | file | 258 | Obrisi
----------------------------------------

Kod za izlistavanje mi izgleda ovako

$myDirectory = opendir("."); // get each entry while($entryName = readdir($myDirectory)) {    $dirArray[] = $entryName; } // close directory closedir($myDirectory); //   count elements in array $indexCount   = count($dirArray); Print ("$indexCount files<br>\n"); // sort 'em sort($dirArray); // print 'em print("<TABLE border=1 cellpadding=5 width=500 cellspacing=0 class=whitelinks>\n"); print("<TR><TH>Ime Fajla</TH><th>Tip</th><th>Velicina</th><th>Obrisi</th></TR>\n"); // loop through the array of files and print them all for($index=0; $index < $indexCount; $index++) {         if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files       print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>");       print("<td>");       print(filetype($dirArray[$index]));       print("</td>");       print("<td>");       print(filesize($dirArray[$index]));       print("</td>");       print("<td>");       print "OVDE TREBA DA POZOVEM BRISANJE";       print("</td>");       print("</TR>\n");    } } print("</TABLE>\n");

pokusavao sam sa funkcijama

rmdir
unlink

Ali i dalje nisam siguran kako da ih upotrebim u ovoj scripti

Unapred Hvala!!!



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

function delete_directory($dirname) {    if (is_dir($dirname))       $dir_handle = opendir($dirname);    if (!$dir_handle)       return false;    while($file = readdir($dir_handle)) {       if ($file != "." && $file != "..") {          if (!is_dir($dirname."/".$file))             unlink($dirname."/".$file);          else             delete_directory($dirname.'/'.$file);          }    }    closedir($dir_handle);    rmdir($dirname);    return true; }

Ovo sam izguglao na brzinu, trebalo bi da radi posao.



offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

I ja sam to izgooglao pa mi je ceo dir obrisalo i index.php. Ne radi mi to posao treba brise stavku koju ja oznacim za brisanje....

offline
  • PHP Developer
  • Pridružio: 02 Okt 2005
  • Poruke: 546

Funkcija brise onaj direktorijum koji jos prosledis.
A da bi direktorijum mogao da se obrise mora prvo da se izprazni.

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

Ok reci mi onda kako ja sada da je pozovem u ovome?
Da na klik obrisi on obrise odabranu stavku.

print "<a href = " " > Obrisi </a> Probao sam ovako if (isset($_GET['del'])) $dirname=$_GET['del'];         else $dirname='$dirArray[$index]';         switch($dirname){         case 'delite' :         delete_directory($dirname);         break;         default :         echo 'no run';          }

Vraca mi
Notice: Undefined variable: dir_handle in C:\wamp\www\Ivan\New Folder\admin.php on line 159

offline
  • Pridružio: 21 Apr 2007
  • Poruke: 98

Ako sam shvatio tačno šta ti treba, onda to možeš uraditi pomoću javascript gde označiš (selektuješ) fajlove za brisanje uz mogućnost da selektuješ sve odjednom. To bi ovako izgledalo:
<script language="JavaScript"> function toggle(source) {   checkboxes = document.getElementsByName('checkbox[]');   for(var i in checkboxes)     checkboxes[i].checked = source.checked; } </script> <form name ='myform' action='' method='post'> <input type='checkbox' onClick='toggle(this)' /> // Ovaj input je za select all
Zatim u petlji izlistaš ono što ti je potrebno, a pre imena staviš checkbox:
<input type="checkbox" name="checkbox[]" value="' . $dirArray[$index] . '">
Tamo gde je $dirArray[$index], možeš staviti ime fajla (sa npr. putanjom) kako bi lakše brisao selektovane fajlove (unlink).

U tvom slučaju to bi otprilike ovako izgledalo:
print("<TR><TD><input type=\"checkbox\" name=\"checkbox[]\" value=\"' . $dirArray[$index] . '\"><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>"); ... itd itd...

Sledi submit button:
<input class="inputButton" type="submit" name="Submit" value="Briši"></form>

Zatim ispod ide kod za brisanje označenih fajlova:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {    if (isset($_POST['Submit'])) {      for ($i = 0; $i < count($_POST['checkbox']); $i++) {      echo "<br />value $i = " . $_POST['checkbox'][$i]; //Ovo koristi za debugovanje kako bi video sta je selektovano     unlink('PUTANJA_DO_FAJLA/$_POST['checkbox'][$i]'); //Ako si kao input value stavio ime fajla     }    } }

offline
  • zend  Male
  • Počasni građanin
  • Pridružio: 22 Okt 2009
  • Poruke: 900
  • Gde živiš: Pancevo

@eevan79
Hvala na odgovoru, pokusacu tvoj primer!!!

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

eevan79 ::
if ($_SERVER['REQUEST_METHOD'] == 'POST') {    if (isset($_POST['Submit'])) {      for ($i = 0; $i < count($_POST['checkbox']); $i++) {      echo "<br />value $i = " . $_POST['checkbox'][$i]; //Ovo koristi za debugovanje kako bi video sta je selektovano     unlink('PUTANJA_DO_FAJLA/$_POST['checkbox'][$i]'); //Ako si kao input value stavio ime fajla     }    } }


A joj.. ovo je tako low security da nemas pojma.. ako radis nesto za vezbu sam.. na lokanom kompu kome spolji svet nema pristup, onda ok..

U svakom slucaju.. razmisli kako bi mogao da poboljsas sigurnost ovog koda. Koristice ti!.

p0z!

offline
  • Pridružio: 21 Apr 2007
  • Poruke: 98

Bože...

Zašto da razmišljam da poboljšam sigurnost? Pa kod nije za mene. Ja uvek sve filtriram preko neke funkcije ili klase ($_POST, $_GET, $_SESSION...).
Kod sam napisao kao smernicu kako da uradi ovo.

Ako autor ne zna da izfiltrira ovaj kod (što je veoma jednostavno), onda mu sigurno i ostatak skripte nije siguran.

U svakom slučaju, zašto ti nisi napisao nešto korisno kako se ovo može odraditi? Ovo što si napisao zna svaki početnik.

Kako donosite zaključke to je strašno, realno. Smile

Pozz.

Ko je trenutno na forumu
 

Ukupno su 1164 korisnika na forumu :: 42 registrovanih, 8 sakrivenih i 1114 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Bobrock1, Brana01, cavatina, darkojbn, deLacy, Denaya, gorican, gzoki, hatman, havoc995, ikan, Istman, Karla, kikisp, Kubovac, kunktator, laganini123, laki_bb, ljuba, Mcdado, mercedesamg, Mercury, Mixelotti, mnn2, mrav pesadinac, nebkv, nemkea71, panzerwaffe, pein, Ripanjac, S2M, saputnik plavetnila, shone34, slonic_tonic, Smiljke, stegonosa, suton, vesthepes, YugoSlav, zeo, |_MeD_|, 1107