Foros del Web » Programando para Internet » PHP »

Problemas con session_start()

Estas en el tema de Problemas con session_start() en el foro de PHP en Foros del Web. Estoy diseñando una web (una especie de gestor de tropas apra un juego) y la estoy diseñando para que solo tenga que cargar la index ...
  #1 (permalink)  
Antiguo 18/09/2010, 12:24
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 0
Problemas con session_start()

Estoy diseñando una web (una especie de gestor de tropas apra un juego) y la estoy diseñando para que solo tenga que cargar la index en el momento de entrar, y luego solo tener que ir cambiando los contenidos de los distintos contenedores mediante jquery/ajax.

Ahora mismo estaba empezando a meterme con los usuarios de manera "simple" para sacar un posible "alpha" del gestor e ir implementado el resto de cosas poco a poco, pero me he econtrado con un problema con las sesiones y sus variables.

Os resumo los códigos, puesto que los mismos en si funcionan, quito lo superfluo:

index.php
Código PHP:
<?php 
session_start
();
header("Cache-Control: no-cache"); 
header('Content-Type: text/html; charset=utf-8'); 
?>
<title>Trooptool</title>

<!-- Cargo estilos CSS -->

<!-- Cargo diferentes Scripts -->

<body>
    <div id="pbody">
     
        <!-- Cabecera --> 
        <div id="header">
        </div>
        
        <!-- Menu -->
        <div id="menu">
            <?php require("menu.php"); ?>
        </div>
        
        <!-- Contenido -->
        <div id="page">
            <?php require("home.php"); ?>
        </div>
    </div>    
</body>
home.php
Código PHP:
<!-- Si hay sesion -->
<?php 
//session_start();
if(isset($_SESSION['user'])) {
?>
<p>Hola, <?php echo $_SESSION['user']; ?></p>
<?php 
} else {
?>
<!-- Si no hay sesion Formulario -->
<?php 
}
?>
En función de que botón se pulse en el menu, mediante ajax, cargará diferentes contenidos en el div #page, sin tener que cargar toda la página de nuevo.

Al iniciar, home.php al no tener ninguna sesión iniciada, muestra un formulario de login.

Me logueo sin problema (llamada a login.php que inicia las variables de sesión), y recarga home en el div #page, mostrando esta vez, por tener la sesión iniciada, un mensaje de bienvenida, y el nombre del usuario. Hasta aquí todo perfecto.

El problema viene en que, si ahora en el menu, pulso inicio (recargando de nuevo home.php en el div), aparece de nuevo el formulario de login, como si no hubiese iniciado sesión. Pero si pulso F5 para recargar toda la página, si aparece de nuevo home.php con el mensaje de bienvenida (puesto que la sesión realmente sigue ahí).

Como podeis observar, en home.php no tengo directamente iniciada la sesión, puesto que si lo hago, funciona pero automáticamente me salta el Warning: Cannot send session cache limiter - headers already sent...

Lo que pasa, es que la sesión está en index.php, pero no la traspasa por decirlo de alguna manera, a las páginas llamadas para cambiar el contenido de los contenedores, lo que me parece lógico, pero en cuanto meto otro session_start() y hago funcionar la cosa, me salta el warning, con lo que tampoco arreglo mucho.

Aparte de desactivar los mensajes de error (que no me parece una solución sino maquillaje del problema) ¿hay manera de solucionarlo o de hacerlo de otro modo?
  #2 (permalink)  
Antiguo 18/09/2010, 12:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con session_start()

mira, definitivamente no importa como cargues los archivos... en cada uno que haga uso de la sesión debes usar session_start() al inicio...

y debes evitar a toda costa enviar cualquier texto o salida antes de iniciar sesión, te invito a buscar en el foro pues es un tema conocido.... y bueno, si puedes mostrar los mensajes completos de error sería mas fácil orientarte al respecto...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/09/2010, 12:47
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problemas con session_start()

Ya he dado con el problema en si... y se me cae la cara de vergueza como programador...

@pateketrueke No se decirte cuantos mensajes he leido sobre el tema, porque han sido muchos, y he mirado distintos foros tanto en español como en ingles, y no acababa de dar con el mismo problema o la manera de solucionarlo. Y ya sabía que había que poner session_start() en cada página que lo necesite, pero puse el caso entero con y sin session_start.

Bueno el error por si interesa de todos modos era
Cita:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\A0\home.php:2) in C:\xampp\htdocs\A0\home.php on line 4
Me he tirado 4 horas borrando posibles espacios en blanco, tabulaciones y otras tonterías típicas por las que suele dar ese error. Pero seguía sin ver nada tanto en la linea 2 como en la 4. En fin, el fallo era este "<!-- Si hay sesion -->". Tantas horas mirando un código y en ningún momento me di cuenta de que el comentario HTML es HTML al fin y al cabo.

Gracias por las molestias de todos modos.

Etiquetas: sesiones
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 04:51.