Use header ("Location ./") without losing form content

1

I'm working with a POST method form and if the user sends it with some incorrectly filled field I want it to return to the page but without losing the previously filled content.

I intended to use header("Location ./") , but I do not know if this will keep what was already filled. And using GET method is not an option.

    
asked by anonymous 30.05.2018 / 23:13

1 answer

1
One approach is that the page in your form's action returns the form itself with the presence of error information (which fields must be modified by the user) and with the inputs filled in. For example, you have a file form.php and another one called verifica.php :

form.php

<!--Verifica se tem alguma mensagem de erro
(quando incluido pelo arquivo verifica.php (require_once))
-->
<?php
    //verifica se existe a variavel $mensagemErros
    //ela só vai existir se o arquivo form.php
    //for incluido pelo arquivo verifica.php
    if(isset($mensagemErros)){
        echo '<div>' . $mensagemErros . '</div>';
    }
?>

<!--No formulario basta checar o array $_POST para exibir 
alguma informação submetida anteriormente-->
<form method="post" action="verifica.php">
    <input type="text" name="a" 
    value="<?php echo isset($_POST['a']) ? $_POST['a'] : '';?>">
    <input type="text" name="b"
    value="<?php echo isset($_POST['a']) ? $_POST['b'] : '';?>">
    <input type="submit" name="enviar_form">
</form>

verifica.php

<?php

//verifica se o formulario foi enviado
if(isset($_POST['enviar_form'])){
    //verifica se tem erros (alguma função feita por você)
    $temErros = true;

    if($temErros){
        $mensagemErros = "Foram encontrados os seguintes erros: ...";
        require_once './form.php';  
        //ao chamar o arquivo form.php, o array global $_POST
        //estara disponivel, sendo possivel alterar o atributo
        //value de cada input, com os dados submetidos pelo usuario
    }else{
        //vai para outro lugar
        header('Location: index.php');  
    }
}

//nada mais deve ser impresso
//para não se "misturar" com o html do formulário

The user initially accesses the file form.php , when the form is submitted, the verifica.php page will be called, if there is any validation error, the verifica.php will return the form.php file, showing the information error and inputs with values previously submitted.

    
31.05.2018 / 01:32