Newsgroup: it.comp.www.php
Titolo: sessioni :: Allucinante!

Ciao!
Premetto che non sono una jena con le sessioni, ma questo fatto mi suona
strano.
Settaggi su php.ini:
register_globals = on
session.bug_compat_42 = 1
session.use_trans_sid = on
Codice su pagina protetta (da log in, che segue):
<?php
    session_start();
    if ($verified_user == '') header("Location: login.php");
    session_register("verified_user");
?>
Codice su pagina di login:
<?php
 session_start();
 include 'config.inc.php';
 dbconnect();
 if (!isset($verified_user)) $verified_user='';
 if ($action=='login') {
  $crypt_pass = md5($psw);
  $result=mysql_query("SELECT * FROM user_table WHERE username='$username'
AND password='$crypt_pass'");
  if (mysql_num_rows($result)>0)
list($verified_user)=mysql_fetch_row($result);
  else $verified_user='';
  $r = mysql_fetch_array($result);
  $nome = $r['nome'];
 }
 session_register("verified_user");
 session_register("nome");
....bla bla....
?>
In Teoria: se il tutto funzionasse a dovere, accedendo alla pagina protetta,
1) si dovrebbe generare una sessione (il cui file viene salvato in tmp); 2)
segue il controllo se nella sess è registrata la variabile $verified_user ;
3) se lo è apre la pagina, se no, reindizza il browser al login.
Accedendo alla pagina di login: 1) creazione nuova sess O verifica esistenza
di sessione aperta; 2) verifica stato della variabile $verified_user; 3)
connessione al db e verifica utente/pass; 4) se la verifica è positiva,
registrazione dell'ID dello user nella variabile $verified_user oppure
messaggio d'errore (non riportato nel codice) e $verified_user rimane null;
inoltre registrazione della variabile $nome.
Quello che capita è invece questo:
1) la pagina protetta mi genera la sessione, con $verified_user settato su
Null e mi reindirizza sul login;
2) il login mi genera un'altra sessione, su cui viene registrata
$verified_user
3) E QUESTO è IL GRAVE, il login registra la variabile $nome, nella prima
sessione, quella aperta dalla pagina protetta!!!!
spero di essermi spiegato....
dove sbaglio?
grazie
stefano

 dove sbaglio?
1^ Evita il costrutto 
if ($verified_user == '') header("Location: login.php");
e' meglio
if ($verified_user == '') { header("Location: login.php"); }
Inoltre per l'HTTP 1.1. sarebbe meglio
header("Location: 
http://www.tuosito.com/login.php
");
2^ non utilizzare i register globals e
session_register("verified_user"); ma $_SESSION[verified_user].
3^ Se devi utilizzare le sessioni ed header location leggi questo post:
http://url.repository.biz/go/z
-- 
I'am what I'am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/1
Inviare email con allegati? 
http://url.repository.biz/go/x

 3^ Se devi utilizzare le sessioni ed header location leggi questo post:
non č essenziale utilizzare gli header location. qualiasi altra maniera per
il reindirizzamento alla pagina di login č ben accetto!!
grazie intanto
stefano

 funziona!!
C'e' sicuramente un errore nel tuo codice, non certo del PHP. Puoi fare
esattamente quello che volevi fare anche con register_globals = off e
$_SESSION


    if ($verified_user == '') header("Location: login.php");
se il browser non utilizza i cookies, allora header("Location...) ti
fa perdere il session id.
Utilizza, piuttosto:
header("Location: login.php?SID");
-- 
http://e-0.org

  else $verified_user='';
Controlla invece che mysql_num_rows ritorni _ESATTAMENTE_ uno... Giusto
per cautela :-)
Facci sapere
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.