- Home
- Categorie
- Coding e Sistemistica
- PHP
- Aiuto sessioni PHP su Windows
-
Aiuto sessioni PHP su Windows
Ciao a tutti, sto provando un software per gestione amministrativa di una piccola azienda scritto in php (evolve) e sto avendo non pochi problemi con le sessioni. E' come se Windows non fosse in grado di mantenerle o di scriverle/leggerle.
Il sistema è composto da Windows XP Pro SP3, Apache 2.2.10, PHP 5.2.6 e MySQL 5.0.51.
PHPinfo() dice Session Support enabled.
Ho la classica pagina di login (Login_admin.php), con una form, che richiama la pagina stessa, che imposta una variabile actionflag, e quando viene richiamata controlla:
if(isset($_POST["actionflag"])) { $result = getRow ($admin_table, "Login", $_POST["formLogin"]); if (($result) && ($result["Password"] == $_POST["formPassword"])) { cleanMemberSession ($result["Cod_utente"], $result["Login"], $result["Password"]); header ("Location: index.php"); exit; } else { $message = "Login Fallito!"; } }
A questo punto la pagina index.php richiamata esegue questo codice:
{ global $session, $logged_in, $admin_table; $session["logged_in"] = false; // $session["E_Mail"] = "Null"; if (! isset ($session["Login"])) { $session["Login"]= "Null"; } $club_row = getRow($admin_table, "Login", $session["Login"]); if (!$club_row || $club_row["Password"] != $session["Password"]) { header("Location: Login_admin.php"); exit; } $session["logged_in"] = true; return $club_row; }
Purtroppo viene sempre eseguito questo redirect alla pagina di login! Non so come fare a testare cosa succede, ma è come se le sessioni non funzionassero. Qualche idea? Grazie!
-
Scusate, mi sono dimenticato qualche funzione, anche se non necessaria la posto qui.
getRow( $table, $fnm, $fval) esegue mysql_query("SELECT * FROM $table WHERE $fnm = '$fval'", $link)
Questa funziona, perché se imposto username o password errati va in errore ($message = "Login Fallito!").
Infine cleanMemberSession ($id, $login, $password) assegna le sessioni
{ global $session; $session["id"] = $id; $session["Login"] = $login; $session["Password"] = $password; $session["logged_in"] = true; }
che però non posso garantire se funzionante o meno (non so come debuggarle!).
-
Scusate, ho risolto. Tutto dipende da register_globals = Off nel php.ini. Ho letto la guida per cui conviene tenerlo su Off, ora devo solo riuscire a capire come sfruttare variabili non globali :bho: