2009-07-16 13 views
6

Tengo un archivo de plantilla que contiene todo mi encabezado, pie de página e información común. Incluye el contenido apropiado para la página actual (patrón de vista en dos pasos).Variables de sesión PHP - desaparecen y vuelven a aparecer

Estoy tratando de configurar un sistema de inicio de sesión utilizando las variables de sesión PHP. Puedo establecer la variable y algunas veces funcionan, pero a veces desaparecen. Al hacer clic en los enlaces algunas veces los harán regresar.

My site

Entrar con

nombre de usuario: contraseña prueba: Prueba

Hay var_dumps de session_id y $_SESSION en la parte superior.

Haga clic en Inicio. Si las variables de la sesión desaparecen, haga clic en Inicio (puede tomar hasta 10 veces) para ver la información de la sesión volver. Haga clic en la otra navegación y, a veces, la información de la sesión se queda y, a veces, no.

Aquí está el código de la sesión en la parte superior de mi archivo de plantilla.

<?php 
session_start(); 

require './classes/DBInterface.php'; 
$db = new DBInterface(); 

if($_REQUEST['submit'] == 'Login') { 
    $username=$_POST['username']; 
    $password=$_POST['password']; 

    echo '-- login -- '.$username; 
    $rs = $db->verify($username,$password,"admin",0); 
    $admin = $rs->current(); 
    if ($rs->valid()) { 
     $_SESSION['username'] = $username; 
    } 
} 

echo ' -- session id -- '; 
var_dump(session_id()); 
echo ' -- session var -- '; 
var_dump($_SESSION); 

Estoy usando PHP5.

Respuesta

4

Si está utilizando startlogic (que parece ? n) para su alojamiento, ¿trató de hacer lo que dicen en su FAQ: http://www.startlogic.com/knowledgebase/read_article.bml?kbid=600

indican esto:

para ejecutar sesiones de PHP, incluya el código siguiente en la parte superior de cualquier script PHP que utiliza sesiones: session_save_path ("su directorio principal ruta"/cgi-bin/tmp); session_start();

Quizás esto te sirva? ¿Especialmente si están utilizando algún tipo de equilibrador de carga, que equilibra/tmp, pero no su directorio personal?

+0

Gracias. Nunca se me ocurrió que podría ser una cosa de alojamiento. Ahora puedo recuperar todo el código que destruí tratando de simplificar mi problema. – Emily

+0

Bueno, fue un problema interesante ^^ Diviértete :-) –

2

Si está utilizando una configuración de equilibrio de carga, es posible que solo 1 de los N servidores tenga los datos de sesión correctos.

De manera predeterminada, los datos de sesión se almacenan en el sistema de archivos.
Por sesión, un archivo se almacena en/tmp/y comienza con "sess" seguido del session_id

1

¿Está absolutamente seguro de que nunca se ha llamado a nada antes de esto? Sé que session_start() modifica los encabezados, y aparte de eso, no estoy seguro de por qué esto no está funcionando.

Vaya por delante y girar en el informe de errores en la parte superior de la secuencia de comandos, justo antes de la llamada a session_start(), y ver cómo eso ayuda a realizar un seguimiento de esto abajo:

error_reporting(E_ALL^E_NOTICE); 
ini_set('display_errors',1); 
session_start() 
Cuestiones relacionadas