Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] FTP con PHP acceso a carpetas

Estas en el tema de FTP con PHP acceso a carpetas en el foro de PHP en Foros del Web. Buenas a todos! Tengo el siguiente código que muestra los archivos de mi ftp pudiendo acceder a los ficheros correctamente (no dejo que se vean ...
  #1 (permalink)  
Antiguo 22/10/2014, 03:55
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 11 años, 7 meses
Puntos: 0
FTP con PHP acceso a carpetas

Buenas a todos!

Tengo el siguiente código que muestra los archivos de mi ftp pudiendo acceder a los ficheros correctamente (no dejo que se vean las carpetas):

Código PHP:
<xml version="1.0" encoding="iso-8859-1">
<!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>
<title>Documentos del Usuario</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p align="center"><font size="5" face="Verdana, Tahoma, Arial"><strong><em>
Documentos FTP
</em></strong></font></p>
<p><font face="Verdana, Tahoma, Arial">


<?

# FUNCIONES FTP
# CONSTANTES 
# Cambie estos datos por los de su Servidor FTP
/*$server = $_GET["server"];
$user = $_GET["user"];
$password = $_GET["pass"];
*/
$server "miservidor.com";
$user "miusuario";
$password "mipassword";

if(
$server==''){
echo 
"NO TIENES PERMISO PARA VER LOS DOCUMENTOS";
}
else{
define("SERVER",$server); //IP o Nombre del Servidor
define("PORT",21); //Puerto
define("USER",$user); //Nombre de Usuario
define("PASSWORD",$password); //Contraseña de acceso
define("MODO",true); //Activa modo pasivo

# FUNCIONES

function ConectarFTP(){
//Permite conectarse al Servidor FTP
$id_ftp=ftp_connect(SERVER,PORT); //Obtiene un manejador del Servidor FTP
ftp_login($id_ftp,USER,PASSWORD); //Se loguea al Servidor FTP
ftp_pasv($id_ftp,MODO); //Establece el modo de conexión
return $id_ftp//Devuelve el manejador a la función
}

function 
ObtenerRuta(){
//Obriene ruta del directorio del Servidor FTP (Comando PWD)
$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP 
$Directorio=ftp_pwd($id_ftp); //Devuelve ruta actual p.e. "/home/willy"
ftp_quit($id_ftp); //Cierra la conexion FTP
return $Directorio//Devuelve la ruta a la función
}

if(!empty(
$_POST["archivo"])){ //Comprueba si la variable "archivo" se ha definido
SubirArchivo($_POST["archivo"],basename($_POST["archivo"])); 
//basename obtiene el nombre de archivo sin la ruta
unset($_POST["archivo"]); //Destruye la variable "archivo"
}
?>

<hr />
<p><font face="Verdana, Tahoma, Arial"><strong><font color="#000000" size="3">
Lista de Archivos
</font></strong></font></p>
<table width="69%" border="1" cellspacing="0" cellpadding="0">
<tr> 
<td width="48%"><div align="center"><font size="2" face="Verdana, Tahoma, Arial"><strong>Nombre</strong></font></div></td>
<td width="22%"><div align="center"><font size="2" face="Verdana, Tahoma, Arial"><strong>Tama&ntilde;o</strong></font></div></td>
<td width="30%"><div align="center"><font size="2" face="Verdana, Tahoma, Arial"><strong>Fec. 
Modificaci&oacute;n</strong></font></div></td>
</tr>
<?php
$id_ftp
=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP 
$ruta=ObtenerRuta(); //Obtiene la ruta actual en el Servidor FTP
//echo "<b>El directorio actual es: </b> ".$ruta;
$lista=ftp_nlist($id_ftp,$ruta); //Devuelve un array con los nombres de ficheros
$lista=array_reverse($lista); //Invierte orden del array (ordena array)
while ($item=array_pop($lista)) //Se leen todos los ficheros y directorios del directorio
{
$tamano=number_format(((ftp_size($id_ftp,$item))/1024),2)." Kb"
//Obtiene tamaño de archivo y lo pasa a KB
if($tamano=="-0.00 Kb"// Si es -0.00 Kb se refiere a un directorio

//$item="<i>".$item."</i>";
$tamano="&nbsp;";
$fecha="&nbsp;";
}else{
$fecha=date("d/m/y h:i:s"ftp_mdtm($id_ftp,$item));
//Filemtime obtiene la fecha de modificacion del fichero; y date le da el formato de salida
?>

<tr> 
<td><a href="<?php echo $item ?>"><font size="2" face="Verdana, Tahoma, Arial"><?php echo $item ?></font></a></td>
<td align="right"><font size="2" face="Verdana, Tahoma, Arial"><?php echo $tamano ?></font></td>
<td align="right"><font size="2" face="Verdana, Tahoma, Arial"><?php echo $fecha ?></font></td>
</tr>
<?php }
?>


<?php 
}
?>
</table>


</body>
</html>
Ahora bien, quiero que ésto se pueda hacer desde alguna carpeta interna, es decir, subo mi ftp.php a la raíz (./) y funciona, si lo subo a ./carpetaUsuario (./carpetaUsuario/ftp.php) me lista los archivos de la raíz y quiero ver los de la carpeta.

Sé que algo está mal (obvio) y tiene relación con la conexión al ftp, si intento conectarme al servidor poniendo miservidor.com/carpetaUsuario da error.

Agradezco cualquier aporte,

Saludos
  #2 (permalink)  
Antiguo 22/10/2014, 04:15
 
Fecha de Ingreso: enero-2011
Mensajes: 9
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: FTP con PHP acceso a carpetas

¡Solucionado!

En la función que lista los documentos hay un parámetro que es la ruta de la cual queremos listar los ficheros, he incluido en la ruta la carpeta y funcionó:

Código PHP:
$lista=ftp_nlist($id_ftp,$ruta.'carpetaUsuario'); //Devuelve un array con los nombres de ficheros 

Etiquetas: carpetas, conexion, ftp, server
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 21:35.