2009-07-16 8 views
6

Ho un file modello che contiene tutte le mie intestazione, piè di pagina e informazioni comuni. Include il contenuto appropriato per la pagina corrente (schema di visualizzazione in due fasi).Variabili sessione PHP - scompaiono e riappaiono

Sto provando a configurare un sistema di login usando le variabili Session PHP. Posso impostare la variabile e a volte funzionano ma a volte scompaiono. Facendo clic sui collegamenti a volte li farai tornare.

My site

il login in

nome utente: prova Password: prova

Ci sono var_dumps di session_id e $_SESSION in alto.

Fare clic su Home. Se le variabili di sessione scompaiono, fare clic su home (potrebbe richiedere fino a 10 volte) per vedere tornare le informazioni sulla sessione. Fai clic sull'altra navigazione e, a volte, le informazioni sulla sessione si aggirano e talvolta no.

Ecco il codice di sessione nella parte superiore del mio file di modello.

<?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); 

Sto usando PHP5.

risposta

4

Se si utilizza Startlogic (ti sembra ? sono) per il vostro hosting, hai provato a fare quello che dicono nella loro FAQ: http://www.startlogic.com/knowledgebase/read_article.bml?kbid=600

essi indicano questo:

per eseguire sessioni PHP, includere il codice seguente nella parte superiore di qualsiasi script PHP che utilizza le sessioni: session_save_path ("la directory home path"/cgi-bin/tmp); session_start();

Forse questo sarà di aiuto? Specialmente se stanno usando una sorta di bilanciamento del carico, che bilancia/tmp, ma non la tua home directory?

+0

Grazie. Non mi è mai venuto in mente che potesse essere una cosa di hosting. Ora posso rimettere tutto il codice che ho strappato cercando di semplificare il mio problema. – Emily

+0

Beh, è ​​stato un problema interessante ^^ Divertiti :-) –

2

Se si utilizza un'impostazione di bilanciamento del carico, è possibile che solo 1 dei server N disponga dei dati di sessione corretti.

Per impostazione predefinita, i dati di sessione sono memorizzati nel filesystem.
Per sessione un file è memorizzato in/tmp/e inizia con "sess" seguito da session_id

1

Sei assolutamente positivo che non venga mai chiamato nulla prima di questo? So che session_start() modifica le intestazioni e, a parte questo, non sono sicuro del motivo per cui questo non funziona.

Andare avanti e accendere segnalazione degli errori nella parte superiore dello script, proprio prima della chiamata session_start(), e vedere come che aiuta a tenere traccia questo in giù:

error_reporting(E_ALL^E_NOTICE); 
ini_set('display_errors',1); 
session_start() 
Problemi correlati