• User

    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!


  • User

    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!).


  • User

    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: