Foros del Web » Programando para Internet » PHP »

Problema al descargar fichero con PHP

Estas en el tema de Problema al descargar fichero con PHP en el foro de PHP en Foros del Web. Hola! Estoy haciendo una web, donde los usuarios deben estar autentificados para visitarla y poder descargar documentos. El problema lo tengo al intentar descargar el ...
  #1 (permalink)  
Antiguo 15/01/2007, 04:31
 
Fecha de Ingreso: septiembre-2003
Mensajes: 79
Antigüedad: 20 años, 7 meses
Puntos: 0
Problema al descargar fichero con PHP

Hola!
Estoy haciendo una web, donde los usuarios deben estar autentificados para visitarla y poder descargar documentos.
El problema lo tengo al intentar descargar el fichero con Internet explorer,(con FireFox funciona perfectamente) me permite abrirlo en el navegador pero no desargarlo.
Haciendo pruebas he comprobado que eliminando la línea session_start(), la descarga se produce correctamente. Esta instrucción no puedo eliminarla debido a que necesito los datos del usuario autentificado. Supongo que se debe a las cabeceras que se envían al cliente. He estado leyendo pero no encuentro una solución. Sabeis como puedo arreglarlo?

[fichero .html]
<html>
<head>
<script language="JavaScript" type="text/javascript">
{
function descarga()
{
window.open("download.php?opcion=7","Descarga","") ;
}
}
</head>
<body>
<a onClick="javascript:descarga()"> descargar </a>
</body>
</html>

[Fichero .php]
session_start(); // Si elimino esta líena funciona, pero no puedo prescindir de ella.
{una serie de validaciones sobre el usuario autentificado}
{conexión a la base de datos y consulta SQL}
header("Content-Disposition:attachment;filename=fichero.txt");
header("Content-type: application/octet-stream");

//mostramos lo datos a descargar
while ($datos = mysql_fetch_array($consulta))
echo $datos['campo1'] . ';' . $datos['campo2'];

Saludos
Daly
  #2 (permalink)  
Antiguo 15/01/2007, 05:56
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Problema al descargar fichero con PHP

Parece claro que el error está en el fichero download.php. Estaría bien que nos enseñases el código completo ya que yo, particularmente, no veo nada raro.
  #3 (permalink)  
Antiguo 15/01/2007, 05:57
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 4 meses
Puntos: 9
Re: Problema al descargar fichero con PHP

no entiendo esto:

//mostramos lo datos a descargar
while ($datos = mysql_fetch_array($consulta))
echo $datos['campo1'] . ';' . $datos['campo2'];


xq
O MANDAS UN ARCHIVO

O MANDAS INFO...

x ahi es la concatenacion lo q no me cierra..
  #4 (permalink)  
Antiguo 15/01/2007, 08:13
 
Fecha de Ingreso: septiembre-2003
Mensajes: 79
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Problema al descargar fichero con PHP

Aquí pongo los fuentes. Volver a comentar que en Firefox funciona perfectamente, pero en IE si dejamos las línea session_start() no funciona.
He dejado el mínimo de líneas necesaria en los ficheros para que podais probarlo.

[pru.html]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Mi aplicación AJAX</title>
<script language="JavaScript" type="text/javascript">
{
function descarga()
{
window.open("pru.php","","");

}
}

</script>
</head>
<body>
<a onClick="javascript:descarga()"> Descargar</a>
<br>
</body>
</html>

[pru.php]
<?
session_start();
@include ("include/fun.php");//Contiene variables globales

$conexion = mysql_connect(MyHost,MyUsuario,MyPass);
mysql_select_db(MyBBDD,$conexion);
header("Content-Disposition: attachment; filename=fichero.xls");
header("Content-type: application/octet-stream");

$consulta = mysql_query("select * from tabla");
//cabecera del fichero
echo "CAMPO2".$separador."CAMPO2";

//contenido del fichero
while ($datos = mysql_fetch_array($consulta))
echo $datos['CAMPO1'] . "\t" . $datos['destino'];
?>

Gracias
Saludos
Daly
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 18:11.