Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357

    [PHP] problema con $_SESSION

    premetto che, prima di postare, ho cercato a lungo nel forum e con google la soluzione al mio problema

    ..che è questo:

    nella pagina di autenticazione, se l'utente e la password sono esatte, valorizzo le variabili $_SESSION['USERNAME'] e $_SESSION['USERTYPE']
    dopodiché faccio il redirect alla pagina index.php

    il problema è che se in index.php vado a leggere l'array $_SESSION, esso è vuoto!!

    ovviamente index.php comincia con session_start() (anche la pagina di login)

    le versioni sono:
    Apache: 1.3.34
    PHP: 4.4.2

    per favore datemi una mano

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Prova a postare il codice...sicuramente aiuta a capire il problema...

  3. #3
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    il codice è distribuito su diversi file.. va be' lo posto ugualmente..
    cmq prima che 'morisse' il vecchio server, l'applicazione funzionava bene.. lì c'erano versioni leggermente più vecchie di Apache/PHP.

    Codice PHP:
    index.php

    <?
    session_start
    ();
    include 
    "./func.inc";
    require 
    "./config.inc.php";
    if ( !isset(
    $_SESSION['LOGIN']) or !isset($_SESSION['TIPOUTENTE']) or
                
    $_SESSION['LOGIN']=="" or $_SESSION['TIPOUTENTE']=="" ){
        
    $strMsg="Autentificarsi per accedere al sistema. ";
        
    redirect_rel("./login.php?strMsg=$strMsg");
        exit;
    }else{
    ?>
    <html>
    <head>
    <title>
    ...
    Codice PHP:
    login.php

    <?
    session_start
    ();
    ?>
    <html>
    <head>
    <title>
    DSS
    </title>
    <link type="text/css" rel="stylesheet" href="./stile.css">
    <script type="text/javascript" src="./jsAutentificazione.js"></script>
    </head>
    <BODY bgcolor="#E2E2E2" leftmargin="0" topmargin="0">
    <? include("header2.php"); ?>
    <form name="loginForm" method="POST" action="#" onsubmit="return EffettuaLogin();">


    <?
    $strMsg
    $_GET['strMsg'];
    if(
    $strMsg==""){
    ?>



    <?
    }else{
    ?>
    <div align="center"><font class="messaggi"><?=stripslashes($strMsg)?></FONT></div>
    <? }
    ?>



        <TABLE border="0" bgcolor="White" cellpadding="0" cellspacing="0" align="center" width="350">
            <tr>
                <td class="Fascia_Testo">[b]Effettuare l'accesso[/b]</td>
            </tr>
            <tr bgcolor="#9999FF">
                <td align="center">
                    <TABLE border="0" cellpadding="1" cellspacing="0">
                        <tr>
                            <td colspan="2" class="Fascia_Testo" height="6"></td>
                        </tr>
                        <tr>
                            <td width="40" bgcolor="#E2E2E2"><FONT size="2">Login</FONT></td>
                            <td  bgcolor="#E2E2E2"><INPUT type="text" name="login" size="20"></td>
                        </tr>
                        <tr>
                            <td bgcolor="#E2E2E2"><FONT size="2">Password</FONT></td>
                            <td bgcolor="#E2E2E2"><INPUT type="password" name="password" size="20"></td>
                        </tr>
                        <tr>
                            <td colspan="2" class="Fascia_Testo" height="6"></td>
                        </tr>
                    </TABLE>
                </td>
            </tr>
            <tr>
                <td align="right" class="Fascia_Testo"><INPUT type="submit" value="Accedi"><input type="reset" value="Annulla"></td>
            </tr>
        </TABLE>
        </form>    
        
    <?
    echo "<pre>";
    print_r($_SESSION);
    echo 
    "</pre>";
    echo 
    session_id();

    ?>
        
                
    </BODY>
    Codice PHP:
    jsAutentificazione.js

    function EffettuaLogin(){
        if(
    document.forms[0].elements[0].value!="")
            if(
    document.forms[0].elements[1].value!=""){
                
    document.forms[0].action="./autentifica.php";
                return 
    true;
            }
            else
                
    alert("il campo " document.forms[0].elements[1].name " deve essere valorizzato");
        else
                
    alert("il campo " document.forms[0].elements[0].name " deve essere valorizzato");
    return 
    false;

    Codice PHP:
    autentifica.php

    <?include ("session.inc")?>
    <?
    include ("func.inc")?>
    <?
    $login
    =$_POST['login'];
    $password=$_POST['password'];
    $strMsg="";
    if(
    $login!="" and $password!=""){
        if(
    autentificazione($login,$password,$strMsg)){
    //phpinfo();
    //echo "<pre>";
    //print_r($_SESSION);

            
    redirect_rel("index.php");
            exit;
        }
    }        
    else{
        
    $strMsg="Inserire login e password";
    }
    redirect_rel("login.php?strMsg=$strMsg");        
    exit;
    ?>
    Codice PHP:
    session.inc

    <?php
    //funzioni per gestire la sessione di un utente
    //crea la session
            
    require("config.inc.php");
            include(
    "oracle.php");
    function 
    crea_sessione($log,$tipoUt){
        if(
    $log!="" && $tipoUt!=""){
            
    //session_unset();
            //session_register('LOGIN');
            
    $_SESSION['LOGIN']=$log;
            
    //session_register('TIPOUTENTE');
            
    $_SESSION['TIPOUTENTE']=$tipoUt;
            
    //session_write_close();
            
    return true;    
        }
        return 
    false;
    }

    //msg di benvenuto
    function verificaIdentita($log,$tipoUt){
    $tempStr="<font color='#006699' size='4' face='Arial, Helvetica, sans-serif'>[b]Benvenuto utente[/b] $log  -  $tipoUt </font>";
    return 
    $tempStr;
    }

    //funzione chiamta ogni volta che un utente effettua un logout
    function distruggi_sessione(){
        
    $tempMsg="Logout avvenuto con successo. Arrivederci "$_SESSION['LOGIN'];
        
    $_SESSION = array(); 
        
    session_unset();
        
    session_destroy();
        return 
    $tempMsg;
    }
    //Funzione chiamata all'ingresso in ogni pg se restituisce true significa che l'utente Ã¨ loggato
    function autentificazione($log,$pass,&$strMsg){
        if ( !isset(
    $_SESSION['LOGIN']) or !isset($_SESSION['TIPOUTENTE']) or
                
    $_SESSION['LOGIN']=="" or $_SESSION['TIPOUTENTE']=="" ){

            if(
    $log!="" and $pass!=""){
                
    $c1 OCILogon($GLOBALS["logDb"],$GLOBALS["passDb"],$GLOBALS["db"]);
                
    $query "select login, tipoUtente from gcuf_utenti UT where UT.login='$log' and UT.passwordUt='$pass'";
                
    $stmt OCIParse($c1,$query);
                
    OCIExecute($stmt,OCI_DEFAULT);
                if(
    OCIFetch($stmt)){
                    if(
    $log==OCIResult($stmt,"LOGIN")){
                        
    $tipoUt=OCIResult($stmt,"TIPOUTENTE");
                        if(
    crea_sessione($log,$tipoUt)){
                            
    $strMsg=verificaIdentita($log,$tipoUt);
                            
    OCILogOff($c1);                                
                            return 
    true;
                        }
                        else
                            
    $strMsg="Sessione non creata";    
                    }
                }
                else
                    
    $strMsg="Utente inesistente o non abilitato";
                
    OCILogOff($c1);                            
                }
            else
                
    $strMsg="Inserire Login e Password!";
        }else
            return 
    true;
        return 
    false;    
    }

    ?>
    PS
    ci vai ad Osoppo?

  4. #4
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Metti un bel "session_start()" all'inizio di "autentifica.php" e dovrebbe andare tutto liscio ^^



    Originariamente inviato da ganesha
    PS
    ci vai ad Osoppo?
    Magari...sto traslocando in nuova dimora e non ho ne il tempo ne i soldi di grattarmi il naso
    Organizzo un piccolo Osoppo qui a casa



  5. #5
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    Originariamente inviato da Il_Drugo
    Metti un bel "session_start()" all'inizio di "autentifica.php" e dovrebbe andare tutto liscio ^^
    purtroppo non va neanche così...
    è come se ogni volta che passo da una pagina all'altra venga creata una nuova sessione...


    Originariamente inviato da Il_Drugo
    Organizzo un piccolo Osoppo qui a casa
    allora ti passo a trovare la settimana prossima

  6. #6
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Nella funzione "autentificazione" mi pare ci sia un errore...hai un "return false;" di troppo.
    prova cosi:

    Codice PHP:
    <?php

    function autentificazione($log,$pass,&$strMsg)
    {
        if ( !isset(
    $_SESSION['LOGIN']) or !isset($_SESSION['TIPOUTENTE']) or $_SESSION['LOGIN']=="" or $_SESSION['TIPOUTENTE']=="" )
            {
                if(
    $log!="" and $pass!="")
                {
                    
    $c1 OCILogon($GLOBALS["logDb"],$GLOBALS["passDb"],$GLOBALS["db"]);
                    
    $query "select login, tipoUtente from gcuf_utenti UT where UT.login='$log' and UT.passwordUt='$pass'";
                    
    $stmt OCIParse($c1,$query);
                    
    OCIExecute($stmt,OCI_DEFAULT);
                    if(
    OCIFetch($stmt))
                    {
                        if(
    $log==OCIResult($stmt,"LOGIN"))
                        {
                            
    $tipoUt=OCIResult($stmt,"TIPOUTENTE");
                            if(
    crea_sessione($log,$tipoUt))
                            {
                                
    $strMsg=verificaIdentita($log,$tipoUt);
                                
    OCILogOff($c1);                                
                                return 
    true;
                            }
                            else
                            {
                                
    $strMsg="Sessione non creata";
                            }    
                        }
                    }
                    else
                    {
                        
    $strMsg="Utente inesistente o non abilitato";
                    }
                    
    OCILogOff($c1);
                }
                else
                {
                    
    $strMsg="Inserire Login e Password!";
                }
            }
            else
            {
                return 
    true;
            }
            
        
    //return false;    


    ?>
    E' praticamente uguale, solo ch eho aggiunto le parentesi agli else (solo per organizzazione e comprensione del codice) e ho commentato il return incriminato...prova a vedere se ora funzia.

  7. #7
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    ok, ma non è quello il problema.. l'autenticazione va a buon fine, l'ho testata, e la funzione restituisce true.
    solo che quando poi fa il redirect alla index.php, la sessione creata non esiste più

    quindi quanto sopra e il fatto che sul vecchio server funzionava bene, mi fanno pensare che sia un problema o di configurazione o di versioni di Apache/PHP... cmq non di codice.

    che ne dici?

  8. #8
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Non vedo dove hai definito la funzione "redirect_rel()". Vorrei vedere quella funzione in quanto mi sa che c'è un problema di passaggio di variabili tra le pagine. Magari la funzione reindirizza ma non si porta dietro le variabili di sessione.

  9. #9
    Utente di HTML.it L'avatar di ivy_76
    Registrato dal
    Dec 2004
    Messaggi
    1,822
    Mi aggangio a questa discussione perché ho lo stesso identico problema. Ho gia messo il mio 3D .. spero che fra tutti riusciamo a risolvere.
    Se stampo le variabili di sessione PRIMA del redirect vedo le credenziali corrette, se invece le stampo DOPO il redirect non vedo nulla
    TORTA DI RISO .. F I N I T A !!

    Da M.C.S.A. a impiegato pubblico :-(

  10. #10
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Se postate il codice che usate per il redirect vediamo meglio dove potrebbe essere il problema.

    Una causa potrebbe essere il TRACK_VARS settato ad OFF nel PHP.INI ma sarebbe illogico che fosse cosi, salvo strane impostazioni del vostro host o a meno che non abbiate "smanettato" nel vostro php.ini in locale.

    Aspetto i codici dei redirect

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.