Foros del Web » Programando para Internet » PHP »

Eliminar carpetas y archivos

Estas en el tema de Eliminar carpetas y archivos en el foro de PHP en Foros del Web. No acabo de entender este ejemplo Ni sé, si es correcto Si el directorio a eliminar es; $dir_a_eliminar = "dir"; y no sabemos cuantos archivos ...
  #1 (permalink)  
Antiguo 20/05/2003, 11:35
 
Fecha de Ingreso: febrero-2003
Mensajes: 204
Antigüedad: 14 años, 10 meses
Puntos: 2
Eliminar carpetas y archivos

No acabo de entender este ejemplo
Ni sé, si es correcto

Si el directorio a eliminar es;
$dir_a_eliminar = "dir";
y no sabemos cuantos archivos cuelgan de la carpeta dir,
como lo podria hacer para borrarlo todo.

// eliminar directorio

<?php
function delete($file) {
chmod($file,0777);
if (is_dir($file)) {
$handle = opendir($file);
while($filename = readdir($handle)) {
if ($filename != "." && $filename != "..") {
delete($file."/".$filename);
}
}
closedir($handle);
rmdir($file);
} else {
unlink($file);
}

He probado tambien con

archivo pru.htm
---------------------------------------------------------------------------------
<html>
<head>
<title>eliminar</title>
</head>
<body>
<?php
include("deldir.php");
$dir = "Carpeta";
deldir
?>
</body>
</html>
---------------------------------------------------------------------------------



archivo deldir.php
---------------------------------------------------------------------------------
<?php
// eliminar directorio
// primero debe vaciarse de archivos
function deldir($dir){
$current_dir = opendir($dir);
while($entryname = readdir($current_dir)){
if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!="..")){
deldir("${dir}/${entryname}");
}elseif($entryname != "." and $entryname!=".."){
unlink("${dir}/${entryname}");
}
}
closedir($current_dir);
rmdir(${dir});
}
?>
--------------------------------------------------------------------------------

Pues este metodo me da este mensaje de error

Notice: Use of undefined constant deldir - assumed 'deldir' in C:\Inetpub\wwwroot\informes\Admin\Informes\pru.php on line 11

Última edición por antirco; 20/05/2003 a las 11:35
  #2 (permalink)  
Antiguo 20/05/2003, 11:51
Avatar de cofyman  
Fecha de Ingreso: noviembre-2002
Ubicación: Murcia - Spain
Mensajes: 17
Antigüedad: 15 años
Puntos: 0
Busqueda

No se si será esto o es un error ... pero te has fijado que dices que el archivo es este:

Código PHP:
<html>
<head>
<title>eliminar</title>
</head>
<body>
<?php
   
include("deldir.php");
   
$dir "Carpeta";
   
deldir
?>
</body>
</html>
Creo que deberias decir:

Código PHP:
<html>
<head>
<title>eliminar</title>
</head>
<body>
<?php
   
include("deldir.php");
   
$dir "Carpeta";
   
deldir($dir); //<--- Esto de aqui puede ser el error
?>
</body>
</html>
Puede que me equivoque pero mira bien.
  #3 (permalink)  
Antiguo 20/05/2003, 22:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. estas usando funciones .. así que si no te manejas bien con funciones deberías leer al respecto en el manual de PHP:

http://www.php.net/manual/en/functions.php

Si lees ese capítulo .. veras que tus funciones las debes usar así:

Código PHP:
<?php
   
include("deldir.php");
   
$dir "Carpeta";
   
delete($dir); // esa función borra los archivos de esa carpeta segun dice y parece hacer... 
   
deldir($dir); // esta función dice borrar el directorio .. pero que no contenga archivos (se supone que la anterior función ya los ha borrado)
?>
Por lo demas .. esas funciones son recursivas (se llaman a si mismas) para borrar un directorio y subdirectorios de archivos y sus directorios/sub.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 21/05/2003, 03:41
 
Fecha de Ingreso: febrero-2003
Mensajes: 204
Antigüedad: 14 años, 10 meses
Puntos: 2
Utilizando
PHP:--------------------------------------------------------------------------------
<?php
include("deldir.php");
$dir = "Carpeta";
deldir($dir); // esta función dice borrar el directorio .. pero que no contenga archivos (se supone que la anterior función ya los ha borrado)
?>

--------------------------------------------------------------------------------

y en deldir.php

<?php
function deldir($dir){
$current_dir = opendir($dir);
while($entryname = readdir($current_dir)){
if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!="..")){
deldir("${dir}/${entryname}");
}elseif($entryname != "." and $entryname!=".."){
unlink("${dir}/${entryname}");
}
}
closedir($current_dir);
rmdir(${dir});
}
?>

ME BORRA LA CARPETA, PERO.......
!!SALE ESTE ERROR!!
Notice: Use of undefined constant dir - assumed 'dir' in C:\Inetpub\wwwroot\informes\Admin\Informes\deldir. php on line 14

He probado de cambiar la linea que pone

rmdir($(dir));
por
rmdir($dir);
y ya no da error y funciona,

Lo raro es que el script de ejemplo (que me da error)esta sacado de php.net
  #5 (permalink)  
Antiguo 21/05/2003, 14:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cré que deberias preguntarte que típo de "error" te ha dado PHP .. Lo que te ha dado es un "NOTICE" (aviso) .. NO es un error .. pues el script sigue igual su ejecución .. sólo te avisa de ese hecho que dice.

Cuando "tocas" un script . ... deberías tambien ver que estas "tocando" ..

Originalmente
Código PHP:
rmdir(${dir}); 
ahí está usando "variable variables" ( http://www.php.net/manual/en/languag...s.variable.php ) No me he puesto a ver para que lo usan .. pero si estudias el código lo veras ..

Y . bueno .. si lo has sacado de X sítios . tal vez de los comentarios de los usuarios siempre tienes ahi un e-mail de contacto para hacerle saber tus problemas con el código que publican ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:25.