Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 14

Discussione: Non funziona __autoload con le sessioni ...

  1. #1
    Lapo è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    11

    [RISOLTO] Non funziona __autoload con le sessioni ...

    Salve a tutti!

    Ho un problema con __autoload ...

    Dentro l'admin [nell'header] ho inserito questo:

    Codice:
    //Autoload delle classi 
    function __autoload($class_name)
     { 
     require_once ('classes/'.$class_name.'.php'); 
     }   
    
    // Controllo l'utente loggato - questo deve essere presente in tutte le pagine dell'admin 
    include("../login/check.php"); ......
    
    $utenti=Utenti::getUtenti();
    Non funziona!

    Se sostituisco la funzione __autoload con:

    require_once ('../classes/Utenti.php');

    funziona! (quindi direi che non è un problema di percorsi).

    Mi sono accorto che se elimino

    include("../login/check.php");

    funziona! [il problema è che non lo posso eliminare è il controllo sul login]

    Per completezza riporto il file check.php:


    Codice:
    <?php 
    session_start();   
    if (!$_SESSION["nome"])  
     { 
     $msg= 6; 
     $destinazione = "../index.php?msg=".$msg; 
     echo '<script language=javascript>document.location.href="'.$destinazione.'"</script>'; 
     } 
    
    //controllo sul tempo di inattività dell'utente 
     if ($_SESSION['secondi_inattivo']) 
     { 
     $secondi_inattivo=$_SESSION['secondi_inattivo']; 
     $start_session=$_SESSION['start_session']; 
     $adesso= time(); 
     $differenza=$adesso-$start_session;
     if ($differenza >$secondi_inattivo) 
      { 
      $msg= 5; 
      $destinazione = "../index.php?msg=".$msg; 
      echo '<script language=javascript>document.location.href="'.$destinazione.'"</script>'; 
      } 
     else 
      { 
      //si azzera il tempo di inattività a partire dalla richiesta appena eseguita 
      $_SESSION["start_session"] = $adesso; 
      } 
     } 
    ?>
    Qualcuno sa aiutarmi? Credo sia un problema tra __autoload e sessioni ......

    Grazie!
    Ultima modifica di Lapo; 22-02-2012 alle 11:25 Motivo: risolto

  2. #2
    L'avatar di Eliox
    Eliox è offline Moderatore
    Data Registrazione
    Feb 2005
    Messaggi
    4,392
    Codice PHP:
    <?
    php session_start
    ();
    dovrebbe essere
    Codice PHP:
    <?php 
    session_start
    ();
    è solo un errore di copia e incolla?

  3. #3
    Lapo è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    11
    Esatto!

    Soluzioni? :-)
    Ultima modifica di Lapo; 21-02-2012 alle 23:37

  4. #4
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,201

  5. #5
    Lapo è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    11
    Grazie per la risposta!

    Ho già guardato le guide ed è tutto corretto.
    Il problema è relativo al conflitto che si viene a creare con le sessioni.
    Senza l'include del login la funzione è corretta e funziona .... il problema è che non posso eliminare l'include con relativi controlli ...

  6. #6
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,201
    ciao
    ti da quelche errore?
    se sì postalo, o cosa non funziona

  7. #7
    Lapo è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    11
    Non trova la classe:
    Fatal error: Class 'Utenti' not found in /Applications/MAMP/htdocs/filarete/utenti.php on line 5

    la linea 5 è dove dichiaro la classe Utenti.

    utenti.php:
    Codice:
    <?php
    include("header/header.php");  
    //require_once ('../classes/Utenti.php');
    	
    	$utenti=Utenti::getUtenti();
    
    	$smarty = new Smarty_Ob;
    	$smarty->assign('utenti', $utenti);
    	$smarty->display('utenti.tpl');
    ?>
    nell'header è incluso il login oltre alla grafica dell'header.

    Ho già provato e l'unica cosa che gli da noia dentro l'header è:
    Codice:
    // Controllo l'utente loggato - questo deve essere presente in tutte le pagine dell'admin
    include("../login/check.php");
    ...

  8. #8
    L'avatar di borgo italia
    borgo italia è offline Super Moderatore
    Data Registrazione
    Feb 2008
    Località
    PR
    Messaggi
    11,201
    ciao
    visto cosi sembrerebbe che non trovi la classe nel file utenti.php, sei sicuro dei percorsi? e di avercela messa? non hai fatto un errore nei nomi (es.) uteti?
    poi (non sono molto esperto di classi), ma una classe non dovrebbe essere istanziata prima di usarla? i nomi delle classi sono casesensitive o no?

    $pinco = new Utenti(); o
    $pinco = new utenti();

    poi, l'unica cosa che vedo (almeno io) che ha a che fare con i percorsi o simile è la variabile
    $destinazione
    non è che la usi anche dopo quindi ti entra in conflitto?

  9. #9
    Lapo è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    11
    come puoi veder alla riga 3 del file utenti.php c'è un commento:

    Codice:
    //require_once ('../classes/Utenti.php');
    se lo decommento funziona tutto, il che dimostra che i percorsi sono corretti e la classe viene istanziata correttamente.

    Il problema è sicuramente nella funzione autoload che funziona se non includo

    Codice:
    include("../login/check.php");
    Anche questo dimostra che autoload funziona correttamente .. entra in conflitto con i controlli di sessione.
    Non riesco a trovare nemmeno alcun commento via web sul problema

    ci sto perdendo la testa ... :-)

  10. #10
    Lapo è offline Utente del Forum
    Data Registrazione
    Feb 2012
    Messaggi
    11

    [risolto]

    Sembra che il problema sia un baco nelle versioni precedenti alla versione PHP 5.3.4 dove è stato risolto!

    Per maggiori informazioni:
    https://bugs.php.net/bug.php?id=53141

    Per quanto mi riguarda ho sostituito la funzione __autoload con spl_autoload_register come consiglia anche il manuale

    function __autoload_libraries($class){
    include_once ('../classes/'.$class.'.php');
    }

    spl_autoload_register('__autoload_libraries');


    Grazie comunque dell'aiuto!!!
    A presto
    Lapo

Pagina 1 di 2 12 UltimaUltima

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •