Foros del Web » Programando para Internet » PHP »

session_start falla al descargar fichero en IE

Estas en el tema de session_start falla al descargar fichero en IE en el foro de PHP en Foros del Web. Hola amigos!! Resulta que tengo una página web donde el usuario se puede descargar un fichero, me hace falta el uso de sesiones de ahí ...
  #1 (permalink)  
Antiguo 17/04/2011, 04:35
 
Fecha de Ingreso: diciembre-2010
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 3
session_start falla al descargar fichero en IE

Hola amigos!!

Resulta que tengo una página web donde el usuario se puede descargar un fichero, me hace falta el uso de sesiones de ahí que al principio de la página le ponga el session_start.

En firefox funciona todo bien, en internet explorer falla.

Leí por los foros y la gente lo ha solucionado poniendo session_cache_limiter(""); para que funcione en internet explorer... El problema que yo tengo es que la página web requiere de autenticación por certificado y también falla usando session_cache_limiter("");

Se os ocurre alguna solución. o que alguien me explique porque funciona en firefox y en Internet Explorer no.

Última edición por lolocripto; 17/04/2011 a las 04:35 Razón: session_start
  #2 (permalink)  
Antiguo 17/04/2011, 13:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: session_start falla al descargar fichero en IE

session_start lo único que hace es indicarle al servidor que desde el momento que se declaró esa función en adelante está habilitado las sesiones. ¿Cómo las lee? Eso va a depender de varios factores.
1. Si tienes habilitado los cookies en el navegador, el id de la sesión se guardará en cookies para poder moverse a través de tu sitio web y así indicarle al servidor cual sesión le pertenece a quien
2. Si no tiene habilitado los cookies en el navegador, entonces se almacena la información en una constante llamada SID. Esta para que perdure en cada petición de tu web debe ser indicada por ejemplo en el url algo como
Código PHP:
Ver original
  1. <a href="foo.php?<?php echo SID; ?>">foo</a>
Luego para leerla solo es cuestión de usar la variable $_GET:
Código PHP:
Ver original
  1. <?php
  2. if(array_key_exists('PHPSESSID', $_GET)){
  3.     session_id($_GET['PHPSESSID']);
  4.     session_start();
  5. }

3. Depende de la configuración del php.ini. Yo tengo así declarado el de mi computadora
Código ini:
Ver original
  1. session.save_handler = files
  2. session.save_path = "C:\xampp\tmp"
  3. session.use_cookies = 1
  4. session.use_only_cookies = 0
  5. session.name = PHPSESSID
  6. session.auto_start = 0
  7. session.cookie_lifetime = 0
  8. session.cookie_path = /
  9. session.cookie_domain =
  10. session.cookie_httponly =
  11. session.serialize_handler = php
  12. session.gc_probability = 1
  13. session.gc_divisor = 100
  14. session.gc_maxlifetime = 1440
  15. session.bug_compat_42 = On
  16. session.bug_compat_warn = On
  17. session.referer_check =
  18. session.entropy_length = 0
  19. session.entropy_file =
  20. session.cache_limiter = nocache
  21. session.cache_expire = 180
  22. session.use_trans_sid = 0
  23. session.hash_function = 0
  24. session.hash_bits_per_character = 5
Los más comunes a modificar son: save_path, use_cookies, name y cookie_lifetime (puede que se me escape alguno de los más comunes a modificar).

Lo importante de todo esto, es asegurarse que la función session_start, esté arriba de todo para así evitar errores comunes de que se ha enviado información al navegador por tal motivo no se puede trabajar con las cabeceras.

Si tienes presente todo esto, te debe funcionar correctamente en el navegador. Si se me olvidó algo, alguien más te lo indicará.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 18/04/2011, 00:16
 
Fecha de Ingreso: diciembre-2010
Mensajes: 79
Antigüedad: 13 años, 11 meses
Puntos: 3
Respuesta: session_start falla al descargar fichero en IE

Hola abimaelrc!!

Ante todo muchas gracias por las explicaciones. Al final el fallo era la configuración de apache, le tenía puesta la siguiente directiva.

Código Apache:
Ver original
  1. Header set Cache-Control "no-cache"

No me hacía falta esa directiva... Pero sigo sin entender porque iba en Firefox y no en Internet Explorer...

Pero creo que esto ya no pertenece a la sección de php.

Etiquetas: falla, fichero
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:30.