Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    28

    PHP metodo post-redirect-get

    qualcuno ha usato per caso questo metodo per evitare che ti dia il messaggio di pagina scaduta quando si usa il post e si va avanti e indietro coi tasti del browser, (oppure per evitare che i dati vengano sottomessi 2 volte)?


    http://en.wikipedia.org/wiki/Post/Redirect/Get#:534404

    per adesso non ci sono riuscito

    mi potete fare un esempio pratico per favore(molto passo passo,
    evidentemente non ben chiaro come funziona)?

    grazie a tutti
    Andrea

  2. #2
    Molto semplicemente, invece di avere due pagine cosi':
    codice:
    form -> elaborazione dati form e generazione output
    crea TRE pagine che eseguano questo percorso:
    codice:
    form -> elaborazione dati form e REDIREZIONE -> pagina che genera l'output
    In questo modo chi compila il form non arriva alla pagina 2, ma alla pagina 3 e ci arriva tramite richiesta GET e non POST quindi non ci sono problemi di refresh: la pagina 2 non compare proprio nella history del browser.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    28
    Ciao grazie per la risposta.
    ecco un esempio di come sono riuscito a far funzionare la cosa

    test1.php
    codice:
    <body> 
    <?php 
    if (isset($_GET['nome'])) { echo "
    ciao ".$_GET['nome']." sono in GET
    "; } 
    ?> 
    
    <form method=post action="test2.php" > 
    <input type="text" value="" name="nome" /> 
    <input type="submit" value="Submit" name="bottone" /> 
    </form> 
    </body>

    test2.php (ritorna a test1.php)
    codice:
    <?php
     header("location: test1.php?nome=".$_POST['nome']); 
    exit(); ?>
    ma in questo modo nella barra degli indirizzi si vede il valore di quello che nella
    prima pagina ho passato in POST, e se fosse una psw o qualsiasi altro dato sensibile?


    quindi a questo punto posso fare back e forward senza incorrere in messaggi
    del browser che mi avvertono che la pagina e' scaduta, ma non
    ho piu' il vantaggio del POST, dove sbaglio?


    ciao
    Andrea

  4. #4
    Se devi salvare dei valori da utilizzare in pagine diverse, usa i cookie o le variabili di sessione. Ma non affidare mai dati sensibili IN CHIARO al client dell'utente (i cookie sono registrati sul browser).

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    28
    Certo hai ragione, infatti la GET di ritorno dovra' essere sicuramente vuota

    l'esempio precedente modificato

    test1.php
    codice:
    <body> 
    <?php
    session_start();
    if (isset($_SESSION['nome']) && !empty($_SESSION['nome'])) {
        echo "
    ciao ".$_SESSION['nome']." sono di ritorno in SESSION
    "; 
    }
    unset ($_SESSION['nome']); 
    session_write_close(); 
    ?> 
    
    <form method=post action="test2.php" > 
    <input type="text" value="" name="nome" /> 
    <input type="submit" value="Submit" name="bottone" /> 
    </form> 
    </body>
    test2.php
    codice:
    <?php 
    session_start(); 
    $_SESSION['nome'] = $_POST['nome']; 
    session_write_close();
    header("location: test1.php"); 
    exit(); 
    ?>
    grazie
    ciao
    Andrea

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.