Foros del Web » Programando para Internet » PHP »

Problema borrando archivos en Servidor

Estas en el tema de Problema borrando archivos en Servidor en el foro de PHP en Foros del Web. Bueno ante todo Gracias por ver el Mensaje xP Y segundo tengo estos dos codigos Como dije anteriormente quiero borrar archivos del seridor Buscar.php este ...
  #1 (permalink)  
Antiguo 11/03/2008, 18:42
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 4 meses
Puntos: 3
Problema borrando archivos en Servidor

Bueno ante todo Gracias por ver el Mensaje xP

Y segundo tengo estos dos codigos

Como dije anteriormente quiero borrar archivos del seridor

Buscar.php este es el que enlista los archivos
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Explorando /<? echo $_GET['ruta']; ?></title> 
</head> 
<body> 
<pre> 
<? 

if (empty($_GET['ruta']) || ereg("^\."$_GET['ruta'])) { 
    
$dir './'

else { 
    
$dir $_GET['ruta']; 

if (
is_dir($dir)) { 
     
    function 
tamano($bytes) { 
        
$largo strlen($bytes); 
        if (
$largo 4) { 
            
$divisor 1
            
$unidad 'B'
        } 
        else if (
$largo && $largo 7) { 
            
$divisor 1024
            
$unidad 'KB'
        } 
        else if (
$largo && $largo 10) { 
            
$divisor pow(10242); 
            
$unidad 'MB'
        } 
        else if (
$largo && $largo 12) { 
            
$divisor pow(10243); 
            
$unidad 'GB'
        } 
        else { 
            
$divisor pow(10244); 
            
$unidad 'TB'
        } 
        
$salida[0] = round(($bytes $divisor), 2); 
        
$salida[1] = $unidad
        return 
$salida
    } 

    
$gd opendir($dir); 
    if (
$gd) { 
        
$rn "\r\n"
        while ((
$archivo readdir($gd)) !== false) { 
            if (
ereg("^(.)*\.[a-zA-Z0-9]{1,3}$"$archivo)) { 
                if (
$archivo == 'explorar.php') { break; } 
                
$extension strtolower(substr($archivo, -3)); 
                
//Para diferente extension diferente icono a mostrar. Añade las que quieras.
                  
switch ($extension) { 
                    case 
'mp3'
                    case 
'wma'
                        
$icono 'snd'
                            break;
                    case 
'doc'
                    case 
'txt'
                      
$icono 'word'
                            break;
                    case 
'pdf'
                      
$icono 'pdf'
                            break;
                    case 
'php'
                    case 
'htm':                     
                        
$icono 'web'
                        break;  
                    case 
'jpg';
                    case 
'gif'
                    case 
'tif'
                    case 
'png'
                        
$icono 'pic'
                        break;                     
                    default: 
                        
$icono 'unk'
                        break; 
                } 
                 
                
$iconos [] = $icono
                
$archivos[] = $archivo
                
$fechas[] = $fecha
                
$tamanos[] = tamano(filesize($dir.$archivo)); 
            } 
            else if (
$archivo != '.' && $archivo != '..') { 
                
$carpetas[] = $archivo
            } 
        } 
        
closedir($gd); 
         
        if (
$dir != '.') { 
            
$ruta explode('/'$_GET['ruta']); 
            
$tot_subdir count($ruta) - 2
            
krsort($ruta); 
            
$volver '<img src="iconos/bck.png"> <a href="?ruta='
            for (
$i 0$i $tot_subdir$i++) { 
                
$volver .= $ruta[$i].'/'
            } 
            
$volver .= '">volver</a>'.$rn
             
        } 
         echo 
'<h1><font face="Verdana" color="#FF9933">'.$dir.'</font></h1>';
         if (
$dir != '.') echo $volver;
         
        if (
is_array($carpetas)) { 
            
natcasesort($carpetas); 
            foreach (
$carpetas as $valor) { 
                echo 
'<img src="iconos/fol.png"> <a href="?ruta='.$_GET['ruta'].urlencode($valor).'/">'.$valor.'</a>    '.$rn
            } 
        } 
         
        if (
is_array($archivos)) { 
            if (
natcasesort($archivos)) { 
                foreach (
$archivos as $clave => $valor) { 
                    echo 
'<img src="iconos/'.$iconos[$clave].'.png"> <a href="'.$dir.urlencode($valor).'">'.$valor.'</a>    ';
                    
printf("%6.2f "$tamanos[$clave][0]); 
                    echo 
$tamanos[$clave][1].'   ';
                    echo 
'<a href="./borrar.php?fichero='.$valor.'">Borrar</a>';
                    if (
$dir=='./'){
                    echo 
'<font face="Verdana">Link  <b><u>'.$valor.'</u></b></font>';
                    }
                    else{
                    echo 
'<font face="Verdana">Link  <b><u>'.$dir.$valor.'</u></b></font>'; }
                    echo 
$rn
                } 
            } 
        } 
    } 

else { 
    echo 
'El directorio \''.$dir.'\' no es v&aacute;lido.'.$rn;;
                
$volver '<img src="bck.png"> <a href="?ruta='
            for (
$i 0$i $tot_subdir$i++) { 
                
$volver .= $ruta[$i].'/'
            } 
            
$volver .= '">volver</a>'.$rn
            echo 
$volver;  

?> 
</pre>
y este el cuel borra el fichero

Borrar.php este es el que borra el fichero especificado
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<?php
$fichero
=$_GET["fichero"];
//yo tengo el directorio aqui "web1/documentos/" vosotros cambiarlo al vuestro
$path=$_SERVER['DOCUMENT_ROOT']."http://localhost/".$fichero;
unlink($path);
echo 
"<script> alert (\"Archivo borrado con éxito\"); </script>";
?> 
</body>
</html>
Cuando trato de borrar un archivo sale no such file o directory que podra ser?

Última edición por Carlmycol; 11/03/2008 a las 19:03
  #2 (permalink)  
Antiguo 11/03/2008, 20:46
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 2 meses
Puntos: 67
Re: Problema borrando archivos en Servidor

Pues lo único que podría ser en este caso: que no encuentra el archivo que está intentando borrar, es que pones una ruta incorrecta, parece que no tomas en cuenta la carpeta donde está el archivo a borrar, pero hay algo más, no debes poner la ruta absoluta para borrar un archivo, eso no es posible, debes ponerla siempre la ruta relativa a la carpeta donde se encuentra el archivo php que está intentando borrar el archivo.
  #3 (permalink)  
Antiguo 11/03/2008, 21:16
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema borrando archivos en Servidor

Código PHP:
echo '<a href="./borrar.php?fichero='.$valor.'">Borrar</a>'
Al momento de imprimir el link para borrar el archivo pasas únicamente el nombre del fichero, mas no su ubicación. Así, el script en borrar.php no sabrás donde buscar y encontrar el archivo a borrar. Una solución sería pasarle el nombre del fichero jutno con el directorio en el que se encuentra por la URL:
Código PHP:
echo '<a href="./borrar.php?fichero='.$dir.$valor.'">Borrar</a>'
Ahora, es muy cierto lo que dice ElJavista. Fíjate en esto:
Código PHP:
$path=$_SERVER['DOCUMENT_ROOT']."http://localhost/".$fichero
Esto te genera una ruta totalmente errada, algo como

/home/sitio.com/htdocshttp://localhost/$fichero

LO cual no tiene sentido por ningún lado. Si aplicas la primera sugerencia que te hice, de incluir en la URL la ruta del archivo a borrar, pues simplemente tendrías que:

Código PHP:
<?php
$fichero
=$_GET["fichero"];
//yo tengo el directorio aqui "web1/documentos/" vosotros cambiarlo al vuestro
# $path=$_SERVER['DOCUMENT_ROOT']."http://localhost/".$fichero; // Esto ya no
unlink($fichero);
echo 
"<script> alert (\"Archivo borrado con éxito\"); </script>";
?>
Además, sería bueno que uses la función file_exists() para verificar previamente si el archivo en verdad existe, antes de proceder a borrarlo.

Saludos,
  #4 (permalink)  
Antiguo 12/03/2008, 09:00
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 4 meses
Puntos: 3
Re: Problema borrando archivos en Servidor

Ahora funciona para borrar los archivos que estan dentro del accseso del archivo borrar pero ahora estoy tratando de hacer una especie de cpanel como de hosting que implique borrar borrar los archivos que tiene el usuario algo asi como:

wargames.com?action=borrar.php

Como se puede hacer para que en vez de borrar los archivos esten dentro del directorio wargames.com

Salu2 y grax
  #5 (permalink)  
Antiguo 12/03/2008, 12:49
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema borrando archivos en Servidor

Pasarle a la página borrar.php una ruta que contenga el directorio y el archivo, tomando como base la ubicación del archivo borrar.php

borrar.php?fichero=algo.jpg
borrar.php?fichero=directorio/algo.jpg
borrar.php?fichero=directorio/subdirectorio/algo.jpg

Saludos,
  #6 (permalink)  
Antiguo 13/03/2008, 15:25
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 16 años, 4 meses
Puntos: 3
Re: Problema borrando archivos en Servidor

Cuando borro loas archivos sale no such file or directory...

hay alguna funcion para agarrar la url donde se esta trabajando?

Por ejemplo:

Wargames.com?page=borrar.php

Como puedo hacer para que tome como ruta warwames.com y no la misma ruta de borrar.php?

Salu2
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:44.