Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    aggiornare variabili di sessione

    ciao a tutti.
    ho un form che invia i dati ad una pagina PHP che esegue controlli (ad esempio controlla che tutti i campi del form siano stati completati).
    in caso di errore si viene rediretti di nuovo al form, dove viene segnalato il tipo di errore commesso.
    tutto questo viene fatto mantenendo i campi del form come variabili di sessione, in modo che dopo il reindirizzamento questi non vadano persi (vengono stampati dentro ai campui di input).
    come esempio ho fatto 2 pagine, e il codice è questo.

    FORM.PHP:


    Codice PHP:
    <?php     
       session_start
    ();     
       
    $nome $_SESSION['nome'];
    ?>  
    <form action="controlli.php" method="post">   
      <input name="nome" type="text" id="nome" value="<?php echo $nome?>">   
      <input type="submit" name="button" id="button" value="Invia">
    </form>
    CONTROLLI.PHP:
    Codice PHP:
    <?php     
      
    // recupero col post la variabile del modulo     
      
    $nome $_POST['nome'];     
      
    // apro la sessione e rendo di sessione la variabile acquisita     
      
    session_start();     
      
    $_SESSION['nome']=$nome;     
      
    header ("location:form.php");
    ?>

    il problema è che se dopo un primo redirect cambio il contenuto del campo di input, con il secondo redirect, nella casella di testo stampa ancora il primo nome inserito (in pratica la variabile di sessione non viene aggiornata, devo per forza riavviare il browser).
    come posso fare per ovviare il problema senza chiudere la sessione?

    vorrei evitare di chiudere la sessione perchè poi nel form vero e proprio che dovro' costruire ci saranno una decina di campi, e non vorrei che in caso di un secondo redirect (dovuto a un secondo errore nella compilazione del form) i campi del form precedentemente inseriti vengano cancellati...

    Ah! il locale funzionerebbe tutto, è su server che non va!!

    grazie a tutti

  2. #2

  3. #3
    ciao filippo, grazie per l'indicazione. purtroppo pero' il problema continua a persistere: il redirect viene fatto, ma nella casella di input mi stampa sempre il primo nome inserito! ad esempio:
    1° volta: scrivo "pippo" -->redirect-->nella casella stampa pippo
    2°volta: cancello "pippo", scrivo "pluto" --> redirect-->nella casella stampa "pippo".

    la pagina CONTROLLI.PHP l'ho implementata col codice consigliato e viene cosi':

    Codice PHP:
    <?php
    function header_location($url '') {
       
    // qui dentro tutta la funzione, non sto a riportarla tutta
    }

    // recupero col post la variabile del modulo     
    $nome $_POST['nome'];     
    // apro la sessione e rendo di sessione la variabile acquisita     
    session_start();     
    $_SESSION['nome']=$nome;     
    echo(
    $_SESSION['nome']);     
    header_location('form.php'); 
    ?>
    puoi anche fare qualche prova da qui:

    http://www.elogioallavespa.it/test/form.php

    grazie

  4. #4

  5. #5
    la prima volta che apro la pagina con il form mi da questo avviso:

    Notice: Undefined index: nome in D:\Inetpub\webs\elogioallavespait\test\form.php on line 6

    forse perchè la variabile di sessione $nome non ha ancora alcun valore?
    puo' essere questo il problema?

    grazie mille

  6. #6
    Quel problema puoi risolverlo semplicemente leggendo questo articolo:

    http://kb.creativepark.it/kb/entry/6/

    Per il resto, verifica che il SID rimanga lo stesso nelle varie richieste HTTP.

  7. #7
    si, l'id della sessione rimane lo stesso anche dopo il secondo redirect, comunque la variabile non si aggiorna

  8. #8
    Se al posto dell'header location metti un semplice link e ci clicchi sopra per tornare a form.php, che comportamento ottieni?

  9. #9
    niente, anche col link ottengo lo stesso risultato...stavo pensando di eliminare il redirect mettendo form e controlli all'interno della stessa pagina, dici che potrebbe andare?

    grazie

  10. #10
    Originariamente inviato da francy88
    niente, anche col link ottengo lo stesso risultato...
    Questo significa che potresti avere dei problemi nel codice di form.php

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.