• User Newbie

    [NEWBIE]Problem con sessioni

    Ciao a tutti.
    Ho da poco iniziato a studiare php e mi sto soffermando sulle sessioni.
    Tanto per provare qualcosa, ho scritto 4 righe di codice che dovrebbero proprio mostrarmi le funzionalità delle sessioni. In particolare, lo script chiede il nome all'utente e quando lo stesso utente aggiorna la pagina dovrebbe comparire un messaggio che informo l'utente che è già conosciuto dal sistema.
    Il problema è che quando aggiorno mi viene presentato sempre il form di immissione del nome e cognome. Dareste uno sguardo al codice per vedere cosa non funziona? Grazie mille!

    
    <?php
    session_start();
    session_register("your_name");
    
        if (isset($your_name))
        {
            echo "So già come ti chiami: $your_name";
        }
        elseif (!isset($your_name) && !isset($submit))
        {
            echo "<form name=myform method=post action={$_SERVER['PHP_SELF']}>
                  <input type=text name=name> Nome<br><br>
                  <input type=text name=last_name> Cognome<br>
                  <input type=submit name=submit value=submit>
                  </form>";
        }
        elseif (!isset($your_name) && isset($submit))
        {
            $your_name=$name . " " . $last_name;
            echo "Grazie $your_name";
        }
    ?>
    
    

  • User Attivo

    session_register() ti registra $_SESSION['your_name'] e non $your_name, per questo ti mostra il form.

    🙂


  • User Newbie

    e quindi come dovrei modificare il codice?


  • Moderatore

    Prova così 🙂

    [PHP]<?php
    session_start();
    $_SESSION['your_name'] = $_POST['name'];//così registri la variabile di sessione

    if (isset($_SESSION['your_name']))
    {
        echo "So già come ti chiami: $_SESSION['your_name']";
    }
    elseif (!isset($_SESSION['your_name']) && !isset($submit))
    {
        echo "<form name=myform method=post action={$_SERVER['PHP_SELF']}>
              <input type=text name=name> Nome<br><br>
              <input type=text name=last_name> Cognome<br>
              <input type=submit name=submit value=submit>
              </form>";
    }
    elseif (!isset($_SESSION['your_name']) && isset($submit))
    {
        $your_name=$name . " " . $last_name;
        echo "Grazie $your_name";
    }
    

    ?>[/PHP]


  • User Newbie

    C'è ancora qualche errore dato che ho dovuto aggiungere le parentesi graffe in

    
     if (isset($_SESSION['your_name']))
        {
              //ho aggiunto qui le {}        
               echo "So già come ti chiami: {$_SESSION['your_name']}"; 
        }
    
    ```Inoltre mi viene visualizzato questo messaggio
    Notice:  Undefined index:  name in c:\..... on line 3 
    ovvero sulla linea
    

    $_SESSION['your_name'] = $_POST['name'];//così registri la variabile di sessione

    Infine, quando invio per la prima volta "nome" e "cognome" non viene visualizzata la pagina di ringraziamento espressa da
    

    elseif (!isset($_SESSION['your_name']) && isset($submit))
    {
    $your_name=$name . " " . $last_name;
    echo "Grazie $your_name";
    }

    if (isset($_SESSION['your_name']))
    {
    echo "So già come ti chiami: {$_SESSION['your_name']}";
    }

    Grazie ancora!