Foros del Web » Programando para Internet » PHP »

Warning

Estas en el tema de Warning en el foro de PHP en Foros del Web. Buenas, tengo un sistema de registro y logeo de usuarios, el cual cuenta con un panel para cada usuario, se usa el session_start(); una vez ...
  #1 (permalink)  
Antiguo 06/07/2011, 14:14
 
Fecha de Ingreso: febrero-2011
Mensajes: 124
Antigüedad: 13 años, 2 meses
Puntos: 4
Warning

Buenas, tengo un sistema de registro y logeo de usuarios, el cual cuenta con un panel para cada usuario, se usa el session_start(); una vez que el user se logea, va todo bien, me imprime la info. personal del usuario que esta almacenada en db mysql, pero me da un warning, el siguiente:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/an000304/public_html/test/nueva/contenidos/noticias/user.php:7) in /home/an000304/public_html/test/nueva/contenidos/noticias/user.php on line 725
Aca el codigo:
Código PHP:
<body><?
session_start
();   // LINEA 725 QUE DA ERROR
if(!isset($_SESSION["login"])){
header("location:login.php");
} else {
echo 
'<img src="../../images/sinfoto.jpg" style="float:left;"  />';
echo 
'<span class="LetrasNick">'.$_SESSION[login].'</span><br />';
echo 
'<span class="LetrasPerfil"><span class="Negritas">Nombre:</span> '.$_SESSION[nombre].'&nbsp;'.$_SESSION[apellidos].' <br />';
echo 
'<span class="Negritas">E-mail:</span> '.$_SESSION[email].' <br />';
echo 
'<span class="Negritas">Telefono:</span> '.$_SESSION[telefono].' <br />';
echo 
'<span class="Negritas">Ubicacion:</span><br />'.$_SESSION[ubicacion].'<br />';
echo 
'<span class="Negritas">Compras:</span> '.$_SESSION[compras].' compras <br />';
echo 
'<span class="Negritas">Categoria:</span> '.$_SESSION[categoria].'<br /><br />';
echo 
'<span class="Negritas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Descripcion perfil:</span><br /> '.$_SESSION[descripcion].' <br />';
echo 
'<div class="contenedor_usuarios_descuentos"><span class="Negritas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Descuentos acumulados</span><br /> <span class="LetrasDescuentos">&nbsp;&nbsp;&nbsp;%'.$_SESSION[descuentos].'</span></div> </span> <br />';
echo 
"</strong><br>Para cerrar la sesión, pulsa: <a href='logout.php'>Aqui</a>";
echo 
"".isset($_SESSION);
}
?></body>
Haber si pueden hecharme una manito
  #2 (permalink)  
Antiguo 06/07/2011, 14:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Warning

Es un error bastante común, no debes imprimir ni enviar nada antes de un session_start().

Se supone que el envío de cabeceras, establecimiento de cookies, e inicialización de sesiones debe hacer siempre antes de comenzar a mostrar algo en el documento.

Te invito a buscar en el foro temas similares, es algo de lo que siempre se habla, y por supuesto hay solución.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/07/2011, 14:23
 
Fecha de Ingreso: febrero-2011
Mensajes: 124
Antigüedad: 13 años, 2 meses
Puntos: 4
Respuesta: Warning

Gracias por tu orientacion, buscando averigué que debo poner el <?
session_start();
?> en la PRIMERA linea del archivo, por lo mismo que dices tu
  #4 (permalink)  
Antiguo 06/07/2011, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Warning

Todas las lineas que mandan cabeceras (header(), set_cookie(), session_start()) deben de ser llamadas antes de cualquier código de salida ya sea HTML u otro tipo ya que estas deben de enviarse al navegador como parte de la cabecera del documento.

Un request HTTP se compone de lo siguiente:
Código:
REQUEST_HTTP
CABECERAS (cookies, redirects, etc)

BODY
// Aca va todo el HTML
Por ejemplo:
Código:
HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Content-Type: text/html
Content-Length: 1354

<html>
<body>
<h1>hi!</h1>
  .
  .
  .
</body>
</html>
Si tu envias un header() (cabecera) dentro del body, el navegador ya no la va a interpretar y por tanto va a fallar, es por eso que PHP te da ese error, para que prevengas eso y mejor mandes las cabeceras donde deben de ir (antes de la salida al browser).

Si te interesa conocer más te recomiendo esta lectura: http://www.jmarshall.com/easy/http/

Saludos.

Etiquetas: html, mysql, warning
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 06:51.