PHP: conservare i valori di un form dopo un redirect HTTP

PHP: conservare i valori di un form dopo un redirect HTTP

In questo articolo vedremo come possiamo conservare i valori inviati in un form dopo un redirect con PHP.

Salviamo i campi ed i valori del form come array associativo in una variabile della sessione corrente.


session_start();

if(count($_POST) > 0) {
    $form_data = [];
    foreach($_POST as $key => $value) {
        $form_data[$key] = $value;
    }
    $_SESSION['form_data'] = $form_data;
}

// Elaborazione della richiesta

// Redirect

header('Location: https://site.tld/contact');
exit;

Quindi creiamo una funzione che reperisca e mostri un campo specifico.


function old($key) {
    if(isset($_SESSION['form_data'][$key])) {
        echo htmlspecialchars($_SESSION['form_data'][$key]);
    }
}

Possiamo infine usare tale funzione nella pagina che contiene il form.


<?php 
session_start();
require_once 'lib/funcs.php'; 

?>

<form action="send-contact.php" method="post" novalidate>
    <div>
        <label for="name">Name</label>
        <input type="text" name="name" id="name" value="<?php old('name'); ?>">
    </div>
    <div>
        <label for="email">E-mail</label>
        <input type="email" name="email" id="email" value="<?php old('email'); ?>">
    </div>
    <div>
        <label for="message">Message</label>
        <textarea name="message" id="message"><?php old('message'); ?></textarea>
    </div>
    <p><input type="submit" value="Send"></p>
</form>

Torna su