Foros del Web » Programando para Internet » PHP »

if ftp

Estas en el tema de if ftp en el foro de PHP en Foros del Web. Hola gente, tengo un problema muy simple pero que no puedo validar facilmente. Tengo que conectarme a un ftp y descargar imagenes en un mi ...
  #1 (permalink)  
Antiguo 24/10/2012, 20:55
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
if ftp

Hola gente, tengo un problema muy simple pero que no puedo validar facilmente.
Tengo que conectarme a un ftp y descargar imagenes en un mi sitio x.
todo lindo pero no se como validar en caso de que los datos ftp sean incorrectos.
Cada usuario tiene su propio ftp: un fotografo y un cliente que compra sus fotos.

Código PHP:
Ver original
  1. <?
  2. $sql_ftp_user = "SELECT * FROM usuarios WHERE usuario_id = '{$usuario_id}'";
  3. $res = mysql_query($sql_ftp_user);    
  4. $row = mysql_fetch_object($res);
  5. $userFTP    =  $row->usuario_user_ftp;
  6. $passFTP   = $row->usuario_pass_ftp;
  7.  
  8.  /*
  9.   * conectar FTP
  10.   */
  11.  $id_ftp = ConectarFTP($userFTP, $passFTP);
  12.  
  13. # CONSTANTES
  14. define("SERVER","ftp.site.com"); //IP o Nombre del Servidor
  15. define("PORT",21); //Puerto
  16.  
  17. function ConectarFTP($USER,$PASSWORD){
  18.     //Permite conectarse al Servidor FTP
  19.     $id_ftp=ftp_connect(SERVER,PORT); //Obtiene un manejador del Servidor FTP
  20.     ftp_login($id_ftp,$USER,$PASSWORD); //Se loguea al Servidor FTP
  21.     ftp_pasv($id_ftp,true); //Establece el modo de conexión
  22.     return $id_ftp; //Devuelve el manejador a la función
  23. }
  24. ?>
Esto funciona perfecto, pero esta linea si es true me devuelve el manejador de la conexion pero si es false me da un error:

$id_ftp=ftp_connect(SERVER,PORT);

entonces como puedo validar por que hay que tener en cuenta que $id_ftp lo necesito para las siguientes lineas:

ftp_login($id_ftp,$USER,$PASSWORD);
ftp_pasv($id_ftp,true);

si hago esto:
if(ftp_connect(SERVER,PORT)){
//DA TRUE Y ESTA OK
}else{
//DA FALSE Y ESTA OK, no me tira el error
}

pero como obtengo el $id_ftp?
hacindo esto esta mal
if($id_ftp = ftp_connect(SERVER,PORT)){ ... }

alguna sugerencia?
  #2 (permalink)  
Antiguo 24/10/2012, 21:06
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 10 meses
Puntos: 66
Respuesta: if ftp

no he trabajado nunca con eso y no estoy seguro del todo si he comprendido muy que quieres hacer ni termino de comprender que quiere decir
//DA FALSE Y ESTA OK, no me tira el error
pero asi por probar a lo rápido a ver si cuela...

¿has probado un try/catch?
  #3 (permalink)  
Antiguo 24/10/2012, 21:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: if ftp

En casos como estos, y en situaciones donde no contamos con excepciones (OOP: try/catch) se puede usar la arroba.

Código PHP:
if ($foo = @bar()) {
 
// ...

A no ser que exista algo mas claro, eso suele funcionar.

PDTA: no se recomienda llegar a esto siempre, pero hay excepciones.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 24/10/2012, 21:16
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 10 meses
Puntos: 66
Respuesta: if ftp

pateke, ¿cuando dices en situaciones donde no contamos con excepciones quieres decir que ftp_connect no tiene excepciones y el try/cath no vale para nada?
  #5 (permalink)  
Antiguo 24/10/2012, 21:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: if ftp

Has la prueba y verás, o mejor, lee el manual.

Pero no es la única forma.
Cita:
Devuelve una secuencia FTP en caso de éxito o FALSE en caso de error.
La mayoría de funciones que generan errores o valores no esperados no pueden provocar "excepciones" para controlar dicho aspecto.

En su caso tienden a devolver algún valor comparable o similar a falso.

En resumen eso contesta tu pregunta, intenta hacer try/catch y verás que no funciona en situaciones no-OOP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 25/10/2012, 07:02
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if ftp

Cita:
Iniciado por pateketrueke Ver Mensaje
Has la prueba y verás, o mejor, lee el manual.

Pero no es la única forma.


La mayoría de funciones que generan errores o valores no esperados no pueden provocar "excepciones" para controlar dicho aspecto.

En su caso tienden a devolver algún valor comparable o similar a falso.

En resumen eso contesta tu pregunta, intenta hacer try/catch y verás que no funciona en situaciones no-OOP.
y que puedo hacer entonces?
por que ese es el problema: SI ES FALSE ademas del false muestra el error en pantalla!!
y es horrible para el usuario

agrego: voy a probar esto pero me gustaria saber que significa
Código PHP:
Ver original
  1. <?
  2. if ($foo = @bar()) {
  3.  // ...
  4. }
  5. ?>
  #7 (permalink)  
Antiguo 25/10/2012, 08:24
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 10 meses
Puntos: 66
Respuesta: if ftp

$foo = @bar() es lo mismo que $id_ftp=@ftp_connect(SERVER,PORT);

la @ es un "supress warnings" si sabes que puede saltar un error que no afecta a el funcionamiento del codigo con la @ escondes el mensaje
  #8 (permalink)  
Antiguo 25/10/2012, 11:00
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if ftp

Entiendo, pero me queda la duda por que un warnins no es lo mismo que un error
un warning lo puedo evitar con el ini_set
asi que lo pruebo y luego les comento, es muy buena tu ayuda

gracias
  #9 (permalink)  
Antiguo 25/10/2012, 11:03
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 10 meses
Puntos: 66
Respuesta: if ftp

bueno, no son lo mismo per la @ esconde los 2...

y la ayuda no es mia eh que casi he aprendido yo tb gracias a pateke, que que yo realmente te respondo con miedo a que venga a corregirme
  #10 (permalink)  
Antiguo 25/10/2012, 11:05
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.124
Antigüedad: 13 años, 10 meses
Puntos: 66
Respuesta: if ftp

supongo que con init set pretenderás modificar una directiva de php y esconder todos los alerts, con @ siliencias un error puntual
  #11 (permalink)  
Antiguo 25/10/2012, 12:06
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: if ftp

ok, peke dio la pista y vos me lo traduciste y esta bien.

gracias a ambos

Etiquetas: ftp, imagenes, mysql, sql, usuarios
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 10:15.