One approach is that the page in the action of your form, return the form itself with the presence of the error information (which fields should be modified by the user) and with the inputs filled in. For example, you have a file form.php
and another call verifica.php
:
php form.
<!--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>
php checks.
<?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 page will be called verifica.php
, if there is a validation error, verifica.php
, return the file form.php
, showing the error information and inputs with the previously submitted values.
And where is the code for your question?
– user60252
This is not what Location is for. If you want to persist with the data, simply process it in the PHP that receives the form. Use Location only in case of success.
– Bacco