Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2003, 08:50
Avatar de El Menda
El Menda
 
Fecha de Ingreso: junio-2001
Ubicación: Jaén
Mensajes: 516
Antigüedad: 22 años, 10 meses
Puntos: 0
Para probar: Script FTP

Hola a todos. Ahora mismo estoy diseñando en mi web de skate una especie de navegador de archivos que cada usuario puede usar para subir sus imágenes y para que pueda crear cada uno sus carpetas.
Me gustaría que lo probarais y me dijerais qué os ha parecido. Por supuesto que podeis hacer modificaciones :), y si encontrais algún fallo o quereis mejorar el script comentadlo por favor.
Iré corrigiendo aquí los fallos
Creo que está todo claro. A ver que os parece:
Código PHP:
<?
#Nombre del directorio. Debe acabar en /
$directorio="archivote/";
#Tamaño máximo de los archivos a subir
$tamano_kb 1000;
#Página con vista previa
$vista "ver.php";

#Extensiones para subir archivos (separadas por espacios)
$extensiones "gif jpg png bmp";

///////////////////////////////////////////
/////SCRIPT/////
//Se requiere PHP 4.1.0 o superior
//Características php.ini (comentarios entre corchetes)
//register_globals = Off [puedes ponerlo en On]
//file_uploads = On [ponlo como está aquí
//;upload_tmp_dir = [dejalo comentado si quieres]
//upload_max_filesize = 2M [pon el número de megas máximos para subir. En mi caso 1 M]
///////////////////////////////////////////
#Inserta el header HTML
    
function header_html() {
echo 
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML>
<HEAD>
<TITLE>Navegador FTP by Menda</TITLE>
</HEAD>
<BODY>
"
;
    }

#Inserta el footer HTML
    
function footer_html() {
echo 
"
</BODY>
</HTML>"
;
    }

#Calcula tamaño directorio
function dirsize($checkdir) { 
    
$dh opendir($checkdir); 
    
$size 0
    while ((
$file readdir($dh)) !== false
        if (
$file != "." and $file != "..") { 
            
$path $checkdir."/".$file
            if (
is_dir($path)) 
                
$size += dirsize($path); 
            elseif (
is_file($path)) 
                
$size += filesize($path); 
        } 
    
closedir($dh); 
 
$formated_size $size /1000
    return 
$formated_size
}

#Si no existe directorio lo crea
  
if (isset($_GET['dsub'])) {
$directorio $_GET['dsub']."/";
  } else {
  if(! 
is_dir($directorio)) {
mkdir($directorio,0777);
  }
  }

#Divide las extensiones
$extensione split(" "," ".$extensiones);

#Mensajes de redirección
 
if (empty($_POST['subir']) AND empty($_POST['borrar']) AND empty($_POST['imagen']) AND empty($_POST['carpeta']) AND empty($_GET['directorio'])) {
echo 
header_html(); //Insertamos header HTML
  
switch ($_GET['id']) {
case 
1:
$mensaje="<font color=\"green\">El archivo fue subido con éxito.</font>";
break;
case 
2:
$mensaje="<font color=\"red\">Error al intentar subir el archivo.</font>";
break;
case 
3:
$mensaje="<font color=\"red\">El archivo sobrepasa el límite de ".$tamano_kb." kbs.</font>";
break;
case 
4:
$mensaje="<font color=\"red\">Tipo de archivo no válido.</font>";
break;
case 
5:
$mensaje="<font color=\"blue\">Archivo (".$_GET["borrado"].") eliminado correctamente.</font>";
break;
case 
6:
$mensaje="<font color=\"green\">Carpeta (".$_GET["carpeta"].") creada correctamente.</font>";
break;
case 
7:
$mensaje="<font color=\"red\">La carpeta (".$_GET["carpeta"].") ya existe.</font>";
break;
  }

echo 
"<form enctype=\"multipart/form-data\" action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">";
#Pasar variable con subdirectorio
  
if (isset($_GET['dsub'])) {
echo 
"<input type=\"hidden\" name=\"posicion\" value=\"".$_GET['dsub']."\">";
  }
echo 
"
Seleccionar archivo: <input name=\"archivo_usuario\" type=\"file\"><br>
<input type=\"submit\" name=\"subir\" value=\"Subir archivo\">
</form>\n"
;
echo 
"<br>
<form method=\"post\" action=\""
.$_SERVER['PHP_SELF']."\">";
  if (isset(
$_GET['dsub'])) {
echo 
"<input type=\"hidden\" name=\"posicion\" value=\"".$_GET['dsub']."\">";
  }
echo 
"
Crear nueva carpeta: <input name=\"carpeta\" type=\"text\">
<input type=\"submit\" value=\"Nueva carpeta\">
</form>
"
;
#Se muestra mensaje (si hay)
   
if (isset($mensaje)) {
 echo 
"<br><b>".$mensaje."</b><br><br>";
   }
 echo 
"Leyendo directorio: ".$directorio;
 if (isset(
$_GET['dsub'])) {
echo 
"<br><a href=\"".$_SERVER['PHP_SELF']."\">Volver</a>";
 }
#Lectura de directorios
$d dir($directorio);
$i 0;
echo 
"
<table width=\"400\">"
;
      while(
$entry=$d->read()) {
       if (
$i<=1) {
       } else {
$ext explode(".",$entry);
$num count($ext)-1;
#Comprueba que se trata de un archivo
  
if (in_array($ext[$num], $extensione)) {
echo 
"
<tr>
<form action=\""
.$_SERVER['PHP_SELF']."\" method=\"post\">
<input type=\"hidden\" name=\"imagen\" value=\""
.$directorio.$entry."\">
<td><a href=\""
.$vista."?url=".$directorio.$entry."\">".$entry."</a></td>
<td>"
;
$filesize = (filesize($directorio.$entry)/1024);
$filesize number_format($filesize,2,",",".");
echo 
$filesize;
echo 
" kb's</td>
<td><input type=\"submit\" name=\"borrar\" value=\"Borrar\"></td>
</form>
</tr>
"
;
  } else {
#Listado de carpetas
echo "
<tr>
<form action=\""
.$_SERVER['PHP_SELF']."\" method=\"post\">
<input type=\"hidden\" name=\"imagen\" value=\""
.$url[1].$directorio.$entry."\">
<td bgcolor=\"#CCCCCC\"><a href=\""
.$_SERVER['PHP_SELF']."?dsub=".$directorio.$entry."\">".$entry."</a></td>
<td>"
;
#Tamaño de directorio
$filesize dirsize($directorio.$entry);
echo 
$filesize;
echo 
" kb's</td>
<td></td>
</form>
</tr>"
;
  }
       }
      
$i++;
      }
$d->close();
      echo 
"</table>";

//BORRADO DE CARPETAS/IMÁGENES
 
} elseif (isset($_POST['borrar']) AND isset($_POST['imagen'])) {
unlink($_POST['imagen']);
Header("Location: ".$_SERVER['PHP_SELF']."?id=5&borrado=".$_POST['imagen']);
exit();

//CREACION DE CARPETAS
 
} elseif (isset($_POST['carpeta'])) {
  if (isset(
$_POST['posicion'])) {
$directorio $_POST['posicion'];
  }
  if(! 
is_dir($directorio."/".$_POST['carpeta'])) {
mkdir($directorio."/".$_POST['carpeta'],0777);
Header("Location: ".$_SERVER['PHP_SELF']."?id=6&carpeta=".$_POST['carpeta']);
exit();
  } else {
Header("Location: ".$_SERVER['PHP_SELF']."?id=7&carpeta=".$_POST['carpeta']);
exit();
  }

//SUBIDA DE ARCHIVOS
 
} else {
$bytes 1024;
$tamano $tamano_kb*$bytes;
$num count($extension)-1;
#Mira la extension del archivo a subir
$extension explode(".",$_FILES['archivo_usuario']['name']);

#Comprueba extensiones
  
if (in_array($extension[$num], $extensione)) {
    if (
$_FILES['archivo_usuario']['size'] > $tamano) {
Header("Location: ".$_SERVER['PHP_SELF']."?id=3");
exit();
    } else {
  if (isset(
$_POST['posicion'])) {
$directorio $_POST['posicion']."/";
  }
   if  (
move_uploaded_file($_FILES['archivo_usuario']['tmp_name'], $directorio $_FILES['archivo_usuario']['name'])) {
  if (isset(
$_POST['posicion'])) {
#Redireccion a carpeta anterior
Header("Location: ".$_SERVER['PHP_SELF']."?id=1&dsub=".$_POST['posicion']);
exit();
  } else {
#Redireccion archivo subido correctamente
Header("Location: ".$_SERVER['PHP_SELF']."?id=1");
exit();
  }
   } else {
#Redireccion error al subir archivo
Header("Location: ".$_SERVER['PHP_SELF']."?id=2");
exit();
   }
    }
  } else {
#Redireccion tipo de archivo no valido
Header("Location: ".$_SERVER['PHP_SELF']."?id=4");
exit();
  }
 }

//FOOTER
echo "<br><br><font size=\"1\">Los ficheros ya existentes se sobreescribirán automáticamente<br>
Extensiones válidas: <b>"
.$extensiones."</b><br>
Tamaño máximo de fichero: <b>"
.$tamano_kb."</b>";

echo 
"<br><a href=\"".$_SERVER['PHP_SELF']."\">Pulsar en caso de error</a></font>";
echo 
footer_html(); //Ponemos el footer HTML
?>
Saludos
__________________
"No hay mujer fea sino copa de menos"

Última edición por El Menda; 09/10/2003 a las 16:22