Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Traca80

#1
PHP / Re: Crear WebFTP
9 Noviembre 2007, 23:56 PM
Hola,

Finalmente he optado por adaptar otro codigo, que este SI que funciona y es mucho mas facil.

Lo pongo aqui por si alguien le interesa este tema:

Crear 2 archivos:

index.php

Citar<?php echo "<?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>::..Funciones FTP..::</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>
Funciones FTP
</em></strong></font></p>
<p><font face="Verdana, Tahoma, Arial">

<?
include('inc/ftpfunc.php'); //Incluye el archivo de funciones
if(!empty($HTTP_POST_FILES["archivo"])){
$file = $HTTP_POST_FILES["archivo"]["tmp_name"];
$base_archivo = basename($HTTP_POST_FILES["archivo"]["name"]);
$id_ftp=ConectarFTP();
$upload = ftp_put($id_ftp, $base_archivo, $file, FTP_BINARY);
if (!$upload) {
$status = "Error al guardar: " . $base_archivo;
} else {
$status = "Exito al gaurdar: " . $base_archivo;
}
unset($HTTP_POST_FILES["archivo"]);
ftp_quit($id_ftp);
}
/*if(!empty($HTTP_POST_FILES["archivo"])){ //Comprueba si la variable "archivo" se ha definido
SubirArchivo($HTTP_POST_FILES["archivo"],basename($HTTP_POST_FILES["archivo"]));
//basename obtiene el nombre de archivo sin la ruta
unset($HTTP_POST_FILES["archivo"]); //Destruye la variable "archivo"
}*/
?>
<strong><font color="#000000" size="3">Subir Archivo</font></strong></font></p>
<hr />

<!--Formulario para elegir el archivo a subir -->
<form action="" method="post" name="form_ftp" id="form_ftp" enctype="multipart/form-data">
<p><font size="2" face="Verdana, Tahoma, Arial"> Elegir archivo :
<input name="archivo" type="file" id="archivo" />
<input name="Submit" type="submit" value="Subir Archivo" />
</font><font size="2" face="Verdana, Tahoma, Arial"> </font> </p>
</form>

<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>
<?
$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><font size="2" face="Verdana, Tahoma, Arial"><? echo $item ?></font></td>
<td align="right"><font size="2" face="Verdana, Tahoma, Arial"><? echo $tamano ?></font></td>
<td align="right"><font size="2" face="Verdana, Tahoma, Arial"><? echo $fecha ?></font></td>
</tr>
<? } ?>
</table>
</body>
</html>

Crear en una subcarpeta llamada /inc crear el archivo ftpfun.php

Citar<?
# FUNCIONES FTP

# CONSTANTES
# Cambie estos datos por los de su Servidor FTP
define("SERVER","localhost"); //IP o Nombre del Servidor
define("PORT",21); //Puerto
define("USER","jhonyduque"); //Nombre de Usuario
define("PASSWORD","123456"); //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 SubirArchivo($archivo_local,$archivo_remoto){
//Sube archivo de la maquina Cliente al Servidor (Comando PUT)
$id_ftp=ConectarFTP(); //Obtiene un manejador y se conecta al Servidor FTP
ftp_put($id_ftp,$archivo_remoto,$archivo_local,FTP_BINARY);
//Sube un archivo al Servidor FTP en modo Binario
ftp_quit($id_ftp); //Cierra la conexion FTP
}

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
}
?>

Y listo!

Super facil y funcionando!!

Muchas gracias por la ayuda  ;D
#2
PHP / Re: Crear WebFTP
9 Noviembre 2007, 23:23 PM
Muchas gracias Alone in the Chat!!

Ahora cuando clico en info.php sale toda una pagina, asi que todo esta correcto  :D

Ahora he creado un archivo (ftp2.php) con este codigo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<?php
// Primero creamos un ID de conexión a nuestro servidor
$cid ftp_connect("midynds.com");
// Luego creamos un login al mismo con nuestro usuario y contraseña
$resultado ftp_login($cid"miuser","mypass");
// Comprobamos que se creo el Id de conexión y se pudo hacer el login
if ((!$cid) || (!$resultado)) {
echo "Fallo en la conexión"; die;
} else {
echo "Conectado.";
}
// Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al 
//servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
ftp_pasv ($cidtrue) ;
echo "<br> Cambio a modo pasivo<br />";
// Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
// esta por demás decir que este paso no es necesario. En mi caso uso un directorio llamado boca
ftp_chdir($cid"boca");
echo "Cambiado al directorio necesario";   
// Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP
// Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica
// el nombre del archivo
$local $_FILES["archivo"]["name"];
// Este es el nombre temporal del archivo mientras dura la transmisión
$remoto $_FILES["archivo"]["tmp_name"];
// El tamaño del archivo
$tama $_FILES["archivo"]["size"];
echo "<br />$local<br />";
echo "$remoto<br />";
echo "subiendo el archivo...<br />";
// Juntamos la ruta del servidor con el nombre real del archivo
$ruta "/srv/www/htdocs/boca/" $local;
// Verificamos si no hemos excedido el tamaño del archivo
if (!$tama<=$_POST["MAX_FILE_SIZE"]){
echo "Excede el tamaño del archivo...<br />";
} else {
// Verificamos si ya se subio el archivo temporal
if (is_uploaded_file($remoto)){
// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
copy($remoto$ruta);
}
// Sino se pudo subir el temporal
else {
echo "no se pudo subir el archivo " $local;
}
}
echo "Ruta: " $ruta;
//cerramos la conexión FTP
ftp_close($cid);
?>

</head>

<body>
<form name="enviador" method="post" action="recibe.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="1000">
Archivo: <input type="file" name="archivo">
<input type="submit">
</body>
</html>


Y lo he colgado, pero el firefox me devuelve este error:

Conectado.
Cambio a modo pasivo

Warning: ftp_chdir() [function.ftp-chdir]: boca: No such file or directory in /opt/lampp/htdocs/inc/ftp2.php on line 23
Cambiado al directorio necesario


subiendo el archivo...
no se pudo subir el archivo Ruta: /srv/www/htdocs/boca/

#3
PHP / Re: Crear WebFTP
9 Noviembre 2007, 23:06 PM
Permiso de lectura a la carpeta /hdocs o solo al archivo info.php (o en su defecto index.php)??
#4
PHP / Re: Crear WebFTP
9 Noviembre 2007, 22:54 PM
He creado el info.php y lo he puesto en la raiz de xampp (/opt/lampp/hdocs)

voy al firefox y he puesto exactamente la url (http://localhost/info.php)

Y esto es lo que me sale:

CitarWarning: Unknown: failed to open stream: Permission denied in Unknown on line 0

Fatal error: Unknown: Failed opening required '/opt/lampp/htdocs/info.php' (include_path='.:/opt/lampp/lib/php') in Unknown on line 0

Alguna idea?

Muchas gracias!!
#5
PHP / Re: Crear WebFTP
9 Noviembre 2007, 22:21 PM
Hola,

He instalado en mi portatil Ubuntu 7.10 y Xampp, y he creado y ubi cado el archivo index.php en la carpeta donde tiene que estar en xampp (/opt/lampp/hdocs) pero cuando intento acceder con el explorador al archivo no me aparece nada.

Por una parte o puede ser que esta mal publicado o que el archivo no funciona correctamente.

Mi duda es si el codigo que he pegado es correcto y si es correcto, que tengo que hacer para crear el archivo "index.php" copio exactamente el codigo (cambiando la direccion del ftp, user y pass) y nada mas? tengo que poner <head> o <body> o algo similar?
#6
PHP / Crear WebFTP
9 Noviembre 2007, 22:07 PM
Hola a todos!

Hace poco he creado con mi portatil "viejo" un pequeño servidor con Ubuntu 7.10 y Xampp.

Ahora lo que quiero hacer es una WebFTP.

He mirado tutoriales y he encontrado este codigo:


<?php
// Primero creamos un ID de conexión a nuestro servidor
$cid ftp_connect("www.cg.edu.mx");
// Luego creamos un login al mismo con nuestro usuario y contraseña
$resultado ftp_login($cid"usuario","noteladigo");
// Comprobamos que se creo el Id de conexión y se pudo hacer el login
if ((!$cid) || (!$resultado)) {
echo "Fallo en la conexión"; die;
} else {
echo "Conectado.";
}
// Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al 
//servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
ftp_pasv ($cidtrue) ;
echo "<br> Cambio a modo pasivo<br />";
// Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
// esta por demás decir que este paso no es necesario. En mi caso uso un directorio llamado boca
ftp_chdir($cid"boca");
echo "Cambiado al directorio necesario";   
// Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP
// Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica
// el nombre del archivo
$local $_FILES["archivo"]["name"];
// Este es el nombre temporal del archivo mientras dura la transmisión
$remoto $_FILES["archivo"]["tmp_name"];
// El tamaño del archivo
$tama $_FILES["archivo"]["size"];
echo "<br />$local<br />";
echo "$remoto<br />";
echo "subiendo el archivo...<br />";
// Juntamos la ruta del servidor con el nombre real del archivo
$ruta "/srv/www/htdocs/boca/" $local;
// Verificamos si no hemos excedido el tamaño del archivo
if (!$tama<=$_POST["MAX_FILE_SIZE"]){
echo "Excede el tamaño del archivo...<br />";
} else {
// Verificamos si ya se subio el archivo temporal
if (is_uploaded_file($remoto)){
// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
copy($remoto$ruta);
}
// Sino se pudo subir el temporal
else {
echo "no se pudo subir el archivo " $local;
}
}
echo "Ruta: " $ruta;
//cerramos la conexión FTP
ftp_close($cid);
?>


No he conseguido hacerlo funcionar, alguien sabria decirme si esta bien escrito en PHP?

Que tengo que hacer? Crear un archivo "index.php" con este codigo exacto (cambiando eso si los parametros de IP, Usuario y Pass)

Alguien me puede ayudar?

Muchissimas gracias!!