Foros del Web » Programando para Internet » PHP »

problema con headers y ftp

Estas en el tema de problema con headers y ftp en el foro de PHP en Foros del Web. Tengo un problemita con una descarga en ftp, de hecho funciona en un sitio, pero en otro no, aunque lo único que cambio es la ...
  #1 (permalink)  
Antiguo 13/05/2008, 17:26
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
Pregunta problema con headers y ftp

Tengo un problemita con una descarga en ftp, de hecho funciona en un sitio, pero en otro no, aunque lo único que cambio es la varibale $url y los datos de conexión.

Código PHP:
<?php
//DESCARGAR ARCHIVO

if ($_GET[submit])
{
    
$extensiones = array("jpg""jpeg""png""gif""zip""rar");
    
$extensiones2 = array("zip""rar");
    
$f $_GET['descargar'];
    
$url"http://www.dominio.com/CARPETA/DESCARGAS/"$_GET['descargar'];
    
$ftmp explode(".",$f);
    
$fExt strtolower($ftmp[count($ftmp)-1]);

    if(!
in_array($fExt,$extensiones)){
        die(
"<div align=center style=\"border:2px #000 dashed; font-family:georgia, arial, tahoma;background: #990000; font-size:12px;width:550px; color:#FFFFFF; vertical-align:middle;
\"><b>NO,</b>ese tipo de archivo no es permitido para descargar.<br><br>
        Archivos permitidos:<br>
        ."
.$extensiones[0]."<br>
        ."
.$extensiones[1]."<br>
        ."
.$extensiones[2]."<br>
        ."
.$extensiones[3]."<br>
        ."
.$extensiones[4]."<br>
        ."
.$extensiones[5]."<br>Si Necesitas habilitar algun archivo para descargar.
        </div>"
);
    }
   if(
in_array($fExt,$extensiones2)){
header('Content-Type: application/octet-stream');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header('Content-Disposition: attachment; filename="'.$_GET['descargar'].'"'); 
header('Content-Transfer-Encoding: binary');
readfile($url);
}
    else
    {
header ("Content-Disposition: attachment; filename=".$_GET['descargar'].";" );
header ("Content-Type: application/force-download");
readfile($url);
exit;
}
}
else
{
$servidor_ftp "ftp.SERVIDOR.FTP";
$id_con ftp_connect($servidor_ftp) or die("No ha sido posible conectarse a $servidor_ftp");
$resultado_login ftp_login($id_conUSERPASS);
ftp_chdir($id_con"/CARPETAS/");
$ftp_nlist ftp_nlist($id_con".");
sort($ftp_nlist);
echo 
'<form name="submit" method="get" action="'.$_SERVER['PHP_SELF'].'">
   <label>
     Archivo a descargar:
 <select name="descargar" id="descargar">
   '
;
   foreach (
$ftp_nlist as $v) {

if (
$res != -1) {

      echo 
'<option value="' $v '">' $v '</option>';
        
        }

}
   echo 
'
    </select>
 <input type="submit" name="submit" id="submit" value="Download">
   </label>
</form>'
;
}
//Fin
?>
Cualquier tipo de ayuda, se agradece de antemano.
Un abrazo y gracias.
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
  #2 (permalink)  
Antiguo 13/05/2008, 19:27
Avatar de WyLY  
Fecha de Ingreso: enero-2002
Ubicación: Cancun, México.
Mensajes: 506
Antigüedad: 22 años, 3 meses
Puntos: 6
De acuerdo Re: problema con headers y ftp

Creo que ya ha quedado, espero que mi script les sirva de algo, ya que es un sistema interesante para bajar archivos zip y demás de un servidor FTP.
El problema está en la variable $url, lo manejaba como una dirección url cuando debe manejarse como la raíz del ftp, con esto quiero decir en vez de http://www.tudomonio.com/carpeta/ARHIVO.extension (ARCHIVO.extension se obtiene con el $_GET) usas /home/usuario/carpeta/ARCHIVO.extension

para saber la raíz de tu servidor existe $_SERVER['DOCUMENT_ROOT'];

De nuevo espero que le sirva a alguien mi script:
TODO cl código anterior está bien exepto la variabld $url que se debe cambiar con datos obtenidos con el $_SERVER['DOCUMENT_ROOT'];

Un abrazo y gracias a todos.
__________________
I do techy stuff for a living and practice MMA with my dog... He always wins.
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 09:59.