Foros del Web » Programando para Internet » PHP »

problemas con las sesiones

Estas en el tema de problemas con las sesiones en el foro de PHP en Foros del Web. Hola a todos, tengo un fichero en el que en la primera línea tengo un session_start(), es la primera línea de todas. A este fichero ...
  #1 (permalink)  
Antiguo 06/06/2007, 06:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 78
Antigüedad: 17 años, 1 mes
Puntos: 0
problemas con las sesiones

Hola a todos, tengo un fichero en el que en la primera línea tengo un session_start(), es la primera línea de todas. A este fichero se llega tras comprobar una identificación:
Código PHP:
if ( isset($_POST['login']) ){
        
$sql "SELECT id from clientes WHERE login = '" $_POST['login'] . "' and password = '" md5($_POST['password']) . "'";
        
$result mysql_query($sql);
        if ( 
mysql_numrows($result) > ){
            
$row=mysql_fetch_row($result);
            
$_SESSION['clt'] = $row[0];
            
session_write_close();
            print 
"<meta http-equiv=Refresh content=\"0 ; url=privado.php\">";
            exit;
        }
        else
            
$error "Los datos introducidos no son correctos"
y me da el siguiente error:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /hsphere/local/home/infofu/ingprod.com/prueba/esp/privado.php:1) in /hsphere/local/home/infofu/ingprod.com/prueba/esp/privado.php on line 3

a qué se puede deber ¿?

Gracias
  #2 (permalink)  
Antiguo 06/06/2007, 06:58
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Re: problemas con las sesiones

Eso es porque tienes algun caracter que lo sacas por pantalla antes de iniciar las sesiones, fijate los espacios en blanco, algun echo... etc algo que hayas sacado antes por pantalla que las sesiones.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 06/06/2007, 11:17
 
Fecha de Ingreso: febrero-2006
Mensajes: 134
Antigüedad: 18 años, 1 mes
Puntos: 10
Re: problemas con las sesiones

Eso es porque mandas al navegador datos ANTES de enviar la cabecera para almacenar la cookie que guarda la sesión al navegador, así que no puede iniciarla.
La forma más fácil para lograr un resultado óptimo (mezclar headers y otras funciones por medio de echos sin problemas) es utilizar las funciones OB (Output Buffer).

Al principio (1ª línea) del código debes poner ob_start();
y en la última ob_end_flush();

Estas funciones hacen que los datos se almacenen en un búffer y así se logran "retardar" los datos para poder mandar las cabeceras antes.
Si necesitas mandar un dato en un cierto momento, puedes utilizar ob_flush(); pero asegúrate de haber mandado ya todas las cabeceras, porque a partir de ahí ya habrás mandado datos al navegador fuera del búffer.

A veces estas funciones son interesantes incluso para modificar una página cargada por ciertos métodos a los que no puedes acceder directamente y quieras modificar contenidos. Puedes utilizar $variable = ob_get_contents(); y a partir de ese momento $variable contendrá todo lo que habría salido por cualquier echo(), printf(), u otro.

Después de esta "charla" sobre el búffer de salida de PHP, te digo que lo más cómodo sería utilizar ob_start(); al comienzo (1ª línea) y ob_end_flush(); en la última.
Un saludo!
  #4 (permalink)  
Antiguo 06/06/2007, 12:56
 
Fecha de Ingreso: marzo-2007
Mensajes: 78
Antigüedad: 17 años, 1 mes
Puntos: 0
Re: problemas con las sesiones

Muchas gracias a los dos. En realidad era porque antes de empezar la línea, tenía un tabulador, que no creía que influenciara... luego ya venía el <?php
Gracias santhy también por la explicación, no había usado eso y lo veo útil.
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 15:03.