Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/09/2010, 12:24
GoranFrosty
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 13 años, 8 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?