Autor Zpráva
bazz
Profil
ahoj, jsem v pasti... už gůglím dva dny a nejsem schopný najít způsob jak smazat složku i když obsahuje soubory :-/ asi to bude snadné ale prostě se mi nedaří to najít.

takhle si vypíšu složky..

<?php
$slozky = glob("uploads/*", GLOB_ONLYDIR);
// Řazení od nejnovějšího
usort($slozky, function($a, $b) {
  return filemtime($a) < filemtime($b);
});
// Výpis
$blank = "_blank";
foreach ($slozky as $slozka) {
  echo "<a href='$slozka/vypis_souboru.php'>". basename($slozka, '.*') . "</a><br>\n";
}


?>
mimochodec
Profil
Po dvoudenním hledání nic moc výsledek. Cos přesně hledal? Já jsem zkusil "php delete folder with files" a za tři minuty jsem našel třeba tohle: php.net/manual/en/function.rmdir.php#110489
bazz
Profil
vyzkoušel jsem několikatery skripty z php.net/manual ale asi jsem degen prostě to nedokážu implementovat na můj skript...
mohl by mi prosím někdo poradit kde dělám chybu.. děkuji
takhle jsem to zkoušel, ale marně, bohužel

<?php
$slozky = glob("uploads/*", GLOB_ONLYDIR);
usort($slozky, function($a, $b) {
  return filemtime($a) < filemtime($b);
});
function rrmdir($slozky) {
    $dir = opendir($slozky);
    while(false !== ( $file = readdir($dir)) ) {
        if (( $file != '.' ) && ( $file != '..' )) {
            $full = $src . '/' . $file;
            if ( is_dir($full) ) {
                rrmdir($full);
            }
            else {
                unlink($full);
            }
        }
    }
    closedir($dir);
    rmdir($slozky);
}
?>
Alphard
Profil
V rychlosti, proměnná $src neexistuje (mělo by tam být $slozky) a ta funkce se nikde nevolá.
bazz
Profil
s tímto skriptem jsem se nedomluvil. Takže jsem začal pracovat na tomto a mám tam problém s tím že se mi ty složky mažou při refreshi stránky což jak uznáte je dost nevhodné :-D
prosím nemůžu to rozlousknout mohl by na to někdo mrknout. Děkuji mnohokrát

<?php
$slozky = glob("uploads/*", GLOB_ONLYDIR);
// Řazení od nejnovějšího
usort($slozky, function($a, $b) {
  return filemtime($a) < filemtime($b);
});
// Výpis

foreach ($slozky as $slozka) {
  echo "<a href='$slozka/vypis_souboru.php'>". basename($slozka, '.*') . "</a><br>\n";
}


   if (@is_dir($slozka)) {
     $objects = scandir($slozka);
     foreach ($objects as $object) {
       if ($object != "." && $object != "..") {
         if (filetype($slozka."/".$object) == "dir") rrmdir($slozka."/".$object); else unlink($slozka."/".$object);
       }
     }
     reset($objects);
     rmdir($slozka);
   } 




$slozka = dir("./uploads/");
while($soubor=$slozka->read())

 {
  if ($soubor=="." || $soubor=="..") continue;
  echo "
  <span><a href=\"?soubor=$soubor\" onclick=\"return confirm('opravdu smazat tento soubor?')\">$soubor</a></span><br>\n";
 
}
$slozka->close();


?>


Taky mi to vypisuje ty soubory 2x ale když jedno z toho odstraním přestane to fachat uplně.. :-( chjo jsem z toho úplně blbej
Alphard
Profil
A jak jinak to má fungovat? Tady v [#5] je naprogramovaný výpis souborů (řádky 2-11), smazání souborů (řádky 14-23, ale využívají proměnné z té první části) a opět vypsání souborů (řádky 28-37).

ale když jedno z toho odstraním přestane to fachat uplně
Chtělo by to míň zkoušet kopírovat a víc přemýšlet. Rozumíte každému řádku a každé funkci, co dělá a proč tam je? Mně se ten kód zdá docela jednoduchý, kdyžtak se zeptejte.

A k problému. Mazat budete chtít asi jen ten soubor, který je v $_GET['soubor'] (tam se dostane klikem na odkaz). Doplňte tam podmínku:
// upozorňujii, že tady není žádné zabezpečení
if (!empty($_GET['soubor'])) {
  rrmdir($_GET['soubor']);
}
bazz
Profil
neklaplo mi nic :-(
když dám mazat složku kde jsou soubory nesmaže se mi.
vyřešil jsem to tak že tu složku nechám uživatele otevřít. tam on pomaže soubory a pak samotnou složku.. Bohužel skript který by to udělal automaticky mi vždy vypsal chybu že nemám práva
Keeehi
Profil
Pro budoucího čtenáře - to že to bazz nezvládne vyřešit neznamená, že to řešitelné není. Ve skutečnosti si stačí okopírovat skoro jakýkoli nalezený kód a jen ho správně pak použít.

function delTree($dir) { 
    $files = array_diff(scandir($dir), array('.','..')); 
    foreach ($files as $file) { 
        is_dir("$dir/$file") ? delTree("$dir/$file") : unlink("$dir/$file"); 
    } 
    return rmdir($dir); 
}

// upozorňuji, že tady není žádné zabezpečení
if (!empty($_GET['slozka'])) {
    delTree($_GET['slozka']);
}
leorond
Profil
Myslím že by to bazz dokázal kdyby skript pochopil, možná by bylo dobré mu ho trošku popsat :).

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: