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

    Stampare una variabile in ogni pagina usando le sessioni

    Ciao a tutti, sto creando un sito in PHP ma ho qualche difficoltà a capire le sessioni. Ciò che vorrei fare è:
    • avere un form in ogni pagina del sito. Questo form permette di inserire all'utente il proprio nome ma non è obbligatorio l'inserimento del nome
    • se l'utente ha scritto il suo nome, questo viene scritto in ogni pagina
    • è sempre possibile modificare il nome.


    Per ora ho diverse pagine php dove in ognuna è presente un form e un div che conterrà il nome (se viene inserito).
    All'inizio di ogni file ho:
    Codice PHP:
    <?php    session_start();?>
    e, poco più sotto:
    codice HTML:
    <div id="nome">
         <?php
               if(isset($_SESSION['nome'])) {         
                  echo $_SESSION['nome'];    
               }
          ?>
    </div>
    Ma è ovviamente sbagliato perchè non mi stampa nulla.. Come si fa allora a fare quello che vorrei?
    Ho cercato su internet ma non capisco..

    Grazie

  2. #2
    Ho sbagliato a postare il codice.. Ho questo in un file index.php.
    Codice PHP:
    <?php
      session_start
    ();
    ?>


    <div>
      <form method="post" action='<?php echo $_SERVER['PHP_SELF']; ?>'> 
        <input type="text" name="nome" value="Inserisci un messaggio..."/>
        <input type="submit" name="submit-nome" value="Invia"/>
        <p>
         <?php
         
    if(isset($_POST['submit-nome'])) {
           if(isset(
    $_SESSION['nome'])) {
             
    $_SESSION['nome'] = $_POST['nome'];
             echo 
    $_SESSION['nome'];
            }
            echo 
    "";
         }
         
    ?>
        </p>
      </form>
    </div>

    E gli altri file .php li fare nello stesso modo..
    Ultima modifica di stefano86; 05-12-2013 a 20:32

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    se ho capito cosa vuoi fare (assegnare alla sessione il valore del input text del form), devi correggere
    Codice PHP:
    if(isset($_SESSION['nome'])) { 
    con
    Codice PHP:
    if(!isset($_SESSION['nome'])) { 
    ma potrai farlo solo la prima volta o dopo che distruggerai la sessione

  4. #4
    Grazie per la risposta
    Ora il nome mi viene stampato ma solo per un tempo brevissimo mentre la pagina si sta caricando e poi sparisce. Dovrebbe invece rimanere fisso al suo posto senza sparire. Sai da cosa è dovuto e come risolvere?

    Quote Originariamente inviata da clasku Visualizza il messaggio
    ma potrai farlo solo la prima volta o dopo che distruggerai la sessione
    Cioè?

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    per la prima parte, non ti so rispondere... il codice che hai postato non prevede "caricamenti parziali" della pagina

    per la richiesta di chiarimento, volevo dire che se provi a lanciare lo script più volte il valore della variabile di sessione sarà uguale a quello dell'input del form solo la prima volta, perché una volta che la sessione è settata lo script non prevede una modifica del suo valore

  6. #6
    Ultima cosa: secondo il mio ragionamento fatto al primo post ma utilizzando sessioni e database, questo pseudo-codice potrebbe andare?
    Codice PHP:
    if(isset($_POST['submit-nome'])) { //se l'utente ha inserito qualcosa
        //inserisci nel database il nome...
        
    if(!isset($_SESSION['nome'])) {
            
    $_SESSION['nome'] = $_POST['nome'];
        }
        echo 
    $_SESSION['nome'];

    else { 
    //se l'utente non ha inserito nulla
        
    if(isset($_SESSION['nome'])) {
            echo 
    $_SESSION['nome'];
        }
        else { 
    //utente non ha inserito nulla e non c'è una SESSION['stato']
            //fai una select e stampa l'ultima query inserita...
        
    }        

    PS: nessuno sa risolvere il problema del valore della sessione stampata che sparisce?

  7. #7
    Facendo così funziona quasi Il nome mi viene stampato e rimane a video senza sparire
    Codice PHP:
    <?php
      $nome
    ="";


      if(isset(
    $_POST['submit-nome'])) {
     
        
    $_SESSION['nome'] = $_POST['nome'];
     }
     
    if(isset(
    $_SESSION['nome'])) {
            
    $nome=$_SESSION['nome'];
        }


    echo 
    $nome;
    ?>

    Però c'è un problema:

    • scrivo "Mario" --> mi si aggiorna la pagina e trovo scritto "Mario" (ok)"
    • scrivo "Chiara" --> si aggiorna la pagine e trovo a video "MarioChiara" (non va bene, Chiara dovrebbe sostituire Mario)
    • scrivo "Piero" --> si aggiorna la pagina a trovo a video "ChiaraPiero"
    • ecc..

  8. #8
    Non sono un grandissimo esperto, molto probabilmente ne sai più di me, ma leggendo sopra mi sembra che non ti sia ben chiaro come funzionano le sessioni in PHP.
    Ovviamente spiegarle da zero sarebbe lungo e inopportuno in un forum. Ti consiglio dunque di dare una letta a questa guida: http://www.html.it/articoli/sessioni...me-si-usano-1/
    Poi, con le idee schiarite, provi a modificare il tuo script e, se hai ancora problemi, torni sul forum postando il problema. Troverai di sicuro qualcuno che te lo risolverà ;-)

    Peace and Love!

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.