Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [PHP] Problema con $_SESSION che sparisce!

    Salve,
    è possibile che una variabile salvata nella sessione si cancelli automaticamente? Io ho uno script che funziona a "pagine", e in ogni pagina salvo dei dati nella sessione, i quali dati provengono da un form dalla pagina precedente. Tutti i dato vengono salvati bene, tranne il primo. Voglio simulare tipo un installer, dove si può tornare indietro e trovare inseriti gia' i dati immessi in precedenza per modificarli. Tutti i dati vengono salvati bene, ma il primo dato, come passo la pagina due, viene cancellato automaticamente...

    Come puo' succedere una cosa del genere?

    Se servono info piu' detagliate ditemi pure..

    Grazie a tutti!

    Ciao!
    Luca.
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

  2. #2
    Allego parte del codice per spiegare meglio:

    <?

    require "include/template.inc.php";

    session_start();

    $main = new Template("dtml/frame.html");

    if (!isset($_REQUEST['page'])) {
    $_REQUEST['page'] = 0;
    }

    switch($_REQUEST['page']) {
    case 0:
    $main -> setContent("sottotitolo", "Fase 1: Scelta parametri iniziali");
    $pg = new Template("dtml/form_name_install.html");
    if (isset($_SESSION['instName'])) {
    $pg -> setContent("instName", $_SESSION['instName']);
    }

    $main -> setContent("corpo", $pg -> get());

    break;

    case 1:
    $nome = $_REQUEST['install'];
    $_SESSION['instName'] = $nome;

    $main -> setContent("sottotitolo", "Fase 2: Impostazione del DB");
    $pg = new Template("dtml/form_parameters_install.html");

    if (isset($_SESSION['dir'])) {
    $pg -> setContent("dir", $_SESSION['dir']);
    }
    if (isset($_SESSION['dbName'])) {
    $pg -> setContent("dbName", $_SESSION['dbName']);
    }
    if (isset($_SESSION['dbUser'])) {
    $pg -> setContent("dbUser", $_SESSION['dbUser']);
    }
    if (isset($_SESSION['dbPass'])) {
    $pg -> setContent("dbPass", $_SESSION['dbPass']);
    }

    $main -> setContent("corpo", $pg -> get());


    break;

    case 2:
    $dir = $_REQUEST['directory'];
    $nameDB = $_REQUEST['nomeDB'];
    $userDB = $_REQUEST['userDB'];
    $passDB = $_REQUEST['passDB'];

    $_SESSION['dir'] = $dir;
    $_SESSION['dbName'] = $nameDB;
    $_SESSION['dbUser'] = $userDB;
    $_SESSION['dbPass'] = $passDB;

    $main -> setContent("sottotitolo", "Fase 3: Inserimento dati personali");
    $pg = new Template("dtml/form_personal.html");

    if (isset($_SESSION['nome'])) {
    $pg -> setContent("nome", $_SESSION['nome']);
    }
    if (isset($_SESSION['cognome'])) {
    $pg -> setContent("cognome", $_SESSION['cognome']);
    }
    if (isset($_SESSION['indirizzo'])) {
    $pg -> setContent("indirizzo", $_SESSION['indirizzo']);
    }
    if (isset($_SESSION['ragSociale'])) {
    $pg -> setContent("ragSociale", $_SESSION['ragSociale']);
    }

    $main -> setContent("corpo", $pg -> get());
    break;


    Dal case 1 dello switch funziona tutto bene, solo con $_SESSION['instName'] del case 0 non va. O meglio, se dalla pagina 1 passo alla 0 lo visualizza bene, ma se arrivo alla pagina 3 e torno indietro cancella quel valore dalla sessione. Eppure tutti gli altri dati della sessione delle varie pagine vengono salvati bene, e quando torno indietro, anche di piu' livelli, tutti i dati sono letti bene...

    Chissa' dove sbaglio... o dipende dal PHP??

    Ciao!
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

  3. #3
    ave!

    prova a mettere session_start(); prima di qualsiasi output o porzione di script

    Ritengo di avere 2 grandi pregi: il primo è una memoria di ferro; il secondo...mmmhhh va beh ora proprio non me lo ricordo!

  4. #4
    Grazie del consiglio.. ma niente da fare.. non va neanche cosi'..
    Non capisco cosa azzera solo quel valore dalla sessione!!!
    Grazie ancora!

    Luca.
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

  5. #5
    che tipo di valori contiene quella sessione?

    al primo post parlavi di un installer quindi immagino si debba compilare un form; quindi quella sessione fa riferimento ad un input type?
    Ritengo di avere 2 grandi pregi: il primo è una memoria di ferro; il secondo...mmmhhh va beh ora proprio non me lo ricordo!

  6. #6
    inzia a fare

    echo '<pre>'; print_r($_SESSION); echo '<pre>';

    alla fine di ogni pagina e/o dopo il session_start() in modo che ti stampi tutto il contenuto della session; in questo modo puoi verificare in ogni pagina che cosa viene perso e magari come :/ quando mi succedono queste cose (oltre a lanciare improperi e maledizioni in diverse lingue) caccio output a più non posso

    ciao
    Windows mom: «Finish your veggies! There are processes in Ubuntu that are starving to death!»
    NoWhereBlog
    FlatPress Blog Flat file, valido xhtml, espandibile

  7. #7
    Si l'input e' costituito da campi input type=text di un form. Per quanta riguarda i valori della sessione ho fatto delle prove.Come entro nella terza pagina, perdo solo il valore di instDir, il primo dato salvato nella Session e basta...
    Prima di dire che sei un Webmaster, guarda in giro per la rete....

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