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
?>
![Adios](http://static.forosdelweb.com/fdwtheme/images/smilies/adios.gif)