Autor
|
Tema: Ayuda, ver y borrar archivos (Leído 6,947 veces)
|
krisor
Desconectado
Mensajes: 13
|
Holap, soy nuevo por aqui, paso por recomendacion ^^ Mi caso es, tengo dos codes, uno para ver archivos de un directorio y otro para eliminar archivos, concretamente, el que este puesto en el .php. Lo que quisiera es, que al escribir, por ejemplo, www.webweb.com/cajon/borrar.php, muestre los archivos que hay en dichi directorio y que al seleccionar uno, se borre, seria eso posible? Os pongo los codes: -Para borrar <?php if (file_exists("/temp/aviso.bmp")) { unlink("/temp/aviso.bmp"); print("File removed.\n"); } else { print("File does not exist.\n"); } ?>
-Para ver los archivos <?php function getFiles($path) { $files = array(); $fileNames = array(); $i = 0;
if (is_dir($path)) { if ($dh = opendir($path)) { while (($file = readdir($dh)) !== false) { if ($file == "." || $file == ".." || $file == "index.php" || $file == "passwords.txt") continue; $fullpath = $path . "/" . $file; $fkey = strtolower($file); while (array_key_exists($fkey,$fileNames)) $fkey .= " "; $a = stat($fullpath); $files[$fkey]['size'] = $a['size']; if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-"; else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " Kb"; else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb"; else $files[$fkey]['sizetext'] = $a['size'] . " bytes"; $files[$fkey]['name'] = $file; $files[$fkey]['type'] = filetype($fullpath); $fileNames[$i++] = $fkey; } closedir($dh); } else die ("No pudo abrirse el directorio: $path"); } else die ("La ruta no es un directorio: $path"); sort($fileNames,SORT_STRING); $sortedFiles = array(); $i = 0; foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];
return $sortedFiles; }
$files = getFiles("./"); foreach ($files as $file) print " <b><a href=\"$file[name]\">$file[name]</a></b><br>\n"; } ?> Espero puedan ayudarme, saludos ^^
|
|
« Última modificación: 22 Julio 2009, 19:42 pm por krisor »
|
En línea
|
|
|
|
SnakeDrak
Desconectado
Mensajes: 243
[GPG: 0x9680A09E]
|
Hola, No entiendo el problema, si ahí tienes los códigos, ¿qué necesitas?, ¿te dan error? Bueno si lo que quieres es borrar el archivo seleccionado pues borrar.php: // Función de ver los ficheros // AQUÍ INCLUYE LA DE GETFILES (por ejemplo) $dir = "./"; // Ahí pones el directorio // Comprobamos si el nombre pasado tiene "/" (para evitar salir de directorios, lee debajo del code) o si no existe if(!isset($_GET['archivo']) || !preg_match('/[^\/]/',$_GET['archivo']) || $_GET['archivo']=="borrar.php"){ $files = getFiles($dir); foreach ($files as $file) echo " <b><a href=\"./?archivo=".$file[name]."\">".$file[name]."</a></b><br>\n"; } else { unlink($dir.$_GET['archivo']); echo "Archivo eliminado.\n"; } else echo "El archivo ".$_GET['archivo']." no existe.\n"; }
La única restricción que he puesto es de "/" pero puedes ponerle que el nombre de archivo no pueda contener caracteres como "*" o similares.. para evitar que te borren otros archivos. NOTA: NO HE COMPROBADO LA FUNCIÓN GETFILES pero supongo que estará bien, solo ponla arriba y ya. Lo he hecho a lo rápido, pero no debería tener errores, si tiene alguno solo dilo. Saludos!
|
|
« Última modificación: 22 Julio 2009, 20:33 pm por SnakeDrak »
|
En línea
|
|
|
|
krisor
Desconectado
Mensajes: 13
|
Bueno, he echo esto a ciegas, por eso no va .-. <?php function getFiles($path) { $files = array(); $fileNames = array(); $i = 0;
if (is_dir($path)) { if ($dh = opendir($path)) { while (($file = readdir($dh)) !== false) { if ($file == "." || $file == ".." || $file == "index.php" || $file == "passwords.txt") continue; $fullpath = $path . "/" . $file; $fkey = strtolower($file); while (array_key_exists($fkey,$fileNames)) $fkey .= " "; $a = stat($fullpath); $files[$fkey]['size'] = $a['size']; if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-"; else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " Kb"; else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb"; else $files[$fkey]['sizetext'] = $a['size'] . " bytes"; $files[$fkey]['name'] = $file; $files[$fkey]['type'] = filetype($fullpath); $fileNames[$i++] = $fkey; } closedir($dh); } else die ("No pudo abrirse el directorio: $path"); } else die ("La ruta no es un directorio: $path"); sort($fileNames,SORT_STRING); $sortedFiles = array(); $i = 0; foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f];
return $sortedFiles; }
$files = getFiles("./uploads/"); foreach ($files as $file) print " <b><a href=\"$file[name]\">$file[name]</a></b><br>\n"; } // AQUÍ INCLUYE LA DE GETFILES (por ejemplo) $dir = "./uploads/"; // Ahí pones el directorio // Comprobamos si el nombre pasado tiene "/" (para evitar salir de directorios, lee debajo del code) o si no existe if(!isset($_GET['archivo']) || !preg_match('/[^\/]/',$_GET['archivo']) || $_GET['archivo']=="borrar.php"){ $files = getFiles($dir); foreach ($files as $file) echo " <b><a href=\"./?archivo=".$file[name]."\">".$file[name]."</a></b><br>\n"; } else { if (file_exists($dir.$_GET['archivo'])) { unlink($dir.$_GET['archivo']); echo "Archivo eliminado.\n"; } else echo "El archivo ".$_GET['archivo']." no existe.\n"; } ?> El archivo esta alojado en www.pagina.web.com/uploads/ (dentro de uploads), no va, tampoco entiendo bien lo que me as dixo, se nota que soy super novato .-. A lo que me referia es, mostrar archivos a borrar, elegir cual borrar, y borrar, se supone que con esos codes se puede hacer, pero no se como .-. Gracias por el cable ^^
|
|
|
En línea
|
|
|
|
SnakeDrak
Desconectado
Mensajes: 243
[GPG: 0x9680A09E]
|
Hola, Pues aquí te he arreglado el archivo, esto lo que haría sería abrir el directorio uploads (que debe estar en el mismo directorio que borrar.php) y al abrir borrar.php mostraría todos los archivos de la carpeta uploads y cuando pulses en un archivo automáticamente se borraría. <?php function getFiles($path) { $i = 0; while (($file = readdir($dh)) !== false) { if ($file == "." || $file == "..") continue; $fullpath = $path . "/" . $file; $fkey .= " "; $files[$fkey]['size'] = $a['size']; if ($a['size'] == 0) $files[$fkey]['sizetext'] = "-"; else if ($a['size'] > 1024) $files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " Kb"; else if ($a['size'] > 1024*1024) $files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mb"; else $files[$fkey]['sizetext'] = $a['size'] . " bytes"; $files[$fkey]['name'] = $file; $files[$fkey]['type'] = filetype($fullpath); $fileNames[$i++] = $fkey; } } else die ("No pudo abrirse el directorio: $path"); } else die ("La ruta no es un directorio: $path"); sort($fileNames,SORT_STRING ); $i = 0; foreach($fileNames as $f) $sortedFiles[$i++] = $files[$f]; return $sortedFiles; } $dir = "./uploads/"; // Ahí pones el directorio // Comprobamos si el nombre pasado tiene "/" (para evitar salir de directorios, lee debajo del code) o si no existe if(!isset($_GET['archivo']) || !preg_match('/[^\/]/',$_GET['archivo']) || $_GET['archivo']=="." || $_GET['archivo']==".."){ $files = getFiles($dir); foreach ($files as $file) echo " <b><a href=\"./?archivo=".$file[name]."\">".$file[name]."</a></b><br>\n"; } else { unlink($dir.$_GET['archivo']); die("Archivo eliminado.\n"); } else die("El archivo ".$_GET['archivo']." no existe.\n"); } ?>
Si tienes más problemas dilo. Saludos!
|
|
« Última modificación: 22 Julio 2009, 23:23 pm por SnakeDrak »
|
En línea
|
|
|
|
дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
Desconectado
Mensajes: 5.110
|
Dale permisos a tu carpeta.
|
|
|
En línea
|
|
|
|
krisor
Desconectado
Mensajes: 13
|
.... no me funciona, solo cambio $dir = "./uploads/"; // Ahí pones el directorio por $dir = "./"; // Ahí pones el directorio Al ser esa carpeta donde estan alojados los archivos a borrar. Pongo www.frfr.web.com/th/uploads/borrar.php, una vez hecho, parece que se carga algo, termina de cargarse y se siguen mostrando los los archivos, le doy a uno, parece que hace algo, pero se para, y no borrar. Nose, sere yo? (He dado 777 a la carpeta)
|
|
|
En línea
|
|
|
|
SnakeDrak
Desconectado
Mensajes: 243
[GPG: 0x9680A09E]
|
Hola, Dale permisos 777 también a los ficheros, además el borrar.php no lo pongas en la misma carpeta.. o te podrán borrar ese archivo, subelo mejor un directorio y pon como tenías antes, ./uploads/. Activa los errores en el .htaccess: php_flag display_errors On
Y pon una dirección válida para ver cual es el error. Como te he dicho, yo solo he adaptado la función que pusiste de getFiles, no sé si estará bien, así que pon la web con los errores activados. Recuerda darle 777 a los archivos y a la carpeta y SUBE un directorio el borrar.php y ponle ./uploads/ en caso de que no puedas subirlo cambia: if(!isset($_GET['archivo']) || !preg_match('/[^\/]/',$_GET['archivo']) || $_GET['archivo']=="." || $_GET['archivo']==".."){
Por: if(!isset($_GET['archivo']) || !preg_match('/[^\/]/',$_GET['archivo']) || $_GET['archivo']=="." || $_GET['archivo']==".." || $_GET['archivo']=="borrar.php"){
Saludos!
|
|
|
En línea
|
|
|
|
ihton
Desconectado
Mensajes: 52
|
Había un pequeño fallo foreach ($files as $file) echo " <b><a href=\"./?archivo=".$file[name]."\">".$file[name]."</a></b><br>\n"; Ahí es donde esta el fallo, falta una cosa, hay que dejarlo así: foreach ($files as $file) echo " <b><a href=\"./borrar.php?archivo=".$file[name]."\">".$file[name]."</a></b><br>\n";
|
|
|
En línea
|
|
|
|
SnakeDrak
Desconectado
Mensajes: 243
[GPG: 0x9680A09E]
|
Hola,
Ops xD, es que yo trabajo con .htaccess y mod_rewrite siempre (para que no se vean los nombres de fichero) y claro, constumbre.
Al ser borrar.php y no index.php pues no funcionaba, ponle el borrar.php donde dijo ihton y ya debería borrarlos, también podrías hacerlo con AJAX más avanzado.
Saludos.
|
|
|
En línea
|
|
|
|
krisor
Desconectado
Mensajes: 13
|
Asunto zanjado, gracias a los 3 ^^
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Borrar archivos dificiles
Windows
|
galo1963
|
3
|
3,672
|
3 Enero 2012, 20:09 pm
por Randomize
|
|
|
ayuda bats para borrar archivos y subcarpetas excepto algunos
Scripting
|
nanoakb
|
0
|
3,084
|
6 Mayo 2016, 19:01 pm
por nanoakb
|
|
|
borrar archivos movil
Dispositivos Móviles (PDA's, Smartphones, Tablets)
|
sagunto1234
|
1
|
2,691
|
31 Agosto 2016, 19:11 pm
por [Arg] $triker;
|
|
|
no puedo borrar archivos
Dispositivos Móviles (PDA's, Smartphones, Tablets)
|
inma55
|
5
|
7,839
|
13 Junio 2023, 17:39 pm
por inma55
|
|