Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    30

    Varibili di sessione suggerimenti

    Ciao,
    ho creato una classica pagina di autenticazione (login.php) che mi ridirige all'area privata (index.php) del mio sito registrando delle variabili di sessione se inserisco i dati corretti di login.
    codice:
    		
    //Registro le variabili sessione
    $_SESSION['sessid'] = session_id(); 
    $_SESSION['loggedin'] = 1;
    $_SESSION['usrid'] = $row['id'];
    $_SESSION['usr'] = $row['username'];
    $_SESSION['type'] = $row['type'];
    
    }
    
    /*Redirect alla pagina riservata*/
    echo '<script language=javascript>document.location.href="../index.php"</script>';
    La mia area privata è strutturata in questo modo:
    Pagina principale (index.php) con un menu nell'header che mi permette di "switchare" fra le varie pagine (content) attraverso il passaggio di varibili GET op.

    codice:
    switch ($_GET['op']) {
    
    		case "Pippo":
    		include ("pippo.php");
    	   	break;
    
    		case "Pluto":
    	   	include ("pluto.php");
    	   	break;
    }
    Qui nasce il mio problema.
    Nella mia pagina principale (index.php) le variabili di sessione sono registrate e visibili
    mentre se richiamo le pagine pippo.php e pluto.php le variabili non sono registrate.
    Come posso passare le variabili di sessione anche a queste pagine?
    Mi consigliate qualche altro metodo/struttura per fare questa cosa?

    Grazie
    Ciao

  2. #2
    penso che sia dovuto al fatto che tu non chiami veramente le pagine pippo.php o pluto.php: usi infatti un include che "include" uan delle due pagine nella index.php. Mentre invece una variabile session o un cookie hanno effetto solo se almeno ricarichi la pagina. Quindi pippo.php e pluto.php devono essere due pagine indipendenti da caricare con HEADER:

    Codice PHP:
    switch ($_GET['op']) {

            case 
    "Pippo":
            
    header ("Location: pippo.php");
               break;

            case 
    "Pluto":
               
    header ("Location: pluto.php");
               break;


  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Inoltre assicurati di mettere session_start() anche nelle pagine pippo.php e pluto.php se fai il redirect.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    30
    Originariamente inviato da Alhazred
    Inoltre assicurati di mettere session_start() anche nelle pagine pippo.php e pluto.php se fai il redirect.
    Questo l'ho fatto.

    Originariamente inviato da Emulman
    penso che sia dovuto al fatto che tu non chiami veramente le pagine pippo.php o pluto.php: usi infatti un include che "include" uan delle due pagine nella index.php. Mentre invece una variabile session o un cookie hanno effetto solo se almeno ricarichi la pagina. Quindi pippo.php e pluto.php devono essere due pagine indipendenti da caricare con HEADER:

    Codice PHP:
    switch ($_GET['op']) {

            case 
    "Pippo":
            
    header ("Location: pippo.php");
               break;

            case 
    "Pluto":
               
    header ("Location: pluto.php");
               break;

    Io utilizzo lo switch in modo da non ricaricare e/o caricare le pagine... se utilizzo header ottengo un Warning: Cannot modify header information - headers already sent by...
    Quindi la mia soluzione non è praticabile?


    Grazie
    Ciao

  5. #5
    la tua no, come ho detto INCORPORA pippo.php o pluto.php all'interno della pagina che usa INCLUDE, impedendo quindi alle variabili session di funzionare che si "attivano" solo quando ricarichi una pagina qualunque...la mia (praticamente obbligatoria per quel che vuoi fare tu) esige che deve trovarsi proprio all'inizio della pagina caricata in quanto la funzione HEADER invia delle intestazioni prima di quelle della definizione della pagina: se lo fa dopo, e quindi all'interno della pagina, da l'errore che hai notato

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2012
    Messaggi
    30

    Provero' a cambiare approccio per quanto riguarda la navigazione della mia area riservata.

    Grazie per i suggerimenti
    Ciao

  7. #7
    mi viene in mente che c'è una possibilità per evitare di buttar via quel che hai fatto: quandos cegli un utente ricarica la pagina. A quel punto le variabili session iniziano a fare il loro dovere e allora puoi usare gli include al posto degli header....si tratta quindi solo di verificare se hai ricaricato la pagina:

    Codice PHP:
    if (isset($_POST['Submit'])) {
      
    // imposta le variabili $_SESSION
     
    switch ($_GET['op']) {
        case 
    "Pippo":
           include (
    "pippo.php");
           break;

        case 
    "Pluto":
           include (
    "pluto.php");
           break;
      }


  8. #8
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Spiega cosa vuol dire per te "le variabili non sono registrate"

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 © 2024 vBulletin Solutions, Inc. All rights reserved.