Stampare una variabile in ogni pagina usando le sessioni

stefano862

Nuovo Utente
5 Dic 2013
26
0
0
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:
PHP:
<?php    session_start();?>

e, poco più sotto:
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
 
Ho sbagliato a postare il codice.. Ho questo in un file index.php.
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($_SESSION['nome']))
            $_SESSION['nome'] = "a";
        else
            $_SESSION['nome'] = " già esistente";

        $nome = $_POST['nome'];
        echo $nome . $_SESSION['nome'];
     ?>
    </p>
  </form>
</div>

E gli altri file .php li fare nello stesso modo..
 
Ultima modifica:
Ma il nome lo vuoi come value nel campo di testo? per esempio:
PHP:
<?php
$nome="";
if(isset($_SESSION['nome']))
{
$nome=$_SESSION['nome'];
}
?>

  <input type="text" name="nome" value="<?php echo $nome ?>"/>
 
Ma il nome lo vuoi come value nel campo di testo? per esempio:
PHP:
<?php
$nome="";
if(isset($_SESSION['nome']))
{
$nome=$_SESSION['nome'];
}
?>

  <input type="text" name="nome" value="<?php echo $nome ?>"/>

Grazie per la risposta, no lo voglio stampare in un'altra parte del sito..
Ho modificato il codice precedente in
Codice:
<?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 mi scrive il valore inserito ma solo per un brevissimo tempo (durante il caricamento della pagina), e poi sparisce. Perchè?

Ultima cosa: secondo il mio ragionamento fatto al primo post ma utilizzando sessioni e database, questo pseudo-codice potrebbe andare?
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...
    }        
}
 
prova in questo modo, dai il valore a $_SESSION['nome'] o lo cambi al submit del form:
PHP:
<?php
  //valore default oppure null
  $nome="";

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

echo $nome;
?>
 
prova in questo modo, dai il valore a $_SESSION['nome'] o lo cambi al submit del form:
PHP:
<?php
  //valore default oppure null
  $nome="";

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

echo $nome;
?>

Ora funziona quasi :) il nome mi viene stampato e rimane a video senza sparire, 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..
 

Discussioni simili